From 999c02dbd0b0c607fb06bcdf7c06499964e82034 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 7 Jul 2018 19:15:18 +0200 Subject: [PATCH] Added cover support for constructor, destructor, reader, writer. --- .../network/node/NetworkNodeCable.java | 2 +- .../network/node/NetworkNodeConstructor.java | 28 ++++++++++++++-- .../network/node/NetworkNodeDestructor.java | 28 ++++++++++++++-- .../network/node/NetworkNodeExporter.java | 10 +++++- .../node/NetworkNodeExternalStorage.java | 8 ++++- .../network/node/NetworkNodeImporter.java | 10 +++++- .../network/node/NetworkNodeReader.java | 26 ++++++++++++++- .../network/node/NetworkNodeWriter.java | 26 ++++++++++++++- .../network/node/cover/CoverManager.java | 31 ++++++++++++------ .../block/BlockConstructor.java | 15 ++++----- .../refinedstorage/proxy/ProxyClient.java | 9 +++++- .../model/baked/BakedModelCableCover.java | 24 +++++++------- .../render/model/baked/BakedModelCover.java | 2 +- .../models/block/constructor_destructor.json | 24 +++++++------- .../block/constructor_destructor_glow.json | 32 +++++++++---------- .../block/constructor_destructor_item.json | 24 +++++++------- 16 files changed, 218 insertions(+), 81 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java index 5ed76f2a0..fae0d6ce3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCable.java @@ -16,7 +16,7 @@ public class NetworkNodeCable extends NetworkNode implements ICoverable { private static final String NBT_COVERS = "Covers"; - private CoverManager coverManager = new CoverManager(this); + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.ALLOW_ALL); public NetworkNodeCable(World world, BlockPos pos) { super(world, pos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java index f1f91dcaa..da4747c52 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeConstructor.java @@ -4,6 +4,7 @@ import com.mojang.authlib.GameProfile; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.util.Action; import com.raoulvdberge.refinedstorage.api.util.IComparer; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.container.slot.SlotFilter; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; @@ -37,18 +38,23 @@ import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.BlockSnapshot; +import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; -public class NetworkNodeConstructor extends NetworkNode implements IComparable, IType { +import javax.annotation.Nullable; + +public class NetworkNodeConstructor extends NetworkNode implements IComparable, IType, ICoverable { public static final String ID = "constructor"; private static final String NBT_COMPARE = "Compare"; private static final String NBT_TYPE = "Type"; private static final String NBT_DROP = "Drop"; + private static final String NBT_COVERS = "Covers"; private static final int BASE_SPEED = 20; @@ -61,6 +67,8 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable, private int type = IType.ITEMS; private boolean drop = false; + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.NONE_ON_FACE); + public NetworkNodeConstructor(World world, BlockPos pos) { super(world, pos); } @@ -276,6 +284,8 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable, StackUtils.writeItems(upgrades, 1, tag); + tag.setTag(NBT_COVERS, coverManager.writeToNbt()); + return tag; } @@ -309,6 +319,10 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable, drop = tag.getBoolean(NBT_DROP); } + if (tag.hasKey(NBT_COVERS)) { + coverManager.readFromNbt(tag.getTagList(NBT_COVERS, Constants.NBT.TAG_COMPOUND)); + } + StackUtils.readItems(itemFilters, 0, tag); StackUtils.readItems(fluidFilters, 2, tag); } @@ -327,7 +341,12 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable, @Override public IItemHandler getDrops() { - return upgrades; + return new CombinedInvWrapper(upgrades, coverManager.getAsInventory()); + } + + @Override + public boolean canConduct(@Nullable EnumFacing direction) { + return coverManager.canConduct(direction); } @Override @@ -351,4 +370,9 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable, public IItemHandler getFilterInventory() { return getType() == IType.ITEMS ? itemFilters : fluidFilters; } + + @Override + public CoverManager getCoverManager() { + return coverManager; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java index dbbf9d3f2..871625c2d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeDestructor.java @@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.util.Action; import com.raoulvdberge.refinedstorage.api.util.IComparer; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; @@ -25,6 +26,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityShulkerBox; +import net.minecraft.util.EnumFacing; import net.minecraft.util.NonNullList; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; @@ -34,6 +36,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.FakePlayerFactory; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fluids.Fluid; @@ -43,17 +46,20 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.wrappers.BlockLiquidWrapper; import net.minecraftforge.fluids.capability.wrappers.FluidBlockWrapper; import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -public class NetworkNodeDestructor extends NetworkNode implements IComparable, IFilterable, IType { +public class NetworkNodeDestructor extends NetworkNode implements IComparable, IFilterable, IType, ICoverable { public static final String ID = "destructor"; private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_TYPE = "Type"; private static final String NBT_PICKUP = "Pickup"; + private static final String NBT_COVERS = "Covers"; private static final int BASE_SPEED = 20; @@ -67,6 +73,8 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I private int type = IType.ITEMS; private boolean pickupItem = false; + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.NONE_ON_FACE); + public NetworkNodeDestructor(World world, BlockPos pos) { super(world, pos); } @@ -211,6 +219,10 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I super.read(tag); StackUtils.readItems(upgrades, 1, tag); + + if (tag.hasKey(NBT_COVERS)) { + coverManager.readFromNbt(tag.getTagList(NBT_COVERS, Constants.NBT.TAG_COMPOUND)); + } } @Override @@ -224,6 +236,8 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I StackUtils.writeItems(upgrades, 1, tag); + tag.setTag(NBT_COVERS, coverManager.writeToNbt()); + return tag; } @@ -283,7 +297,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I @Override public IItemHandler getDrops() { - return upgrades; + return new CombinedInvWrapper(upgrades, coverManager.getAsInventory()); } @Override @@ -303,6 +317,11 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I return getType() == IType.ITEMS ? itemFilters : fluidFilters; } + @Override + public boolean canConduct(@Nullable EnumFacing direction) { + return coverManager.canConduct(direction); + } + public boolean isPickupItem() { return pickupItem; } @@ -310,4 +329,9 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I public void setPickupItem(boolean pickupItem) { this.pickupItem = pickupItem; } + + @Override + public CoverManager getCoverManager() { + return coverManager; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java index 7d9360882..824bbdadb 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExporter.java @@ -16,6 +16,7 @@ import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; @@ -26,6 +27,8 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import javax.annotation.Nullable; + public class NetworkNodeExporter extends NetworkNode implements IComparable, IType, ICoverable { public static final String ID = "exporter"; @@ -41,7 +44,7 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE; private int type = IType.ITEMS; - private CoverManager coverManager = new CoverManager(this).setCanPlaceCoversOnFace(false); + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_ON_FACE); private int filterSlot; @@ -238,6 +241,11 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy return getType() == IType.ITEMS ? itemFilters : fluidFilters; } + @Override + public boolean canConduct(@Nullable EnumFacing direction) { + return coverManager.canConduct(direction); + } + @Override public CoverManager getCoverManager() { return coverManager; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java index 3cc33845d..973d4d1d1 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeExternalStorage.java @@ -26,6 +26,7 @@ import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; @@ -55,7 +56,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP private AccessType accessType = AccessType.INSERT_EXTRACT; private int networkTicks; - private CoverManager coverManager = new CoverManager(this).setCanPlaceCoversOnFace(false); + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_ON_FACE); private List> itemStorages = new CopyOnWriteArrayList<>(); private List> fluidStorages = new CopyOnWriteArrayList<>(); @@ -352,6 +353,11 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP return fluidStorages; } + @Override + public boolean canConduct(@Nullable EnumFacing direction) { + return coverManager.canConduct(direction); + } + @Nullable @Override public IItemHandler getDrops() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java index 16435c69f..87573add6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeImporter.java @@ -20,6 +20,7 @@ import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; @@ -29,6 +30,8 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.CombinedInvWrapper; +import javax.annotation.Nullable; + public class NetworkNodeImporter extends NetworkNode implements IComparable, IFilterable, IType, ICoverable { public static final String ID = "importer"; @@ -46,7 +49,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi private int mode = IFilterable.BLACKLIST; private int type = IType.ITEMS; - private CoverManager coverManager = new CoverManager(this).setCanPlaceCoversOnFace(false); + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_ON_FACE); private int currentSlot; @@ -220,6 +223,11 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi return new CombinedInvWrapper(upgrades, coverManager.getAsInventory()); } + @Override + public boolean canConduct(@Nullable EnumFacing direction) { + return coverManager.canConduct(direction); + } + @Override public int getType() { return world.isRemote ? TileImporter.TYPE.getValue() : type; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java index 7aa23d94a..8c95093d0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java @@ -2,19 +2,27 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.tile.TileReader; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants; -public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReaderWriter { +import javax.annotation.Nullable; + +public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReaderWriter, ICoverable { public static final String ID = "reader"; private static final String NBT_CHANNEL = "Channel"; + private static final String NBT_COVERS = "Covers"; private String channel = ""; + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_ON_FACE); + public NetworkNodeReader(World world, BlockPos pos) { super(world, pos); } @@ -66,6 +74,10 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade if (tag.hasKey(NBT_CHANNEL)) { channel = tag.getString(NBT_CHANNEL); } + + if (tag.hasKey(NBT_COVERS)) { + coverManager.readFromNbt(tag.getTagList(NBT_COVERS, Constants.NBT.TAG_COMPOUND)); + } } @Override @@ -79,6 +91,18 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade tag.setString(NBT_CHANNEL, channel); + tag.setTag(NBT_COVERS, coverManager.writeToNbt()); + return tag; } + + @Override + public boolean canConduct(@Nullable EnumFacing direction) { + return coverManager.canConduct(direction); + } + + @Override + public CoverManager getCoverManager() { + return coverManager; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java index 8e58b1038..b3f205615 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java @@ -5,22 +5,30 @@ import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.tile.TileWriter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants; -public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReaderWriter { +import javax.annotation.Nullable; + +public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReaderWriter, ICoverable { public static final String ID = "writer"; private static final String NBT_CHANNEL = "Channel"; + private static final String NBT_COVERS = "Covers"; private String channel = ""; private int redstoneStrength; private int lastRedstoneStrength; + private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_ON_FACE); + public NetworkNodeWriter(World world, BlockPos pos) { super(world, pos); } @@ -98,6 +106,10 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade if (tag.hasKey(NBT_CHANNEL)) { channel = tag.getString(NBT_CHANNEL); } + + if (tag.hasKey(NBT_COVERS)) { + coverManager.readFromNbt(tag.getTagList(NBT_COVERS, Constants.NBT.TAG_COMPOUND)); + } } @Override @@ -111,6 +123,18 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade tag.setString(NBT_CHANNEL, channel); + tag.setTag(NBT_COVERS, coverManager.writeToNbt()); + return tag; } + + @Override + public boolean canConduct(@Nullable EnumFacing direction) { + return coverManager.canConduct(direction); + } + + @Override + public CoverManager getCoverManager() { + return coverManager; + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java index c89b2f715..72aa685d5 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/cover/CoverManager.java @@ -25,16 +25,23 @@ import java.util.HashMap; import java.util.Map; public class CoverManager { + public enum CoverPlacementMode { + ALLOW_ALL, + NONE_ON_FACE, + HOLLOW_ON_FACE + } + private static final String NBT_DIRECTION = "Direction"; private static final String NBT_ITEM = "Item"; private static final String NBT_HOLLOW = "Hollow"; private Map covers = new HashMap<>(); private NetworkNode node; - private boolean canPlaceCoversOnFace = true; + private CoverPlacementMode placementMode; - public CoverManager(NetworkNode node) { + public CoverManager(NetworkNode node, CoverPlacementMode placementMode) { this.node = node; + this.placementMode = placementMode; } public boolean canConduct(EnumFacing direction) { @@ -66,8 +73,18 @@ public class CoverManager { public boolean setCover(EnumFacing facing, Cover cover) { if (isValidCover(cover.getStack()) && !hasCover(facing)) { - if (facing == node.getDirection() && !canPlaceCoversOnFace && !cover.isHollow()) { - return false; + if (facing == node.getDirection()) { + switch (placementMode) { + case ALLOW_ALL: + break; + case NONE_ON_FACE: + return false; + case HOLLOW_ON_FACE: + if (!cover.isHollow()) { + return false; + } + break; + } } covers.put(facing, cover); @@ -183,10 +200,4 @@ public class CoverManager { return null; } } - - public CoverManager setCanPlaceCoversOnFace(boolean canPlaceCoversOnFace) { - this.canPlaceCoversOnFace = canPlaceCoversOnFace; - - return this; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java index ee6e5beb2..2af73a949 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockConstructor.java @@ -13,16 +13,15 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; public class BlockConstructor extends BlockCable { - public static final AxisAlignedBB HEAD_NORTH_AABB = RenderUtils.getBounds(0, 0, 0, 16, 16, 2); - public static final AxisAlignedBB HEAD_EAST_AABB = RenderUtils.getBounds(14, 0, 0, 16, 16, 16); - public static final AxisAlignedBB HEAD_SOUTH_AABB = RenderUtils.getBounds(0, 0, 14, 16, 16, 16); - public static final AxisAlignedBB HEAD_WEST_AABB = RenderUtils.getBounds(0, 0, 0, 2, 16, 16); - public static final AxisAlignedBB HEAD_DOWN_AABB = RenderUtils.getBounds(0, 0, 0, 16, 2, 16); - public static final AxisAlignedBB HEAD_UP_AABB = RenderUtils.getBounds(0, 14, 0, 16, 16, 16); + private static final AxisAlignedBB HEAD_NORTH_AABB = RenderUtils.getBounds(2, 2, 0, 14, 14, 2); + private static final AxisAlignedBB HEAD_EAST_AABB = RenderUtils.getBounds(14, 2, 2, 16, 14, 14); + private static final AxisAlignedBB HEAD_SOUTH_AABB = RenderUtils.getBounds(2, 2, 14, 14, 14, 16); + private static final AxisAlignedBB HEAD_WEST_AABB = RenderUtils.getBounds(0, 2, 2, 2, 14, 14); + private static final AxisAlignedBB HEAD_DOWN_AABB = RenderUtils.getBounds(2, 0, 2, 14, 2, 14); + private static final AxisAlignedBB HEAD_UP_AABB = RenderUtils.getBounds(2, 14, 2, 14, 16, 14); public BlockConstructor() { super("constructor"); @@ -30,7 +29,7 @@ public class BlockConstructor extends BlockCable { @Override public List getCollisionBoxes(TileEntity tile, IBlockState state) { - List boxes = new ArrayList<>(); + List boxes = super.getCollisionBoxes(tile, state); switch (state.getValue(getDirection().getProperty())) { case NORTH: diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java index 2e8dc7c0e..2c8e6d67e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java @@ -375,7 +375,14 @@ public class ProxyClient extends ProxyCommon { if (model.getResourceDomain().equals(RS.ID)) { if (model.getResourcePath().equals("pattern")) { e.getModelRegistry().putObject(model, new BakedModelPattern(e.getModelRegistry().getObject(model))); - } else if (model.getResourcePath().equals("cable") || model.getResourcePath().equals("exporter") || model.getResourcePath().equals("importer") || model.getResourcePath().equals("external_storage")) { + } else if (model.getResourcePath().equals("cable") || + model.getResourcePath().equals("exporter") || + model.getResourcePath().equals("importer") || + model.getResourcePath().equals("external_storage") || + model.getResourcePath().equals("constructor") || + model.getResourcePath().equals("destructor") || + model.getResourcePath().equals("reader") || + model.getResourcePath().equals("writer")) { e.getModelRegistry().putObject(model, new BakedModelCableCover(e.getModelRegistry().getObject(model))); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java index 15ccdd610..d54eb4f4e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java @@ -43,18 +43,18 @@ public class BakedModelCableCover implements IBakedModel { boolean hasEast = s.getValue(BlockCable.COVER_EAST) != null; boolean hasWest = s.getValue(BlockCable.COVER_WEST) != null; - addCoverOrHollow(quads, s.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, hasUp, hasDown, hasEast, hasWest); - addCoverOrHollow(quads, s.getValue(BlockCable.COVER_SOUTH), EnumFacing.SOUTH, side, rand, hasUp, hasDown, hasEast, hasWest); - addCoverOrHollow(quads, s.getValue(BlockCable.COVER_EAST), EnumFacing.EAST, side, rand, hasUp, hasDown, hasEast, hasWest); - addCoverOrHollow(quads, s.getValue(BlockCable.COVER_WEST), EnumFacing.WEST, side, rand, hasUp, hasDown, hasEast, hasWest); - addCoverOrHollow(quads, s.getValue(BlockCable.COVER_DOWN), EnumFacing.DOWN, side, rand, hasUp, hasDown, hasEast, hasWest); - addCoverOrHollow(quads, s.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, hasUp, hasDown, hasEast, hasWest); + addCoverOrHollow(quads, s.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, hasUp, hasDown, hasEast, hasWest, true); + addCoverOrHollow(quads, s.getValue(BlockCable.COVER_SOUTH), EnumFacing.SOUTH, side, rand, hasUp, hasDown, hasEast, hasWest, true); + addCoverOrHollow(quads, s.getValue(BlockCable.COVER_EAST), EnumFacing.EAST, side, rand, hasUp, hasDown, hasEast, hasWest, true); + addCoverOrHollow(quads, s.getValue(BlockCable.COVER_WEST), EnumFacing.WEST, side, rand, hasUp, hasDown, hasEast, hasWest, true); + addCoverOrHollow(quads, s.getValue(BlockCable.COVER_DOWN), EnumFacing.DOWN, side, rand, hasUp, hasDown, hasEast, hasWest, true); + addCoverOrHollow(quads, s.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, hasUp, hasDown, hasEast, hasWest, true); } return quads; } - protected static void addCoverOrHollow(List quads, @Nullable Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) { + protected static void addCoverOrHollow(List quads, @Nullable Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) { if (cover == null) { return; } @@ -62,11 +62,11 @@ public class BakedModelCableCover implements IBakedModel { if (cover.isHollow()) { addHollowCover(quads, cover, coverSide, side, rand, hasUp, hasDown, hasEast, hasWest); } else { - addCover(quads, cover, coverSide, side, rand, hasUp, hasDown, hasEast, hasWest); + addCover(quads, cover, coverSide, side, rand, hasUp, hasDown, hasEast, hasWest, handle); } } - private static void addCover(List quads, Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) { + private static void addCover(List quads, Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) { IBlockState coverState = CoverManager.getBlockState(cover.getStack()); if (coverState == null) { @@ -159,7 +159,9 @@ public class BakedModelCableCover implements IBakedModel { .bake() ); - addHolder(quads, rotation); + if (handle) { + addHandle(quads, rotation); + } } private static void addHollowCover(List quads, Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) { @@ -312,7 +314,7 @@ public class BakedModelCableCover implements IBakedModel { ); } - private static void addHolder(List quads, ModelRotation rotation) { + private static void addHandle(List quads, ModelRotation rotation) { if (GREY_SPRITE == null) { GREY_SPRITE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey"); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java index a2d8732ff..6a80ebdb9 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java @@ -71,7 +71,7 @@ public class BakedModelCover extends BakedModelCableCover { public List load(CacheKey key) { List quads = new ArrayList<>(); - addCoverOrHollow(quads, new Cover(key.stack, key.hollow), EnumFacing.NORTH, key.side, 0, false, false, false, false); + addCoverOrHollow(quads, new Cover(key.stack, key.hollow), EnumFacing.NORTH, key.side, 0, false, false, false, false, false); return quads; } diff --git a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json index 79bfd0e91..54ec80653 100755 --- a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json +++ b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor.json @@ -73,13 +73,13 @@ { "name": "Line2", "from": [ - 0.0, - 0.0, + 2.0, + 2.0, 0.0 ], "to": [ - 16.0, - 16.0, + 14.0, + 14.0, 2.0 ], "faces": { @@ -95,7 +95,7 @@ "east": { "texture": "#line", "uv": [ - 0.0, + 14.0, 0.0, 16.0, 16.0 @@ -115,25 +115,25 @@ "uv": [ 0.0, 0.0, - 16.0, + 2.0, 16.0 ] }, "up": { "texture": "#line", "uv": [ + 2.0, 0.0, - 0.0, - 16.0, - 16.0 + 14.0, + 2.0 ] }, "down": { "texture": "#line", "uv": [ - 0.0, - 0.0, - 16.0, + 2.0, + 14.0, + 14.0, 16.0 ] } diff --git a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_glow.json b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_glow.json index 71a82c291..22d45bd98 100644 --- a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_glow.json +++ b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_glow.json @@ -73,13 +73,13 @@ { "name": "Line2", "from": [ - 0.0, - 0.0, + 2.0, + 2.0, 0.0 ], "to": [ - 16.0, - 16.0, + 14.0, + 14.0, 2.0 ], "faces": { @@ -95,7 +95,7 @@ "east": { "texture": "#line", "uv": [ - 0.0, + 14.0, 0.0, 16.0, 16.0 @@ -115,25 +115,25 @@ "uv": [ 0.0, 0.0, - 16.0, + 2.0, 16.0 ] }, "up": { "texture": "#line", "uv": [ + 2.0, 0.0, - 0.0, - 16.0, - 16.0 + 14.0, + 2.0 ] }, "down": { "texture": "#line", "uv": [ - 0.0, - 0.0, - 16.0, + 2.0, + 14.0, + 14.0, 16.0 ] } @@ -142,13 +142,13 @@ { "name": "Line3", "from": [ - 0.0, - 0.0, + 2.0, + 2.0, 0.0 ], "to": [ - 16.0, - 16.0, + 14.0, + 14.0, 2.0 ], "faces": { diff --git a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_item.json b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_item.json index 7f3b4117f..10a7660f3 100755 --- a/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_item.json +++ b/src/main/resources/assets/refinedstorage/models/block/constructor_destructor_item.json @@ -73,13 +73,13 @@ { "name": "Line2", "from": [ - 0.0, - 0.0, + 2.0, + 2.0, 0.0 ], "to": [ - 16.0, - 16.0, + 14.0, + 14.0, 2.0 ], "faces": { @@ -95,7 +95,7 @@ "east": { "texture": "#line", "uv": [ - 0.0, + 14.0, 0.0, 16.0, 16.0 @@ -115,25 +115,25 @@ "uv": [ 0.0, 0.0, - 16.0, + 2.0, 16.0 ] }, "up": { "texture": "#line", "uv": [ + 2.0, 0.0, - 0.0, - 16.0, - 16.0 + 14.0, + 2.0 ] }, "down": { "texture": "#line", "uv": [ - 0.0, - 0.0, - 16.0, + 2.0, + 14.0, + 14.0, 16.0 ] }