diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CableNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CableNetworkNode.java index 3476316b4..f39b2ba3a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CableNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CableNetworkNode.java @@ -40,12 +40,6 @@ public class CableNetworkNode extends NetworkNode implements ICoverable { super.read(tag); } - @Override - public void update() { - super.update(); - //WorldUtils.updateBlock(world, pos); - } - @Override public CompoundNBT write(CompoundNBT tag) { tag.put("Cover", this.coverManager.writeToNbt()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java index be8c15f04..381778e42 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ExporterNetworkNode.java @@ -1,9 +1,11 @@ package com.refinedmods.refinedstorage.apiimpl.network.node; import com.refinedmods.refinedstorage.RS; +import com.refinedmods.refinedstorage.api.network.node.ICoverable; import com.refinedmods.refinedstorage.api.util.Action; import com.refinedmods.refinedstorage.api.util.IComparer; import com.refinedmods.refinedstorage.apiimpl.API; +import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler; import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler; @@ -27,7 +29,7 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.ItemHandlerHelper; -public class ExporterNetworkNode extends NetworkNode implements IComparable, IType { +public class ExporterNetworkNode extends NetworkNode implements IComparable, IType, ICoverable { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "exporter"); private static final String NBT_COMPARE = "Compare"; @@ -72,8 +74,11 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy private int filterSlot; + private CoverManager coverManager; + public ExporterNetworkNode(World world, BlockPos pos) { super(world, pos); + this.coverManager = new CoverManager(this); } @Override @@ -244,9 +249,8 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy @Override public CompoundNBT write(CompoundNBT tag) { super.write(tag); - + tag.put("Cover", this.coverManager.writeToNbt()); StackUtils.writeItems(upgrades, 1, tag); - return tag; } @@ -267,7 +271,7 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy @Override public void read(CompoundNBT tag) { super.read(tag); - + if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover")); StackUtils.readItems(upgrades, 1, tag); } @@ -320,4 +324,9 @@ public class ExporterNetworkNode extends NetworkNode implements IComparable, ITy public FluidInventory getFluidFilters() { return fluidFilters; } + + @Override + public CoverManager getCoverManager() { + return coverManager; + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java index bb79f79c8..102e81b09 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/ImporterNetworkNode.java @@ -1,8 +1,10 @@ package com.refinedmods.refinedstorage.apiimpl.network.node; import com.refinedmods.refinedstorage.RS; +import com.refinedmods.refinedstorage.api.network.node.ICoverable; import com.refinedmods.refinedstorage.api.util.Action; import com.refinedmods.refinedstorage.api.util.IComparer; +import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler; import com.refinedmods.refinedstorage.inventory.item.UpgradeItemHandler; @@ -28,7 +30,7 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; -public class ImporterNetworkNode extends NetworkNode implements IComparable, IWhitelistBlacklist, IType { +public class ImporterNetworkNode extends NetworkNode implements IComparable, IWhitelistBlacklist, IType, ICoverable { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "importer"); private static final String NBT_COMPARE = "Compare"; @@ -47,8 +49,11 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh private int currentSlot; + private CoverManager coverManager; + public ImporterNetworkNode(World world, BlockPos pos) { super(world, pos); + this.coverManager = new CoverManager(this); } @Override @@ -148,7 +153,7 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh @Override public void read(CompoundNBT tag) { super.read(tag); - + if (tag.contains("Cover")) this.coverManager.readFromNbt(tag.getCompound("Cover")); StackUtils.readItems(upgrades, 1, tag); } @@ -160,7 +165,7 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh @Override public CompoundNBT write(CompoundNBT tag) { super.write(tag); - + tag.put("Cover", this.coverManager.writeToNbt()); StackUtils.writeItems(upgrades, 1, tag); return tag; @@ -234,4 +239,9 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh public FluidInventory getFluidFilters() { return fluidFilters; } + + @Override + public CoverManager getCoverManager() { + return coverManager; + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java index 26703e67a..ea67fcbd8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ExporterBlock.java @@ -69,15 +69,16 @@ public class ExporterBlock extends CableBlock { @Override public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext ctx) { - return ShapeCache.getOrCreate(state, s -> { + return ConstantsCable.addCoverVoxelShapes(ShapeCache.getOrCreate(state, s -> { VoxelShape shape = getCableShape(s); shape = VoxelShapes.or(shape, getLineShape(s)); - return ConstantsCable.addCoverVoxelShapes(shape, world, pos); - }); + return shape; + }), world, pos); } + private VoxelShape getLineShape(BlockState state) { Direction direction = state.get(getDirection().getProperty()); diff --git a/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java index aeb86c061..7df60ec7f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/ImporterBlock.java @@ -69,13 +69,13 @@ public class ImporterBlock extends CableBlock { @Override public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext ctx) { - return ShapeCache.getOrCreate(state, s -> { + return ConstantsCable.addCoverVoxelShapes(ShapeCache.getOrCreate(state, s -> { VoxelShape shape = getCableShape(s); shape = VoxelShapes.or(shape, getLineShape(s)); - return ConstantsCable.addCoverVoxelShapes(shape, world, pos); - }); + return shape; + }), world, pos); } private VoxelShape getLineShape(BlockState state) { diff --git a/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java b/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java index 323e3e418..e8e912b8d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java +++ b/src/main/java/com/refinedmods/refinedstorage/setup/ClientSetup.java @@ -112,6 +112,8 @@ public class ClientSetup { new ResourceLocation(RS.ID, "block/disks/leds") )); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "cable"), (base, registry) -> new BakedModelCableCover(base)); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "exporter"), (base, registry) -> new BakedModelCableCover(base)); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "importer"), (base, registry) -> new BakedModelCableCover(base)); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.NORMAL)); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "hollow_cover"), (base, registry) -> new BakedModelCover(ItemStack.EMPTY, CoverType.HOLLOW)); diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/CableTile.java b/src/main/java/com/refinedmods/refinedstorage/tile/CableTile.java index e482637c1..1dc5c96c2 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/CableTile.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/CableTile.java @@ -30,8 +30,10 @@ import java.util.HashMap; public class CableTile extends NetworkNodeTile { - public static final TileDataParameter COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> Minecraft.getInstance().enqueue(() -> { - + public static final TileDataParameter COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(), + t -> t.getNode().getCoverManager().writeToNbt(), + (t, v) -> t.getNode().getCoverManager().readFromNbt(v), + (initial, p) -> Minecraft.getInstance().enqueue(() -> { })); static { diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/ExporterTile.java b/src/main/java/com/refinedmods/refinedstorage/tile/ExporterTile.java index 81637b2cf..78c9a3630 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/ExporterTile.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/ExporterTile.java @@ -2,23 +2,43 @@ package com.refinedmods.refinedstorage.tile; import com.refinedmods.refinedstorage.RSTiles; import com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode; +import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.tile.config.IComparable; import com.refinedmods.refinedstorage.tile.config.IType; +import com.refinedmods.refinedstorage.tile.data.TileDataManager; import com.refinedmods.refinedstorage.tile.data.TileDataParameter; +import com.refinedmods.refinedstorage.util.WorldUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; import javax.annotation.Nonnull; public class ExporterTile extends NetworkNodeTile { + + public static final TileDataParameter COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(), + t -> t.getNode().getCoverManager().writeToNbt(), + (t, v) -> t.getNode().getCoverManager().readFromNbt(v), + (initial, p) -> Minecraft.getInstance().enqueue(() -> { + })); + public static final TileDataParameter COMPARE = IComparable.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); + static { + TileDataManager.registerParameter(COVER_MANAGER); + } + public ExporterTile() { super(RSTiles.EXPORTER); dataManager.addWatchedParameter(COMPARE); dataManager.addWatchedParameter(TYPE); + dataManager.addWatchedParameter(COVER_MANAGER); } @Override @@ -26,4 +46,29 @@ public class ExporterTile extends NetworkNodeTile { public ExporterNetworkNode createNode(World world, BlockPos pos) { return new ExporterNetworkNode(world, pos); } + + @Nonnull + @Override + public IModelData getModelData() { + return new ModelDataMap.Builder().withInitial(CoverManager.PROPERTY, this.getNode().getCoverManager()).build(); + } + + @Override + public CompoundNBT writeUpdate(CompoundNBT tag) { + super.writeUpdate(tag); + tag.put("Covers", this.getNode().getCoverManager().writeToNbt()); + + return tag; + } + + @Override + public void readUpdate(CompoundNBT tag) { + super.readUpdate(tag); + + this.getNode().getCoverManager().readFromNbt(tag.getCompound("Covers")); + + requestModelDataUpdate(); + + WorldUtils.updateBlock(world, pos); + } } diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/ImporterTile.java b/src/main/java/com/refinedmods/refinedstorage/tile/ImporterTile.java index 6f0ba7366..962b9749b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/ImporterTile.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/ImporterTile.java @@ -2,12 +2,20 @@ package com.refinedmods.refinedstorage.tile; import com.refinedmods.refinedstorage.RSTiles; import com.refinedmods.refinedstorage.apiimpl.network.node.ImporterNetworkNode; +import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.tile.config.IComparable; import com.refinedmods.refinedstorage.tile.config.IType; import com.refinedmods.refinedstorage.tile.config.IWhitelistBlacklist; +import com.refinedmods.refinedstorage.tile.data.TileDataManager; import com.refinedmods.refinedstorage.tile.data.TileDataParameter; +import com.refinedmods.refinedstorage.util.WorldUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.datasync.DataSerializers; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; import javax.annotation.Nonnull; @@ -16,12 +24,24 @@ public class ImporterTile extends NetworkNodeTile { public static final TileDataParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final TileDataParameter TYPE = IType.createParameter(); + public static final TileDataParameter COVER_MANAGER = new TileDataParameter<>(DataSerializers.COMPOUND_NBT, new CompoundNBT(), + t -> t.getNode().getCoverManager().writeToNbt(), + (t, v) -> t.getNode().getCoverManager().readFromNbt(v), + (initial, p) -> Minecraft.getInstance().enqueue(() -> { + })); + + static { + TileDataManager.registerParameter(COVER_MANAGER); + } + + public ImporterTile() { super(RSTiles.IMPORTER); dataManager.addWatchedParameter(COMPARE); dataManager.addWatchedParameter(WHITELIST_BLACKLIST); dataManager.addWatchedParameter(TYPE); + dataManager.addWatchedParameter(COVER_MANAGER); } @Override @@ -29,4 +49,30 @@ public class ImporterTile extends NetworkNodeTile { public ImporterNetworkNode createNode(World world, BlockPos pos) { return new ImporterNetworkNode(world, pos); } + + + @Nonnull + @Override + public IModelData getModelData() { + return new ModelDataMap.Builder().withInitial(CoverManager.PROPERTY, this.getNode().getCoverManager()).build(); + } + + @Override + public CompoundNBT writeUpdate(CompoundNBT tag) { + super.writeUpdate(tag); + tag.put("Covers", this.getNode().getCoverManager().writeToNbt()); + + return tag; + } + + @Override + public void readUpdate(CompoundNBT tag) { + super.readUpdate(tag); + + this.getNode().getCoverManager().readFromNbt(tag.getCompound("Covers")); + + requestModelDataUpdate(); + + WorldUtils.updateBlock(world, pos); + } }