diff --git a/src/main/java/li/cil/oc2/Constants.java b/src/main/java/li/cil/oc2/Constants.java index a4570eb1..8e20261f 100644 --- a/src/main/java/li/cil/oc2/Constants.java +++ b/src/main/java/li/cil/oc2/Constants.java @@ -6,6 +6,11 @@ public final class Constants { /////////////////////////////////////////////////////////////////// + public static final String BLOCK_ENTITY_TAG_NAME_IN_ITEM = "BlockEntityTag"; + public static final String BLOCK_ENTITY_INVENTORY_TAG_NAME = "items"; + + /////////////////////////////////////////////////////////////////// + public static final String COMPUTER_BLOCK_NAME = "computer"; public static final String BUS_CABLE_BLOCK_NAME = "bus_cable"; public static final String REDSTONE_INTERFACE_BLOCK_NAME = "redstone_interface"; diff --git a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java index 6ae7c3fd..cd0bba96 100644 --- a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java +++ b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java @@ -1,6 +1,5 @@ package li.cil.oc2.common.block; -import li.cil.oc2.api.API; import li.cil.oc2.client.gui.TerminalScreen; import li.cil.oc2.common.block.entity.ComputerTileEntity; import li.cil.oc2.common.container.ComputerContainer; @@ -22,7 +21,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.Hand; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.text.ITextComponent; @@ -33,8 +31,6 @@ import net.minecraftforge.fml.network.NetworkHooks; import javax.annotation.Nullable; public final class ComputerBlock extends HorizontalBlock { - public static final ResourceLocation CONTENTS = new ResourceLocation(API.MOD_ID, "contents"); - public ComputerBlock() { super(Properties .create(Material.IRON) diff --git a/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java b/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java index 4aa39f8d..0627d95b 100644 --- a/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java +++ b/src/main/java/li/cil/oc2/common/block/entity/ComputerTileEntity.java @@ -66,7 +66,6 @@ public final class ComputerTileEntity extends AbstractTileEntity implements ITic private static final String VFS_NBT_TAG_NAME = "vfs"; private static final String RUNNER_NBT_TAG_NAME = "runner"; private static final String RUN_STATE_NBT_TAG_NAME = "runState"; - public static final String ITEMS_NBT_TAG_NAME = "items"; private static final int DEVICE_LOAD_RETRY_INTERVAL = 10 * 20; // In ticks. private static final int VFS_INTERRUPT = 0x4; @@ -318,7 +317,7 @@ public final class ComputerTileEntity extends AbstractTileEntity implements ITic NBTUtils.putEnum(compound, RUN_STATE_NBT_TAG_NAME, runState); } - compound.put(ITEMS_NBT_TAG_NAME, itemHandler.serializeNBT()); + compound.put(Constants.BLOCK_ENTITY_INVENTORY_TAG_NAME, itemHandler.serializeNBT()); return compound; } @@ -356,11 +355,11 @@ public final class ComputerTileEntity extends AbstractTileEntity implements ITic } } - if (compound.contains(ITEMS_NBT_TAG_NAME, NBTTagIds.TAG_COMPOUND)) { + if (compound.contains(Constants.BLOCK_ENTITY_INVENTORY_TAG_NAME, NBTTagIds.TAG_COMPOUND)) { for (int i = 0; i < itemHandler.getSlots(); i++) { itemHandler.setStackInSlot(i, ItemStack.EMPTY); } - itemHandler.deserializeNBT(compound.getCompound(ITEMS_NBT_TAG_NAME)); + itemHandler.deserializeNBT(compound.getCompound(Constants.BLOCK_ENTITY_INVENTORY_TAG_NAME)); } } diff --git a/src/main/java/li/cil/oc2/data/LootTables.java b/src/main/java/li/cil/oc2/data/LootTables.java index e4bf4458..13401a96 100644 --- a/src/main/java/li/cil/oc2/data/LootTables.java +++ b/src/main/java/li/cil/oc2/data/LootTables.java @@ -2,8 +2,6 @@ package li.cil.oc2.data; import com.mojang.datafixers.util.Pair; import li.cil.oc2.api.API; -import li.cil.oc2.common.block.ComputerBlock; -import li.cil.oc2.common.block.entity.ComputerTileEntity; import li.cil.oc2.common.init.Blocks; import net.minecraft.block.Block; import net.minecraft.data.DataGenerator; @@ -11,7 +9,6 @@ import net.minecraft.data.LootTableProvider; import net.minecraft.data.loot.BlockLootTables; import net.minecraft.loot.*; import net.minecraft.loot.functions.CopyNbt; -import net.minecraft.loot.functions.SetContents; import net.minecraft.util.ResourceLocation; import java.util.Collections; @@ -24,10 +21,10 @@ import java.util.stream.Collectors; import java.util.stream.StreamSupport; import static java.util.Objects.requireNonNull; +import static li.cil.oc2.Constants.BLOCK_ENTITY_INVENTORY_TAG_NAME; +import static li.cil.oc2.Constants.BLOCK_ENTITY_TAG_NAME_IN_ITEM; public final class LootTables extends LootTableProvider { - private static final String BLOCK_ENTITY_TAG_NAME_IN_ITEM = "BlockEntityTag"; - public LootTables(final DataGenerator generator) { super(generator); } @@ -42,11 +39,7 @@ public final class LootTables extends LootTableProvider { return Collections.singletonList(Pair.of(ModBlockLootTables::new, LootParameterSets.BLOCK)); } - private static String concatNbtPath(final String... paths) { - return String.join(".", paths); - } - - private static final class ModBlockLootTables extends BlockLootTables { + public static final class ModBlockLootTables extends BlockLootTables { @Override protected void addTables() { registerDropSelfLootTable(Blocks.BUS_CABLE_BLOCK.get()); @@ -69,14 +62,16 @@ public final class LootTables extends LootTableProvider { .rolls(ConstantRange.of(1)) .addEntry(ItemLootEntry.builder(block) .acceptFunction(CopyNbt.builder(CopyNbt.Source.BLOCK_ENTITY) - .addOperation(ComputerTileEntity.ITEMS_NBT_TAG_NAME, - concatNbtPath(BLOCK_ENTITY_TAG_NAME_IN_ITEM, ComputerTileEntity.ITEMS_NBT_TAG_NAME), + .addOperation(BLOCK_ENTITY_INVENTORY_TAG_NAME, + concat(BLOCK_ENTITY_TAG_NAME_IN_ITEM, BLOCK_ENTITY_INVENTORY_TAG_NAME), CopyNbt.Action.REPLACE) ) - .acceptFunction(SetContents.builderIn() - .addLootEntry(DynamicLootEntry.func_216162_a(ComputerBlock.CONTENTS))) ) )); } + + private static String concat(final String... paths) { + return String.join(".", paths); + } } } diff --git a/src/main/resources/data/oc2/loot_tables/blocks/computer.json b/src/main/resources/data/oc2/loot_tables/blocks/computer.json index ccddda07..db543283 100644 --- a/src/main/resources/data/oc2/loot_tables/blocks/computer.json +++ b/src/main/resources/data/oc2/loot_tables/blocks/computer.json @@ -17,15 +17,6 @@ "op": "replace" } ] - }, - { - "function": "minecraft:set_contents", - "entries": [ - { - "type": "minecraft:dynamic", - "name": "oc2:contents" - } - ] } ], "name": "oc2:computer"