Improve CoverType to not needlessly store large hollow cover types.
This commit is contained in:
@@ -16,7 +16,7 @@ public class NetworkNodeCable extends NetworkNode implements ICoverable {
|
|||||||
|
|
||||||
private static final String NBT_COVERS = "Covers";
|
private static final String NBT_COVERS = "Covers";
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.ANY);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
public NetworkNodeCable(World world, BlockPos pos) {
|
public NetworkNodeCable(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
|
|||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
private boolean drop = false;
|
private boolean drop = false;
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
public NetworkNodeConstructor(World world, BlockPos pos) {
|
public NetworkNodeConstructor(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
|||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
private boolean pickupItem = false;
|
private boolean pickupItem = false;
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
public NetworkNodeDestructor(World world, BlockPos pos) {
|
public NetworkNodeDestructor(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
|||||||
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
|
private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE;
|
||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
private int filterSlot;
|
private int filterSlot;
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
|
|||||||
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
||||||
private int networkTicks;
|
private int networkTicks;
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_MEDIUM_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
private List<IStorageExternal<ItemStack>> itemStorages = new CopyOnWriteArrayList<>();
|
private List<IStorageExternal<ItemStack>> itemStorages = new CopyOnWriteArrayList<>();
|
||||||
private List<IStorageExternal<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>();
|
private List<IStorageExternal<FluidStack>> fluidStorages = new CopyOnWriteArrayList<>();
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class NetworkNodeImporter extends NetworkNode implements IComparable, IFi
|
|||||||
private int mode = IFilterable.BLACKLIST;
|
private int mode = IFilterable.BLACKLIST;
|
||||||
private int type = IType.ITEMS;
|
private int type = IType.ITEMS;
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_MEDIUM_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
private int currentSlot;
|
private int currentSlot;
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade
|
|||||||
|
|
||||||
private String channel = "";
|
private String channel = "";
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
public NetworkNodeReader(World world, BlockPos pos) {
|
public NetworkNodeReader(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
|
|||||||
private int redstoneStrength;
|
private int redstoneStrength;
|
||||||
private int lastRedstoneStrength;
|
private int lastRedstoneStrength;
|
||||||
|
|
||||||
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_LARGE_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this);
|
||||||
|
|
||||||
public NetworkNodeWriter(World world, BlockPos pos) {
|
public NetworkNodeWriter(World world, BlockPos pos) {
|
||||||
super(world, pos);
|
super(world, pos);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCable;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemCover;
|
import com.raoulvdberge.refinedstorage.item.ItemCover;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockGlass;
|
import net.minecraft.block.BlockGlass;
|
||||||
@@ -24,29 +25,20 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class CoverManager {
|
public class CoverManager {
|
||||||
public enum CoverPlacementMode {
|
|
||||||
ANY,
|
|
||||||
HOLLOW_ON_FACE,
|
|
||||||
HOLLOW_MEDIUM_ON_FACE,
|
|
||||||
HOLLOW_LARGE_ON_FACE
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final String NBT_DIRECTION = "Direction";
|
private static final String NBT_DIRECTION = "Direction";
|
||||||
private static final String NBT_ITEM = "Item";
|
private static final String NBT_ITEM = "Item";
|
||||||
private static final String NBT_TYPE = "Type";
|
private static final String NBT_TYPE = "Type";
|
||||||
|
|
||||||
private Map<EnumFacing, Cover> covers = new HashMap<>();
|
private Map<EnumFacing, Cover> covers = new HashMap<>();
|
||||||
private NetworkNode node;
|
private NetworkNode node;
|
||||||
private CoverPlacementMode placementMode;
|
|
||||||
|
|
||||||
public CoverManager(NetworkNode node, CoverPlacementMode placementMode) {
|
public CoverManager(NetworkNode node) {
|
||||||
this.node = node;
|
this.node = node;
|
||||||
this.placementMode = placementMode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canConduct(EnumFacing direction) {
|
public boolean canConduct(EnumFacing direction) {
|
||||||
Cover cover = getCover(direction);
|
Cover cover = getCover(direction);
|
||||||
if (cover != null && !cover.getType().isHollow()) {
|
if (cover != null && cover.getType() != CoverType.HOLLOW) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +46,7 @@ public class CoverManager {
|
|||||||
if (neighbor instanceof ICoverable) {
|
if (neighbor instanceof ICoverable) {
|
||||||
cover = ((ICoverable) neighbor).getCoverManager().getCover(direction.getOpposite());
|
cover = ((ICoverable) neighbor).getCoverManager().getCover(direction.getOpposite());
|
||||||
|
|
||||||
if (cover != null && !cover.getType().isHollow()) {
|
if (cover != null && cover.getType() != CoverType.HOLLOW) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,19 +65,8 @@ public class CoverManager {
|
|||||||
|
|
||||||
public boolean setCover(EnumFacing facing, Cover cover) {
|
public boolean setCover(EnumFacing facing, Cover cover) {
|
||||||
if (isValidCover(cover.getStack()) && !hasCover(facing)) {
|
if (isValidCover(cover.getStack()) && !hasCover(facing)) {
|
||||||
if (facing == node.getDirection()) {
|
if (facing == node.getDirection() && !(node instanceof NetworkNodeCable) && cover.getType() != CoverType.HOLLOW) {
|
||||||
switch (placementMode) {
|
return false;
|
||||||
case ANY:
|
|
||||||
break;
|
|
||||||
case HOLLOW_ON_FACE:
|
|
||||||
case HOLLOW_MEDIUM_ON_FACE:
|
|
||||||
case HOLLOW_LARGE_ON_FACE:
|
|
||||||
if (!cover.getType().isHollow()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
cover = new Cover(cover.getStack(), placementMode == CoverPlacementMode.HOLLOW_ON_FACE ? CoverType.HOLLOW : (placementMode == CoverPlacementMode.HOLLOW_MEDIUM_ON_FACE ? CoverType.HOLLOW_MEDIUM : CoverType.HOLLOW_LARGE));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
covers.put(facing, cover);
|
covers.put(facing, cover);
|
||||||
|
|||||||
@@ -5,13 +5,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
|
|
||||||
public enum CoverType {
|
public enum CoverType {
|
||||||
NORMAL,
|
NORMAL,
|
||||||
HOLLOW,
|
HOLLOW;
|
||||||
HOLLOW_MEDIUM,
|
|
||||||
HOLLOW_LARGE;
|
|
||||||
|
|
||||||
public boolean isHollow() {
|
|
||||||
return this == HOLLOW || this == HOLLOW_MEDIUM || this == HOLLOW_LARGE;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack createStack() {
|
public ItemStack createStack() {
|
||||||
return new ItemStack(this == NORMAL ? RSItems.COVER : RSItems.HOLLOW_COVER);
|
return new ItemStack(this == NORMAL ? RSItems.COVER : RSItems.HOLLOW_COVER);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType;
|
||||||
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
|
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
|
||||||
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo;
|
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo;
|
||||||
import com.raoulvdberge.refinedstorage.block.property.PropertyObject;
|
import com.raoulvdberge.refinedstorage.block.property.PropertyObject;
|
||||||
@@ -149,7 +150,7 @@ public class BlockCable extends BlockNode {
|
|||||||
if (node instanceof ICoverable) {
|
if (node instanceof ICoverable) {
|
||||||
Cover cover = ((ICoverable) node).getCoverManager().getCover(direction);
|
Cover cover = ((ICoverable) node).getCoverManager().getCover(direction);
|
||||||
|
|
||||||
if (cover != null && !cover.getType().isHollow()) {
|
if (cover != null && cover.getType() != CoverType.HOLLOW) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -159,7 +160,7 @@ public class BlockCable extends BlockNode {
|
|||||||
if (otherTile instanceof TileNode && ((TileNode) otherTile).getNode() instanceof ICoverable) {
|
if (otherTile instanceof TileNode && ((TileNode) otherTile).getNode() instanceof ICoverable) {
|
||||||
Cover cover = ((ICoverable) ((TileNode) otherTile).getNode()).getCoverManager().getCover(direction.getOpposite());
|
Cover cover = ((ICoverable) ((TileNode) otherTile).getNode()).getCoverManager().getCover(direction.getOpposite());
|
||||||
|
|
||||||
if (cover != null && !cover.getType().isHollow()) {
|
if (cover != null && cover.getType() != CoverType.HOLLOW) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -244,7 +245,7 @@ public class BlockCable extends BlockNode {
|
|||||||
coverEast != null ? 14 : 16, coverUp != null ? 14 : 16, 2
|
coverEast != null ? 14 : 16, coverUp != null ? 14 : 16, 2
|
||||||
)));
|
)));
|
||||||
|
|
||||||
if (!coverNorth.getType().isHollow()) {
|
if (coverNorth.getType() != CoverType.HOLLOW) {
|
||||||
groups.add(ConstantsCable.HOLDER_NORTH);
|
groups.add(ConstantsCable.HOLDER_NORTH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,7 +256,7 @@ public class BlockCable extends BlockNode {
|
|||||||
16, coverUp != null ? 14 : 16, 16
|
16, coverUp != null ? 14 : 16, 16
|
||||||
)));
|
)));
|
||||||
|
|
||||||
if (!coverEast.getType().isHollow()) {
|
if (coverEast.getType() != CoverType.HOLLOW) {
|
||||||
groups.add(ConstantsCable.HOLDER_EAST);
|
groups.add(ConstantsCable.HOLDER_EAST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -266,7 +267,7 @@ public class BlockCable extends BlockNode {
|
|||||||
coverWest != null ? 2 : 0, coverUp != null ? 14 : 16, 14
|
coverWest != null ? 2 : 0, coverUp != null ? 14 : 16, 14
|
||||||
)));
|
)));
|
||||||
|
|
||||||
if (!coverSouth.getType().isHollow()) {
|
if (coverSouth.getType() != CoverType.HOLLOW) {
|
||||||
groups.add(ConstantsCable.HOLDER_SOUTH);
|
groups.add(ConstantsCable.HOLDER_SOUTH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -277,7 +278,7 @@ public class BlockCable extends BlockNode {
|
|||||||
2, coverUp != null ? 14 : 16, 16
|
2, coverUp != null ? 14 : 16, 16
|
||||||
)));
|
)));
|
||||||
|
|
||||||
if (!coverWest.getType().isHollow()) {
|
if (coverWest.getType() != CoverType.HOLLOW) {
|
||||||
groups.add(ConstantsCable.HOLDER_WEST);
|
groups.add(ConstantsCable.HOLDER_WEST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,7 +289,7 @@ public class BlockCable extends BlockNode {
|
|||||||
16, 16, 16
|
16, 16, 16
|
||||||
)));
|
)));
|
||||||
|
|
||||||
if (!coverUp.getType().isHollow()) {
|
if (coverUp.getType() != CoverType.HOLLOW) {
|
||||||
groups.add(ConstantsCable.HOLDER_UP);
|
groups.add(ConstantsCable.HOLDER_UP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -299,7 +300,7 @@ public class BlockCable extends BlockNode {
|
|||||||
16, 2, 16
|
16, 2, 16
|
||||||
)));
|
)));
|
||||||
|
|
||||||
if (!coverDown.getType().isHollow()) {
|
if (coverDown.getType() != CoverType.HOLLOW) {
|
||||||
groups.add(ConstantsCable.HOLDER_DOWN);
|
groups.add(ConstantsCable.HOLDER_DOWN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,20 @@
|
|||||||
package com.raoulvdberge.refinedstorage.render.collision.constants;
|
package com.raoulvdberge.refinedstorage.render.collision.constants;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
|
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.CollisionUtils;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public final class ConstantsCable {
|
public final class ConstantsCable {
|
||||||
public static final CollisionGroup CORE = new CollisionGroup().addItem(getBounds(6, 6, 6, 10, 10, 10));
|
public static final CollisionGroup CORE = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 6, 6, 10, 10, 10));
|
||||||
public static final CollisionGroup NORTH = new CollisionGroup().addItem(getBounds(6, 6, 0, 10, 10, 6));
|
public static final CollisionGroup NORTH = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 6, 0, 10, 10, 6));
|
||||||
public static final CollisionGroup EAST = new CollisionGroup().addItem(getBounds(10, 6, 6, 16, 10, 10));
|
public static final CollisionGroup EAST = new CollisionGroup().addItem(CollisionUtils.getBounds(10, 6, 6, 16, 10, 10));
|
||||||
public static final CollisionGroup SOUTH = new CollisionGroup().addItem(getBounds(6, 6, 10, 10, 10, 16));
|
public static final CollisionGroup SOUTH = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 6, 10, 10, 10, 16));
|
||||||
public static final CollisionGroup WEST = new CollisionGroup().addItem(getBounds(0, 6, 6, 6, 10, 10));
|
public static final CollisionGroup WEST = new CollisionGroup().addItem(CollisionUtils.getBounds(0, 6, 6, 6, 10, 10));
|
||||||
public static final CollisionGroup UP = new CollisionGroup().addItem(getBounds(6, 10, 6, 10, 16, 10));
|
public static final CollisionGroup UP = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 10, 6, 10, 16, 10));
|
||||||
public static final CollisionGroup DOWN = new CollisionGroup().addItem(getBounds(6, 0, 6, 10, 6, 10));
|
public static final CollisionGroup DOWN = new CollisionGroup().addItem(CollisionUtils.getBounds(6, 0, 6, 10, 6, 10));
|
||||||
|
|
||||||
public static final CollisionGroup HOLDER_NORTH = new CollisionGroup().addItem(getHolderBounds(EnumFacing.NORTH));
|
public static final CollisionGroup HOLDER_NORTH = new CollisionGroup().addItem(getHolderBounds(EnumFacing.NORTH));
|
||||||
public static final CollisionGroup HOLDER_EAST = new CollisionGroup().addItem(getHolderBounds(EnumFacing.EAST));
|
public static final CollisionGroup HOLDER_EAST = new CollisionGroup().addItem(getHolderBounds(EnumFacing.EAST));
|
||||||
@@ -22,26 +23,21 @@ public final class ConstantsCable {
|
|||||||
public static final CollisionGroup HOLDER_UP = new CollisionGroup().addItem(getHolderBounds(EnumFacing.UP));
|
public static final CollisionGroup HOLDER_UP = new CollisionGroup().addItem(getHolderBounds(EnumFacing.UP));
|
||||||
public static final CollisionGroup HOLDER_DOWN = new CollisionGroup().addItem(getHolderBounds(EnumFacing.DOWN));
|
public static final CollisionGroup HOLDER_DOWN = new CollisionGroup().addItem(getHolderBounds(EnumFacing.DOWN));
|
||||||
|
|
||||||
|
|
||||||
public static AxisAlignedBB getBounds(int fromX, int fromY, int fromZ, int toX, int toY, int toZ) {
|
|
||||||
return new AxisAlignedBB((float) fromX / 16F, (float) fromY / 16F, (float) fromZ / 16F, (float) toX / 16F, (float) toY / 16F, (float) toZ / 16F);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public static AxisAlignedBB getCoverBounds(EnumFacing side) {
|
public static AxisAlignedBB getCoverBounds(EnumFacing side) {
|
||||||
switch (side) {
|
switch (side) {
|
||||||
case DOWN:
|
case DOWN:
|
||||||
return getBounds(0, 0, 0, 16, 2, 16);
|
return CollisionUtils.getBounds(0, 0, 0, 16, 2, 16);
|
||||||
case UP:
|
case UP:
|
||||||
return getBounds(0, 14, 0, 16, 16, 16);
|
return CollisionUtils.getBounds(0, 14, 0, 16, 16, 16);
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return getBounds(0, 0, 0, 16, 16, 2);
|
return CollisionUtils.getBounds(0, 0, 0, 16, 16, 2);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return getBounds(0, 0, 14, 16, 16, 16);
|
return CollisionUtils.getBounds(0, 0, 14, 16, 16, 16);
|
||||||
case WEST:
|
case WEST:
|
||||||
return getBounds(0, 0, 0, 2, 16, 16);
|
return CollisionUtils.getBounds(0, 0, 0, 2, 16, 16);
|
||||||
case EAST:
|
case EAST:
|
||||||
return getBounds(14, 0, 0, 16, 16, 16);
|
return CollisionUtils.getBounds(14, 0, 0, 16, 16, 16);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -51,17 +47,17 @@ public final class ConstantsCable {
|
|||||||
public static AxisAlignedBB getHolderBounds(EnumFacing side) {
|
public static AxisAlignedBB getHolderBounds(EnumFacing side) {
|
||||||
switch (side) {
|
switch (side) {
|
||||||
case DOWN:
|
case DOWN:
|
||||||
return getBounds(7, 2, 7, 9, 6, 9);
|
return CollisionUtils.getBounds(7, 2, 7, 9, 6, 9);
|
||||||
case UP:
|
case UP:
|
||||||
return getBounds(7, 10, 7, 9, 14, 9);
|
return CollisionUtils.getBounds(7, 10, 7, 9, 14, 9);
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return getBounds(7, 7, 2, 9, 9, 6);
|
return CollisionUtils.getBounds(7, 7, 2, 9, 9, 6);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return getBounds(7, 7, 10, 9, 9, 14);
|
return CollisionUtils.getBounds(7, 7, 10, 9, 9, 14);
|
||||||
case WEST:
|
case WEST:
|
||||||
return getBounds(2, 7, 7, 6, 9, 9);
|
return CollisionUtils.getBounds(2, 7, 7, 6, 9, 9);
|
||||||
case EAST:
|
case EAST:
|
||||||
return getBounds(10, 7, 7, 14, 9, 9);
|
return CollisionUtils.getBounds(10, 7, 7, 14, 9, 9);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.raoulvdberge.refinedstorage.render.model.baked;
|
package com.raoulvdberge.refinedstorage.render.model.baked;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||||
|
import com.raoulvdberge.refinedstorage.block.BlockBase;
|
||||||
import com.raoulvdberge.refinedstorage.block.BlockCable;
|
import com.raoulvdberge.refinedstorage.block.BlockCable;
|
||||||
import com.raoulvdberge.refinedstorage.render.CubeBuilder;
|
import com.raoulvdberge.refinedstorage.render.CubeBuilder;
|
||||||
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
|
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
|
||||||
@@ -39,26 +41,40 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
List<BakedQuad> quads = new ArrayList<>(base.getQuads(state, side, rand));
|
List<BakedQuad> quads = new ArrayList<>(base.getQuads(state, side, rand));
|
||||||
|
|
||||||
if (state != null) {
|
if (state != null) {
|
||||||
IExtendedBlockState s = (IExtendedBlockState) state;
|
IExtendedBlockState extendedState = (IExtendedBlockState) state;
|
||||||
|
|
||||||
boolean hasUp = s.getValue(BlockCable.COVER_UP) != null;
|
addCover(quads, extendedState.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, extendedState, true);
|
||||||
boolean hasDown = s.getValue(BlockCable.COVER_DOWN) != null;
|
addCover(quads, extendedState.getValue(BlockCable.COVER_SOUTH), EnumFacing.SOUTH, side, rand, extendedState, true);
|
||||||
|
addCover(quads, extendedState.getValue(BlockCable.COVER_EAST), EnumFacing.EAST, side, rand, extendedState, true);
|
||||||
boolean hasEast = s.getValue(BlockCable.COVER_EAST) != null;
|
addCover(quads, extendedState.getValue(BlockCable.COVER_WEST), EnumFacing.WEST, side, rand, extendedState, true);
|
||||||
boolean hasWest = s.getValue(BlockCable.COVER_WEST) != null;
|
addCover(quads, extendedState.getValue(BlockCable.COVER_DOWN), EnumFacing.DOWN, side, rand, extendedState, true);
|
||||||
|
addCover(quads, extendedState.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, extendedState, true);
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_SOUTH), EnumFacing.SOUTH, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_EAST), EnumFacing.EAST, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_WEST), EnumFacing.WEST, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_DOWN), EnumFacing.DOWN, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return quads;
|
return quads;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void addCover(List<BakedQuad> quads, @Nullable Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) {
|
private static int getHollowCoverSize(@Nullable IBlockState state, EnumFacing coverSide) {
|
||||||
|
if (state == null) {
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockBase block = (BlockBase) state.getBlock();
|
||||||
|
|
||||||
|
if (block.getDirection() != null && state.getValue(block.getDirection().getProperty()) == coverSide) {
|
||||||
|
if (block == RSBlocks.CABLE || block == RSBlocks.EXPORTER) {
|
||||||
|
return 6;
|
||||||
|
} else if (block == RSBlocks.EXTERNAL_STORAGE || block == RSBlocks.IMPORTER) {
|
||||||
|
return 3;
|
||||||
|
} else if (block == RSBlocks.CONSTRUCTOR || block == RSBlocks.DESTRUCTOR || block == RSBlocks.READER || block == RSBlocks.WRITER) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void addCover(List<BakedQuad> quads, @Nullable Cover cover, EnumFacing coverSide, EnumFacing side, long rand, @Nullable IExtendedBlockState state, boolean handle) {
|
||||||
if (cover == null) {
|
if (cover == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -69,6 +85,15 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean hasUp = false, hasDown = false, hasEast = false, hasWest = false;
|
||||||
|
|
||||||
|
if (state != null) {
|
||||||
|
hasUp = state.getValue(BlockCable.COVER_UP) != null;
|
||||||
|
hasDown = state.getValue(BlockCable.COVER_DOWN) != null;
|
||||||
|
hasEast = state.getValue(BlockCable.COVER_EAST) != null;
|
||||||
|
hasWest = state.getValue(BlockCable.COVER_WEST) != null;
|
||||||
|
}
|
||||||
|
|
||||||
TextureAtlasSprite sprite = RenderUtils.getSprite(Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState), coverState, side, rand);
|
TextureAtlasSprite sprite = RenderUtils.getSprite(Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState), coverState, side, rand);
|
||||||
|
|
||||||
switch (cover.getType()) {
|
switch (cover.getType()) {
|
||||||
@@ -76,13 +101,7 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle);
|
addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle);
|
||||||
break;
|
break;
|
||||||
case HOLLOW:
|
case HOLLOW:
|
||||||
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, 6);
|
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, getHollowCoverSize(state, coverSide));
|
||||||
break;
|
|
||||||
case HOLLOW_MEDIUM:
|
|
||||||
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, 3);
|
|
||||||
break;
|
|
||||||
case HOLLOW_LARGE:
|
|
||||||
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, 2);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ public class BakedModelCover extends BakedModelCableCover {
|
|||||||
public List<BakedQuad> load(CacheKey key) {
|
public List<BakedQuad> load(CacheKey key) {
|
||||||
List<BakedQuad> quads = new ArrayList<>();
|
List<BakedQuad> quads = new ArrayList<>();
|
||||||
|
|
||||||
addCover(quads, new Cover(key.stack, key.type), EnumFacing.NORTH, key.side, 0, false, false, false, false, false);
|
addCover(quads, new Cover(key.stack, key.type), EnumFacing.NORTH, key.side, 0, null, false);
|
||||||
|
|
||||||
return quads;
|
return quads;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user