Cleanup and constant shuffling.
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,15 +17,6 @@
|
||||
"op": "replace"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_contents",
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:dynamic",
|
||||
"name": "oc2:contents"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"name": "oc2:computer"
|
||||
|
||||
Reference in New Issue
Block a user