Added cover support for constructor, destructor, reader, writer.

This commit is contained in:
raoulvdberge
2018-07-07 19:15:18 +02:00
parent 34b0735050
commit 999c02dbd0
16 changed files with 218 additions and 81 deletions

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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<IStorageExternal<ItemStack>> itemStorages = new CopyOnWriteArrayList<>();
private List<IStorageExternal<FluidStack>> 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() {

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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<EnumFacing, Cover> 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;
}
}

View File

@@ -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<AxisAlignedBB> getCollisionBoxes(TileEntity tile, IBlockState state) {
List<AxisAlignedBB> boxes = new ArrayList<>();
List<AxisAlignedBB> boxes = super.getCollisionBoxes(tile, state);
switch (state.getValue(getDirection().getProperty())) {
case NORTH:

View File

@@ -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)));
}
}

View File

@@ -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<BakedQuad> quads, @Nullable Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) {
protected static void addCoverOrHollow(List<BakedQuad> 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<BakedQuad> quads, Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) {
private static void addCover(List<BakedQuad> 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<BakedQuad> 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<BakedQuad> quads, ModelRotation rotation) {
private static void addHandle(List<BakedQuad> quads, ModelRotation rotation) {
if (GREY_SPRITE == null) {
GREY_SPRITE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey");
}

View File

@@ -71,7 +71,7 @@ public class BakedModelCover extends BakedModelCableCover {
public List<BakedQuad> load(CacheKey key) {
List<BakedQuad> 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;
}

View File

@@ -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
]
}

View File

@@ -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": {

View File

@@ -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
]
}