Skip to content

Commit

Permalink
request table changed to act without storage like a crafting table
Browse files Browse the repository at this point in the history
  • Loading branch information
Lothrazar committed Sep 22, 2024
1 parent ce584d7 commit 2fb1be3
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 80 deletions.
31 changes: 0 additions & 31 deletions .github/CODE_OF_CONDUCT.md

This file was deleted.

2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ minecraft {
property 'forge.logging.console.level', 'debug'
properties 'mixin.env.disableRefMap': 'true'

args '--username=AnotherDev'

mods {
storagenetwork {
source sourceSets.main
Expand Down
9 changes: 7 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx6G
org.gradle.daemon=false
# org.gradle.java.home=C:\Program Files\AdoptOpenJDK\jdk-16.0.1.9-hotspot


#use this if the gradle build has ' Could not find tools.jar. Please check that _____ contains a valid JDK installation '
#org.gradle.java.home=C:\\Program Files\\Eclipse Adoptium\\jdk-8.0.322.6-hotspot

# as needed run/server.properties : online-mode=false
# implementation fg.deobf("curse.maven:simple-storage-network-268495:3163007")

curse_id=268495
mod_version=1.7.0
mod_version=1.7.1

mc_version=1.18.2
forge_version=40.2.9
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import net.minecraft.world.InteractionResult;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.RenderShape;
Expand Down Expand Up @@ -48,15 +47,6 @@ public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState n
Containers.dropContents(worldIn, pos, (Container) blockentity);
worldIn.updateNeighbourForOutputSignal(pos, this);
}
BlockEntity tileentity = worldIn.getBlockEntity(pos);
if (tileentity instanceof TileRequest) {
TileRequest tile = (TileRequest) tileentity;
for (ItemStack entry : tile.matrix.values()) {
if (!entry.isEmpty()) {
Containers.dropItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), entry);
}
}
}
super.onRemove(state, worldIn, pos, newState, isMoving);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,19 @@
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.ContainerLevelAccess;
import net.minecraft.world.level.Level;

public class ContainerNetworkCraftingTable extends ContainerNetwork {

private final TileRequest tileRequest;
private final ContainerLevelAccess access;

public ContainerNetworkCraftingTable(int windowId, Level world, BlockPos pos, Inventory playerInv, Player player) {
super(SsnRegistry.Menus.REQUEST.get(), windowId);
tileRequest = (TileRequest) world.getBlockEntity(pos);
matrix = new NetworkCraftingInventory(this, tileRequest.matrix);
matrix = new NetworkCraftingInventory(this);
access = ContainerLevelAccess.create(world, pos);
this.playerInv = playerInv;
SlotCraftingNetwork slotCraftOutput = new SlotCraftingNetwork(this, playerInv.player, matrix, resultInventory, 0, 101, 128);
slotCraftOutput.setTileMain(getTileMain());
Expand All @@ -32,18 +35,22 @@ public boolean isCrafting() {
return true;
}

@Override
public void removed(Player player) {
super.removed(player);
//the contents of the crafting matrix gets returned to the player
this.access.execute((level, pos) -> {
this.clearContainer(player, this.matrix);
});
}

@Override
public void slotChanged() {
//parent is abstract
//seems to not happen from -shiftclick- crafting
for (int i = 0; i < matrix.getContainerSize(); i++) {
getTileRequest().matrix.put(i, matrix.getItem(i));
}
}

@Override
public boolean stillValid(Player playerIn) {
// TileMain main = getTileMain();
TileRequest table = getTileRequest();
BlockPos pos = table.getBlockPos();
return playerIn.distanceToSqr(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D) <= 64.0D;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.lothrazar.storagenetwork.api.ITileNetworkSync;
import com.lothrazar.storagenetwork.block.TileConnectable;
import com.lothrazar.storagenetwork.registry.SsnRegistry;
import com.lothrazar.storagenetwork.util.UtilInventory;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
Expand All @@ -25,11 +26,12 @@ public class TileRequest extends TileConnectable implements MenuProvider, ITileN
public static final String NBT_JEI = StorageNetworkMod.MODID + "jei";
private static final String NBT_DIR = StorageNetworkMod.MODID + "dir";
private static final String NBT_SORT = StorageNetworkMod.MODID + "sort";
public Map<Integer, ItemStack> matrix = new HashMap<>();
private boolean downwards;
private EnumSortType sort = EnumSortType.NAME;
private boolean isJeiSearchSynced;
private boolean autoFocus = true;
@Deprecated
private Map<Integer, ItemStack> matrix = new HashMap<>();

public TileRequest(BlockPos pos, BlockState state) {
super(SsnRegistry.Tiles.REQUEST.get(), pos, state);
Expand All @@ -45,13 +47,25 @@ public void load(CompoundTag compound) {
if (compound.contains(NBT_JEI)) {
this.setJeiSearchSynced(compound.getBoolean(NBT_JEI));
}
ListTag invList = compound.getList("matrix", Tag.TAG_COMPOUND);
matrix = new HashMap<>();
for (int i = 0; i < invList.size(); i++) {
CompoundTag stackTag = invList.getCompound(i);
int slot = stackTag.getByte("Slot");
ItemStack s = ItemStack.of(stackTag);
matrix.put(slot, s);
//legacy support: instead of deleting items, in this one-off world upgrade transition
//drop them on the ground
//then forever more it will not be saved to this data location
if (compound.contains("matrix")) {
ListTag invList = compound.getList("matrix", Tag.TAG_COMPOUND);
for (int i = 0; i < invList.size(); i++) {
CompoundTag stackTag = invList.getCompound(i);
int slot = stackTag.getByte("Slot");
ItemStack s = ItemStack.of(stackTag);
if (level != null) {
StorageNetworkMod.LOGGER.info("world upgrade: item dropping onluy once so it doesnt get deleted; " + this.worldPosition + ":" + s);
UtilInventory.dropItem(level, this.worldPosition, s);
matrix.put(slot, ItemStack.EMPTY);
}
else {
//i was not able to drop it in the world. save it so its not deleted. will be hidden from player
matrix.put(slot, s);
}
}
}
super.load(compound);
}
Expand All @@ -62,16 +76,26 @@ public void saveAdditional(CompoundTag compound) {
compound.putBoolean(NBT_DIR, isDownwards());
compound.putInt(NBT_SORT, getSort().ordinal());
compound.putBoolean(NBT_JEI, this.isJeiSearchSynced());
ListTag invList = new ListTag();
for (int i = 0; i < 9; i++) {
if (matrix.get(i) != null && matrix.get(i).isEmpty() == false) {
CompoundTag stackTag = new CompoundTag();
stackTag.putByte("Slot", (byte) i);
matrix.get(i).save(stackTag);
invList.add(stackTag);
if (matrix != null) {
ListTag invList = new ListTag();
for (int i = 0; i < 9; i++) {
if (matrix.get(i) != null && matrix.get(i).isEmpty() == false) {
if (level != null) {
StorageNetworkMod.LOGGER.info("World Upgrade: item dropping only once so it doesnt get deleted; " + this.worldPosition + ":" + matrix.get(i));
UtilInventory.dropItem(level, this.worldPosition, matrix.get(i));
matrix.put(i, ItemStack.EMPTY);
}
else {
//i was not able to drop it in the world. keep saving it and never delete items. will be hidden from player
CompoundTag stackTag = new CompoundTag();
stackTag.putByte("Slot", (byte) i);
matrix.get(i).save(stackTag);
invList.add(stackTag);
}
}
}
compound.put("matrix", invList);
}
compound.put("matrix", invList);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.lothrazar.storagenetwork.gui;

import java.util.List;
import java.util.Map;
import net.minecraft.core.NonNullList;
import net.minecraft.world.ContainerHelper;
Expand All @@ -16,25 +15,14 @@ public class NetworkCraftingInventory extends CraftingContainer {
private final AbstractContainerMenu eventHandler;
private boolean skipEvents;

private NetworkCraftingInventory(AbstractContainerMenu eventHandlerIn, int width, int height) {
super(eventHandlerIn, width, height);
public NetworkCraftingInventory(AbstractContainerMenu eventHandlerIn) {
super(eventHandlerIn, 3, 3);
eventHandler = eventHandlerIn;
stackList = NonNullList.<ItemStack> withSize(3 * 3, ItemStack.EMPTY);
}

public NetworkCraftingInventory(AbstractContainerMenu eventHandlerIn, Map<Integer, ItemStack> matrix) {
this(eventHandlerIn, 3, 3);
skipEvents = true;
for (int i = 0; i < 9; i++) {
if (matrix.get(i) != null && matrix.get(i).isEmpty() == false) {
setItem(i, matrix.get(i));
}
}
skipEvents = false;
}

public NetworkCraftingInventory(AbstractContainerMenu eventHandlerIn, List<ItemStack> matrix) {
this(eventHandlerIn, 3, 3);
this(eventHandlerIn);
skipEvents = true;
for (int i = 0; i < 9; i++) {
if (matrix.get(i) != null && matrix.get(i).isEmpty() == false) {
Expand Down

0 comments on commit 2fb1be3

Please sign in to comment.