Introduce new cube builder, rename "hollow cover" to "hollow wide cover".
This commit is contained in:
@@ -22,5 +22,5 @@ public final class RSItems {
|
|||||||
public static final ItemSecurityCard SECURITY_CARD = new ItemSecurityCard();
|
public static final ItemSecurityCard SECURITY_CARD = new ItemSecurityCard();
|
||||||
public static final ItemCuttingTool CUTTING_TOOL = new ItemCuttingTool();
|
public static final ItemCuttingTool CUTTING_TOOL = new ItemCuttingTool();
|
||||||
public static final ItemCover COVER = new ItemCover();
|
public static final ItemCover COVER = new ItemCover();
|
||||||
public static final ItemHollowCover HOLLOW_COVER = new ItemHollowCover();
|
public static final ItemHollowWideCover HOLLOW_WIDE_COVER = new ItemHollowWideCover();
|
||||||
}
|
}
|
||||||
|
@@ -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, CoverManager.CoverPlacementMode.HOLLOW_WIDE_ON_FACE);
|
||||||
|
|
||||||
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_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_WIDE_ON_FACE);
|
||||||
|
|
||||||
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_ON_FACE);
|
private CoverManager coverManager = new CoverManager(this, CoverManager.CoverPlacementMode.HOLLOW_WIDE_ON_FACE);
|
||||||
|
|
||||||
private int currentSlot;
|
private int currentSlot;
|
||||||
|
|
||||||
|
@@ -4,18 +4,18 @@ import net.minecraft.item.ItemStack;
|
|||||||
|
|
||||||
public class Cover {
|
public class Cover {
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
private boolean hollow;
|
private CoverType type;
|
||||||
|
|
||||||
public Cover(ItemStack stack, boolean hollow) {
|
public Cover(ItemStack stack, CoverType type) {
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.hollow = hollow;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getStack() {
|
public ItemStack getStack() {
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isHollow() {
|
public CoverType getType() {
|
||||||
return hollow;
|
return type;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node.cover;
|
package com.raoulvdberge.refinedstorage.apiimpl.network.node.cover;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSItems;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
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;
|
||||||
@@ -28,12 +27,12 @@ public class CoverManager {
|
|||||||
public enum CoverPlacementMode {
|
public enum CoverPlacementMode {
|
||||||
ALLOW_ALL,
|
ALLOW_ALL,
|
||||||
NONE_ON_FACE,
|
NONE_ON_FACE,
|
||||||
HOLLOW_ON_FACE
|
HOLLOW_WIDE_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_HOLLOW = "Hollow";
|
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;
|
||||||
@@ -46,7 +45,7 @@ public class CoverManager {
|
|||||||
|
|
||||||
public boolean canConduct(EnumFacing direction) {
|
public boolean canConduct(EnumFacing direction) {
|
||||||
Cover cover = getCover(direction);
|
Cover cover = getCover(direction);
|
||||||
if (cover != null && !cover.isHollow()) {
|
if (cover != null && !cover.getType().isHollow()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +53,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.isHollow()) {
|
if (cover != null && !cover.getType().isHollow()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -79,8 +78,8 @@ public class CoverManager {
|
|||||||
break;
|
break;
|
||||||
case NONE_ON_FACE:
|
case NONE_ON_FACE:
|
||||||
return false;
|
return false;
|
||||||
case HOLLOW_ON_FACE:
|
case HOLLOW_WIDE_ON_FACE:
|
||||||
if (!cover.isHollow()) {
|
if (cover.getType() != CoverType.HOLLOW_WIDE) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -108,10 +107,10 @@ public class CoverManager {
|
|||||||
if (tag.hasKey(NBT_DIRECTION) && tag.hasKey(NBT_ITEM)) {
|
if (tag.hasKey(NBT_DIRECTION) && tag.hasKey(NBT_ITEM)) {
|
||||||
EnumFacing direction = EnumFacing.getFront(tag.getInteger(NBT_DIRECTION));
|
EnumFacing direction = EnumFacing.getFront(tag.getInteger(NBT_DIRECTION));
|
||||||
ItemStack item = new ItemStack(tag.getCompoundTag(NBT_ITEM));
|
ItemStack item = new ItemStack(tag.getCompoundTag(NBT_ITEM));
|
||||||
boolean hollow = tag.hasKey(NBT_HOLLOW) && tag.getBoolean(NBT_HOLLOW);
|
int type = tag.hasKey(NBT_TYPE) ? tag.getInteger(NBT_TYPE) : 0;
|
||||||
|
|
||||||
if (isValidCover(item)) {
|
if (isValidCover(item)) {
|
||||||
covers.put(direction, new Cover(item, hollow));
|
covers.put(direction, new Cover(item, CoverType.values()[type]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -125,7 +124,7 @@ public class CoverManager {
|
|||||||
|
|
||||||
tag.setInteger(NBT_DIRECTION, entry.getKey().ordinal());
|
tag.setInteger(NBT_DIRECTION, entry.getKey().ordinal());
|
||||||
tag.setTag(NBT_ITEM, entry.getValue().getStack().serializeNBT());
|
tag.setTag(NBT_ITEM, entry.getValue().getStack().serializeNBT());
|
||||||
tag.setBoolean(NBT_HOLLOW, entry.getValue().isHollow());
|
tag.setInteger(NBT_TYPE, entry.getValue().getType().ordinal());
|
||||||
|
|
||||||
list.appendTag(tag);
|
list.appendTag(tag);
|
||||||
}
|
}
|
||||||
@@ -139,7 +138,7 @@ public class CoverManager {
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
for (Map.Entry<EnumFacing, Cover> entry : covers.entrySet()) {
|
for (Map.Entry<EnumFacing, Cover> entry : covers.entrySet()) {
|
||||||
ItemStack cover = new ItemStack(entry.getValue().isHollow() ? RSItems.HOLLOW_COVER : RSItems.COVER);
|
ItemStack cover = entry.getValue().getType().createStack();
|
||||||
|
|
||||||
ItemCover.setItem(cover, entry.getValue().getStack());
|
ItemCover.setItem(cover, entry.getValue().getStack());
|
||||||
|
|
||||||
|
@@ -0,0 +1,18 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.apiimpl.network.node.cover;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RSItems;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public enum CoverType {
|
||||||
|
NORMAL,
|
||||||
|
HOLLOW,
|
||||||
|
HOLLOW_WIDE;
|
||||||
|
|
||||||
|
public boolean isHollow() {
|
||||||
|
return this == HOLLOW || this == HOLLOW_WIDE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack createStack() {
|
||||||
|
return new ItemStack(this == NORMAL ? RSItems.COVER : RSItems.HOLLOW_WIDE_COVER);
|
||||||
|
}
|
||||||
|
}
|
@@ -5,6 +5,7 @@ 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.capability.CapabilityNetworkNodeProxy;
|
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileCable;
|
import com.raoulvdberge.refinedstorage.tile.TileCable;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileNode;
|
import com.raoulvdberge.refinedstorage.tile.TileNode;
|
||||||
@@ -38,21 +39,6 @@ public class BlockCable extends BlockNode {
|
|||||||
public static final PropertyObject<Cover> COVER_UP = new PropertyObject<>("cover_up", Cover.class);
|
public static final PropertyObject<Cover> COVER_UP = new PropertyObject<>("cover_up", Cover.class);
|
||||||
public static final PropertyObject<Cover> COVER_DOWN = new PropertyObject<>("cover_down", Cover.class);
|
public static final PropertyObject<Cover> COVER_DOWN = new PropertyObject<>("cover_down", Cover.class);
|
||||||
|
|
||||||
public static final AxisAlignedBB HOLDER_NORTH_AABB = RenderUtils.getBounds(7, 7, 2, 9, 9, 6);
|
|
||||||
public static final AxisAlignedBB HOLDER_EAST_AABB = RenderUtils.getBounds(10, 7, 7, 14, 9, 9);
|
|
||||||
public static final AxisAlignedBB HOLDER_SOUTH_AABB = RenderUtils.getBounds(7, 7, 10, 9, 9, 14);
|
|
||||||
public static final AxisAlignedBB HOLDER_WEST_AABB = RenderUtils.getBounds(2, 7, 7, 6, 9, 9);
|
|
||||||
public static final AxisAlignedBB HOLDER_UP_AABB = RenderUtils.getBounds(7, 10, 7, 9, 14, 9);
|
|
||||||
public static final AxisAlignedBB HOLDER_DOWN_AABB = RenderUtils.getBounds(7, 2, 7, 9, 6, 9);
|
|
||||||
|
|
||||||
public static final AxisAlignedBB CORE_AABB = RenderUtils.getBounds(6, 6, 6, 10, 10, 10);
|
|
||||||
private static final AxisAlignedBB NORTH_AABB = RenderUtils.getBounds(6, 6, 0, 10, 10, 6);
|
|
||||||
private static final AxisAlignedBB EAST_AABB = RenderUtils.getBounds(10, 6, 6, 16, 10, 10);
|
|
||||||
private static final AxisAlignedBB SOUTH_AABB = RenderUtils.getBounds(6, 6, 10, 10, 10, 16);
|
|
||||||
private static final AxisAlignedBB WEST_AABB = RenderUtils.getBounds(0, 6, 6, 6, 10, 10);
|
|
||||||
private static final AxisAlignedBB UP_AABB = RenderUtils.getBounds(6, 10, 6, 10, 16, 10);
|
|
||||||
private static final AxisAlignedBB DOWN_AABB = RenderUtils.getBounds(6, 0, 6, 10, 6, 10);
|
|
||||||
|
|
||||||
protected static final PropertyBool NORTH = PropertyBool.create("north");
|
protected static final PropertyBool NORTH = PropertyBool.create("north");
|
||||||
protected static final PropertyBool EAST = PropertyBool.create("east");
|
protected static final PropertyBool EAST = PropertyBool.create("east");
|
||||||
protected static final PropertyBool SOUTH = PropertyBool.create("south");
|
protected static final PropertyBool SOUTH = PropertyBool.create("south");
|
||||||
@@ -139,7 +125,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.isHollow()) {
|
if (cover != null && !cover.getType().isHollow()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -149,7 +135,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.isHollow()) {
|
if (cover != null && !cover.getType().isHollow()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -170,13 +156,13 @@ public class BlockCable extends BlockNode {
|
|||||||
protected boolean hitCablePart(IBlockState state, World world, BlockPos pos, float hitX, float hitY, float hitZ) {
|
protected boolean hitCablePart(IBlockState state, World world, BlockPos pos, float hitX, float hitY, float hitZ) {
|
||||||
state = getActualState(state, world, pos);
|
state = getActualState(state, world, pos);
|
||||||
|
|
||||||
if ((RenderUtils.isInBounds(CORE_AABB, hitX, hitY, hitZ)) ||
|
if ((RenderUtils.isInBounds(ConstantsCable.CORE_AABB, hitX, hitY, hitZ)) ||
|
||||||
(state.getValue(NORTH) && RenderUtils.isInBounds(NORTH_AABB, hitX, hitY, hitZ)) ||
|
(state.getValue(NORTH) && RenderUtils.isInBounds(ConstantsCable.NORTH_AABB, hitX, hitY, hitZ)) ||
|
||||||
(state.getValue(EAST) && RenderUtils.isInBounds(EAST_AABB, hitX, hitY, hitZ)) ||
|
(state.getValue(EAST) && RenderUtils.isInBounds(ConstantsCable.EAST_AABB, hitX, hitY, hitZ)) ||
|
||||||
(state.getValue(SOUTH) && RenderUtils.isInBounds(SOUTH_AABB, hitX, hitY, hitZ)) ||
|
(state.getValue(SOUTH) && RenderUtils.isInBounds(ConstantsCable.SOUTH_AABB, hitX, hitY, hitZ)) ||
|
||||||
(state.getValue(WEST) && RenderUtils.isInBounds(WEST_AABB, hitX, hitY, hitZ)) ||
|
(state.getValue(WEST) && RenderUtils.isInBounds(ConstantsCable.WEST_AABB, hitX, hitY, hitZ)) ||
|
||||||
(state.getValue(UP) && RenderUtils.isInBounds(UP_AABB, hitX, hitY, hitZ)) ||
|
(state.getValue(UP) && RenderUtils.isInBounds(ConstantsCable.UP_AABB, hitX, hitY, hitZ)) ||
|
||||||
(state.getValue(DOWN) && RenderUtils.isInBounds(DOWN_AABB, hitX, hitY, hitZ))) {
|
(state.getValue(DOWN) && RenderUtils.isInBounds(ConstantsCable.DOWN_AABB, hitX, hitY, hitZ))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,30 +180,30 @@ public class BlockCable extends BlockNode {
|
|||||||
public List<AxisAlignedBB> getCombinedCollisionBoxes(IBlockState state) {
|
public List<AxisAlignedBB> getCombinedCollisionBoxes(IBlockState state) {
|
||||||
List<AxisAlignedBB> boxes = new ArrayList<>();
|
List<AxisAlignedBB> boxes = new ArrayList<>();
|
||||||
|
|
||||||
boxes.add(CORE_AABB);
|
boxes.add(ConstantsCable.CORE_AABB);
|
||||||
|
|
||||||
if (state.getValue(NORTH)) {
|
if (state.getValue(NORTH)) {
|
||||||
boxes.add(NORTH_AABB);
|
boxes.add(ConstantsCable.NORTH_AABB);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.getValue(EAST)) {
|
if (state.getValue(EAST)) {
|
||||||
boxes.add(EAST_AABB);
|
boxes.add(ConstantsCable.EAST_AABB);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.getValue(SOUTH)) {
|
if (state.getValue(SOUTH)) {
|
||||||
boxes.add(SOUTH_AABB);
|
boxes.add(ConstantsCable.SOUTH_AABB);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.getValue(WEST)) {
|
if (state.getValue(WEST)) {
|
||||||
boxes.add(WEST_AABB);
|
boxes.add(ConstantsCable.WEST_AABB);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.getValue(UP)) {
|
if (state.getValue(UP)) {
|
||||||
boxes.add(UP_AABB);
|
boxes.add(ConstantsCable.UP_AABB);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.getValue(DOWN)) {
|
if (state.getValue(DOWN)) {
|
||||||
boxes.add(DOWN_AABB);
|
boxes.add(ConstantsCable.DOWN_AABB);
|
||||||
}
|
}
|
||||||
|
|
||||||
return boxes;
|
return boxes;
|
||||||
@@ -246,8 +232,8 @@ 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.isHollow()) {
|
if (!coverNorth.getType().isHollow()) {
|
||||||
boxes.add(HOLDER_NORTH_AABB);
|
boxes.add(ConstantsCable.HOLDER_NORTH_AABB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,8 +243,8 @@ public class BlockCable extends BlockNode {
|
|||||||
16, coverUp != null ? 14 : 16, 16
|
16, coverUp != null ? 14 : 16, 16
|
||||||
));
|
));
|
||||||
|
|
||||||
if (!coverEast.isHollow()) {
|
if (!coverEast.getType().isHollow()) {
|
||||||
boxes.add(HOLDER_EAST_AABB);
|
boxes.add(ConstantsCable.HOLDER_EAST_AABB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,8 +254,8 @@ 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.isHollow()) {
|
if (!coverSouth.getType().isHollow()) {
|
||||||
boxes.add(HOLDER_SOUTH_AABB);
|
boxes.add(ConstantsCable.HOLDER_SOUTH_AABB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,8 +265,8 @@ public class BlockCable extends BlockNode {
|
|||||||
2, coverUp != null ? 14 : 16, 16
|
2, coverUp != null ? 14 : 16, 16
|
||||||
));
|
));
|
||||||
|
|
||||||
if (!coverWest.isHollow()) {
|
if (!coverWest.getType().isHollow()) {
|
||||||
boxes.add(HOLDER_WEST_AABB);
|
boxes.add(ConstantsCable.HOLDER_WEST_AABB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,8 +276,8 @@ public class BlockCable extends BlockNode {
|
|||||||
16, 16, 16
|
16, 16, 16
|
||||||
));
|
));
|
||||||
|
|
||||||
if (!coverUp.isHollow()) {
|
if (!coverUp.getType().isHollow()) {
|
||||||
boxes.add(HOLDER_UP_AABB);
|
boxes.add(ConstantsCable.HOLDER_UP_AABB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -301,8 +287,8 @@ public class BlockCable extends BlockNode {
|
|||||||
16, 2, 16
|
16, 2, 16
|
||||||
));
|
));
|
||||||
|
|
||||||
if (!coverDown.isHollow()) {
|
if (!coverDown.getType().isHollow()) {
|
||||||
boxes.add(HOLDER_DOWN_AABB);
|
boxes.add(ConstantsCable.HOLDER_DOWN_AABB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,9 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsConstructor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileConstructor;
|
import com.raoulvdberge.refinedstorage.tile.TileConstructor;
|
||||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
@@ -16,13 +17,6 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class BlockConstructor extends BlockCable {
|
public class BlockConstructor extends BlockCable {
|
||||||
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() {
|
public BlockConstructor() {
|
||||||
super("constructor");
|
super("constructor");
|
||||||
}
|
}
|
||||||
@@ -33,28 +27,28 @@ public class BlockConstructor extends BlockCable {
|
|||||||
|
|
||||||
switch (state.getValue(getDirection().getProperty())) {
|
switch (state.getValue(getDirection().getProperty())) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
boxes.add(HOLDER_NORTH_AABB);
|
boxes.add(ConstantsCable.HOLDER_NORTH_AABB);
|
||||||
boxes.add(HEAD_NORTH_AABB);
|
boxes.add(ConstantsConstructor.HEAD_NORTH_AABB);
|
||||||
break;
|
break;
|
||||||
case EAST:
|
case EAST:
|
||||||
boxes.add(HOLDER_EAST_AABB);
|
boxes.add(ConstantsCable.HOLDER_EAST_AABB);
|
||||||
boxes.add(HEAD_EAST_AABB);
|
boxes.add(ConstantsConstructor.HEAD_EAST_AABB);
|
||||||
break;
|
break;
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
boxes.add(HOLDER_SOUTH_AABB);
|
boxes.add(ConstantsCable.HOLDER_SOUTH_AABB);
|
||||||
boxes.add(HEAD_SOUTH_AABB);
|
boxes.add(ConstantsConstructor.HEAD_SOUTH_AABB);
|
||||||
break;
|
break;
|
||||||
case WEST:
|
case WEST:
|
||||||
boxes.add(HOLDER_WEST_AABB);
|
boxes.add(ConstantsCable.HOLDER_WEST_AABB);
|
||||||
boxes.add(HEAD_WEST_AABB);
|
boxes.add(ConstantsConstructor.HEAD_WEST_AABB);
|
||||||
break;
|
break;
|
||||||
case UP:
|
case UP:
|
||||||
boxes.add(HOLDER_UP_AABB);
|
boxes.add(ConstantsCable.HOLDER_UP_AABB);
|
||||||
boxes.add(HEAD_UP_AABB);
|
boxes.add(ConstantsConstructor.HEAD_UP_AABB);
|
||||||
break;
|
break;
|
||||||
case DOWN:
|
case DOWN:
|
||||||
boxes.add(HOLDER_DOWN_AABB);
|
boxes.add(ConstantsCable.HOLDER_DOWN_AABB);
|
||||||
boxes.add(HEAD_DOWN_AABB);
|
boxes.add(ConstantsConstructor.HEAD_DOWN_AABB);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDetector;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileDetector;
|
import com.raoulvdberge.refinedstorage.tile.TileDetector;
|
||||||
import net.minecraft.block.properties.PropertyBool;
|
import net.minecraft.block.properties.PropertyBool;
|
||||||
import net.minecraft.block.state.BlockFaceShape;
|
import net.minecraft.block.state.BlockFaceShape;
|
||||||
@@ -19,8 +20,6 @@ import net.minecraft.world.World;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class BlockDetector extends BlockNode {
|
public class BlockDetector extends BlockNode {
|
||||||
private static final AxisAlignedBB AABB_DETECTOR = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 5D / 16D, 1.0D);
|
|
||||||
|
|
||||||
private static final PropertyBool POWERED = PropertyBool.create("powered");
|
private static final PropertyBool POWERED = PropertyBool.create("powered");
|
||||||
|
|
||||||
public BlockDetector() {
|
public BlockDetector() {
|
||||||
@@ -43,7 +42,7 @@ public class BlockDetector extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
|
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
|
||||||
return AABB_DETECTOR;
|
return ConstantsDetector.DETECTOR_AABB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsExporter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileExporter;
|
import com.raoulvdberge.refinedstorage.tile.TileExporter;
|
||||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
@@ -16,25 +16,6 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class BlockExporter extends BlockCable {
|
public class BlockExporter extends BlockCable {
|
||||||
private static final AxisAlignedBB LINE_NORTH_1_AABB = RenderUtils.getBounds(6, 6, 0, 10, 10, 2);
|
|
||||||
private static final AxisAlignedBB LINE_NORTH_2_AABB = RenderUtils.getBounds(5, 5, 2, 11, 11, 4);
|
|
||||||
private static final AxisAlignedBB LINE_NORTH_3_AABB = RenderUtils.getBounds(3, 3, 4, 13, 13, 6);
|
|
||||||
private static final AxisAlignedBB LINE_EAST_1_AABB = RenderUtils.getBounds(14, 6, 6, 16, 10, 10);
|
|
||||||
private static final AxisAlignedBB LINE_EAST_2_AABB = RenderUtils.getBounds(12, 5, 5, 14, 11, 11);
|
|
||||||
private static final AxisAlignedBB LINE_EAST_3_AABB = RenderUtils.getBounds(10, 3, 3, 12, 13, 13);
|
|
||||||
private static final AxisAlignedBB LINE_SOUTH_1_AABB = RenderUtils.getBounds(6, 6, 14, 10, 10, 16);
|
|
||||||
private static final AxisAlignedBB LINE_SOUTH_2_AABB = RenderUtils.getBounds(5, 5, 12, 11, 11, 14);
|
|
||||||
private static final AxisAlignedBB LINE_SOUTH_3_AABB = RenderUtils.getBounds(3, 3, 10, 13, 13, 12);
|
|
||||||
private static final AxisAlignedBB LINE_WEST_1_AABB = RenderUtils.getBounds(0, 6, 6, 2, 10, 10);
|
|
||||||
private static final AxisAlignedBB LINE_WEST_2_AABB = RenderUtils.getBounds(2, 5, 5, 4, 11, 11);
|
|
||||||
private static final AxisAlignedBB LINE_WEST_3_AABB = RenderUtils.getBounds(4, 3, 3, 6, 13, 13);
|
|
||||||
private static final AxisAlignedBB LINE_UP_1_AABB = RenderUtils.getBounds(6, 14, 6, 10, 16, 10);
|
|
||||||
private static final AxisAlignedBB LINE_UP_2_AABB = RenderUtils.getBounds(5, 12, 5, 11, 14, 11);
|
|
||||||
private static final AxisAlignedBB LINE_UP_3_AABB = RenderUtils.getBounds(3, 10, 3, 13, 12, 13);
|
|
||||||
private static final AxisAlignedBB LINE_DOWN_1_AABB = RenderUtils.getBounds(6, 0, 6, 10, 2, 10);
|
|
||||||
private static final AxisAlignedBB LINE_DOWN_2_AABB = RenderUtils.getBounds(5, 2, 5, 11, 4, 11);
|
|
||||||
private static final AxisAlignedBB LINE_DOWN_3_AABB = RenderUtils.getBounds(3, 4, 3, 13, 6, 13);
|
|
||||||
|
|
||||||
public BlockExporter() {
|
public BlockExporter() {
|
||||||
super("exporter");
|
super("exporter");
|
||||||
}
|
}
|
||||||
@@ -45,34 +26,34 @@ public class BlockExporter extends BlockCable {
|
|||||||
|
|
||||||
switch (state.getValue(getDirection().getProperty())) {
|
switch (state.getValue(getDirection().getProperty())) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
boxes.add(LINE_NORTH_1_AABB);
|
boxes.add(ConstantsExporter.LINE_NORTH_1_AABB);
|
||||||
boxes.add(LINE_NORTH_2_AABB);
|
boxes.add(ConstantsExporter.LINE_NORTH_2_AABB);
|
||||||
boxes.add(LINE_NORTH_3_AABB);
|
boxes.add(ConstantsExporter.LINE_NORTH_3_AABB);
|
||||||
break;
|
break;
|
||||||
case EAST:
|
case EAST:
|
||||||
boxes.add(LINE_EAST_1_AABB);
|
boxes.add(ConstantsExporter.LINE_EAST_1_AABB);
|
||||||
boxes.add(LINE_EAST_2_AABB);
|
boxes.add(ConstantsExporter.LINE_EAST_2_AABB);
|
||||||
boxes.add(LINE_EAST_3_AABB);
|
boxes.add(ConstantsExporter.LINE_EAST_3_AABB);
|
||||||
break;
|
break;
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
boxes.add(LINE_SOUTH_1_AABB);
|
boxes.add(ConstantsExporter.LINE_SOUTH_1_AABB);
|
||||||
boxes.add(LINE_SOUTH_2_AABB);
|
boxes.add(ConstantsExporter.LINE_SOUTH_2_AABB);
|
||||||
boxes.add(LINE_SOUTH_3_AABB);
|
boxes.add(ConstantsExporter.LINE_SOUTH_3_AABB);
|
||||||
break;
|
break;
|
||||||
case WEST:
|
case WEST:
|
||||||
boxes.add(LINE_WEST_1_AABB);
|
boxes.add(ConstantsExporter.LINE_WEST_1_AABB);
|
||||||
boxes.add(LINE_WEST_2_AABB);
|
boxes.add(ConstantsExporter.LINE_WEST_2_AABB);
|
||||||
boxes.add(LINE_WEST_3_AABB);
|
boxes.add(ConstantsExporter.LINE_WEST_3_AABB);
|
||||||
break;
|
break;
|
||||||
case UP:
|
case UP:
|
||||||
boxes.add(LINE_UP_1_AABB);
|
boxes.add(ConstantsExporter.LINE_UP_1_AABB);
|
||||||
boxes.add(LINE_UP_2_AABB);
|
boxes.add(ConstantsExporter.LINE_UP_2_AABB);
|
||||||
boxes.add(LINE_UP_3_AABB);
|
boxes.add(ConstantsExporter.LINE_UP_3_AABB);
|
||||||
break;
|
break;
|
||||||
case DOWN:
|
case DOWN:
|
||||||
boxes.add(LINE_DOWN_1_AABB);
|
boxes.add(ConstantsExporter.LINE_DOWN_1_AABB);
|
||||||
boxes.add(LINE_DOWN_2_AABB);
|
boxes.add(ConstantsExporter.LINE_DOWN_2_AABB);
|
||||||
boxes.add(LINE_DOWN_3_AABB);
|
boxes.add(ConstantsExporter.LINE_DOWN_3_AABB);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,8 +2,9 @@ package com.raoulvdberge.refinedstorage.block;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeExternalStorage;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeExternalStorage;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsExternalStorage;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileExternalStorage;
|
import com.raoulvdberge.refinedstorage.tile.TileExternalStorage;
|
||||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
@@ -18,13 +19,6 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class BlockExternalStorage extends BlockCable {
|
public class BlockExternalStorage extends BlockCable {
|
||||||
private static final AxisAlignedBB HEAD_NORTH_AABB = RenderUtils.getBounds(3, 3, 0, 13, 13, 2);
|
|
||||||
private static final AxisAlignedBB HEAD_EAST_AABB = RenderUtils.getBounds(14, 3, 3, 16, 13, 13);
|
|
||||||
private static final AxisAlignedBB HEAD_SOUTH_AABB = RenderUtils.getBounds(3, 3, 14, 13, 13, 16);
|
|
||||||
private static final AxisAlignedBB HEAD_WEST_AABB = RenderUtils.getBounds(0, 3, 3, 2, 13, 13);
|
|
||||||
private static final AxisAlignedBB HEAD_UP_AABB = RenderUtils.getBounds(3, 14, 3, 13, 16, 13);
|
|
||||||
private static final AxisAlignedBB HEAD_DOWN_AABB = RenderUtils.getBounds(3, 0, 3, 13, 2, 13);
|
|
||||||
|
|
||||||
public BlockExternalStorage() {
|
public BlockExternalStorage() {
|
||||||
super("external_storage");
|
super("external_storage");
|
||||||
}
|
}
|
||||||
@@ -35,28 +29,28 @@ public class BlockExternalStorage extends BlockCable {
|
|||||||
|
|
||||||
switch (state.getValue(getDirection().getProperty())) {
|
switch (state.getValue(getDirection().getProperty())) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
boxes.add(HOLDER_NORTH_AABB);
|
boxes.add(ConstantsCable.HOLDER_NORTH_AABB);
|
||||||
boxes.add(HEAD_NORTH_AABB);
|
boxes.add(ConstantsExternalStorage.HEAD_NORTH_AABB);
|
||||||
break;
|
break;
|
||||||
case EAST:
|
case EAST:
|
||||||
boxes.add(HOLDER_EAST_AABB);
|
boxes.add(ConstantsCable.HOLDER_EAST_AABB);
|
||||||
boxes.add(HEAD_EAST_AABB);
|
boxes.add(ConstantsExternalStorage.HEAD_EAST_AABB);
|
||||||
break;
|
break;
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
boxes.add(HOLDER_SOUTH_AABB);
|
boxes.add(ConstantsCable.HOLDER_SOUTH_AABB);
|
||||||
boxes.add(HEAD_SOUTH_AABB);
|
boxes.add(ConstantsExternalStorage.HEAD_SOUTH_AABB);
|
||||||
break;
|
break;
|
||||||
case WEST:
|
case WEST:
|
||||||
boxes.add(HOLDER_WEST_AABB);
|
boxes.add(ConstantsCable.HOLDER_WEST_AABB);
|
||||||
boxes.add(HEAD_WEST_AABB);
|
boxes.add(ConstantsExternalStorage.HEAD_WEST_AABB);
|
||||||
break;
|
break;
|
||||||
case UP:
|
case UP:
|
||||||
boxes.add(HOLDER_UP_AABB);
|
boxes.add(ConstantsCable.HOLDER_UP_AABB);
|
||||||
boxes.add(HEAD_UP_AABB);
|
boxes.add(ConstantsExternalStorage.HEAD_UP_AABB);
|
||||||
break;
|
break;
|
||||||
case DOWN:
|
case DOWN:
|
||||||
boxes.add(HOLDER_DOWN_AABB);
|
boxes.add(ConstantsCable.HOLDER_DOWN_AABB);
|
||||||
boxes.add(HEAD_DOWN_AABB);
|
boxes.add(ConstantsExternalStorage.HEAD_DOWN_AABB);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsImporter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
import com.raoulvdberge.refinedstorage.tile.TileImporter;
|
||||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
@@ -16,25 +16,6 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class BlockImporter extends BlockCable {
|
public class BlockImporter extends BlockCable {
|
||||||
private static final AxisAlignedBB LINE_NORTH_1_AABB = RenderUtils.getBounds(6, 6, 4, 10, 10, 6);
|
|
||||||
private static final AxisAlignedBB LINE_NORTH_2_AABB = RenderUtils.getBounds(5, 5, 2, 11, 11, 4);
|
|
||||||
private static final AxisAlignedBB LINE_NORTH_3_AABB = RenderUtils.getBounds(3, 3, 0, 13, 13, 2);
|
|
||||||
private static final AxisAlignedBB LINE_EAST_1_AABB = RenderUtils.getBounds(10, 6, 6, 12, 10, 10);
|
|
||||||
private static final AxisAlignedBB LINE_EAST_2_AABB = RenderUtils.getBounds(12, 5, 5, 14, 11, 11);
|
|
||||||
private static final AxisAlignedBB LINE_EAST_3_AABB = RenderUtils.getBounds(14, 3, 3, 16, 13, 13);
|
|
||||||
private static final AxisAlignedBB LINE_SOUTH_1_AABB = RenderUtils.getBounds(6, 6, 10, 10, 10, 12);
|
|
||||||
private static final AxisAlignedBB LINE_SOUTH_2_AABB = RenderUtils.getBounds(5, 5, 12, 11, 11, 14);
|
|
||||||
private static final AxisAlignedBB LINE_SOUTH_3_AABB = RenderUtils.getBounds(3, 3, 14, 13, 13, 16);
|
|
||||||
private static final AxisAlignedBB LINE_WEST_1_AABB = RenderUtils.getBounds(4, 6, 6, 6, 10, 10);
|
|
||||||
private static final AxisAlignedBB LINE_WEST_2_AABB = RenderUtils.getBounds(2, 5, 5, 4, 11, 11);
|
|
||||||
private static final AxisAlignedBB LINE_WEST_3_AABB = RenderUtils.getBounds(0, 3, 3, 2, 13, 13);
|
|
||||||
private static final AxisAlignedBB LINE_UP_1_AABB = RenderUtils.getBounds(6, 10, 6, 10, 12, 10);
|
|
||||||
private static final AxisAlignedBB LINE_UP_2_AABB = RenderUtils.getBounds(5, 12, 5, 11, 14, 11);
|
|
||||||
private static final AxisAlignedBB LINE_UP_3_AABB = RenderUtils.getBounds(3, 14, 3, 13, 16, 13);
|
|
||||||
private static final AxisAlignedBB LINE_DOWN_1_AABB = RenderUtils.getBounds(6, 4, 6, 10, 6, 10);
|
|
||||||
private static final AxisAlignedBB LINE_DOWN_2_AABB = RenderUtils.getBounds(5, 2, 5, 11, 4, 11);
|
|
||||||
private static final AxisAlignedBB LINE_DOWN_3_AABB = RenderUtils.getBounds(3, 0, 3, 13, 2, 13);
|
|
||||||
|
|
||||||
public BlockImporter() {
|
public BlockImporter() {
|
||||||
super("importer");
|
super("importer");
|
||||||
}
|
}
|
||||||
@@ -45,34 +26,34 @@ public class BlockImporter extends BlockCable {
|
|||||||
|
|
||||||
switch (state.getValue(getDirection().getProperty())) {
|
switch (state.getValue(getDirection().getProperty())) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
boxes.add(LINE_NORTH_1_AABB);
|
boxes.add(ConstantsImporter.LINE_NORTH_1_AABB);
|
||||||
boxes.add(LINE_NORTH_2_AABB);
|
boxes.add(ConstantsImporter.LINE_NORTH_2_AABB);
|
||||||
boxes.add(LINE_NORTH_3_AABB);
|
boxes.add(ConstantsImporter.LINE_NORTH_3_AABB);
|
||||||
break;
|
break;
|
||||||
case EAST:
|
case EAST:
|
||||||
boxes.add(LINE_EAST_1_AABB);
|
boxes.add(ConstantsImporter.LINE_EAST_1_AABB);
|
||||||
boxes.add(LINE_EAST_2_AABB);
|
boxes.add(ConstantsImporter.LINE_EAST_2_AABB);
|
||||||
boxes.add(LINE_EAST_3_AABB);
|
boxes.add(ConstantsImporter.LINE_EAST_3_AABB);
|
||||||
break;
|
break;
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
boxes.add(LINE_SOUTH_1_AABB);
|
boxes.add(ConstantsImporter.LINE_SOUTH_1_AABB);
|
||||||
boxes.add(LINE_SOUTH_2_AABB);
|
boxes.add(ConstantsImporter.LINE_SOUTH_2_AABB);
|
||||||
boxes.add(LINE_SOUTH_3_AABB);
|
boxes.add(ConstantsImporter.LINE_SOUTH_3_AABB);
|
||||||
break;
|
break;
|
||||||
case WEST:
|
case WEST:
|
||||||
boxes.add(LINE_WEST_1_AABB);
|
boxes.add(ConstantsImporter.LINE_WEST_1_AABB);
|
||||||
boxes.add(LINE_WEST_2_AABB);
|
boxes.add(ConstantsImporter.LINE_WEST_2_AABB);
|
||||||
boxes.add(LINE_WEST_3_AABB);
|
boxes.add(ConstantsImporter.LINE_WEST_3_AABB);
|
||||||
break;
|
break;
|
||||||
case UP:
|
case UP:
|
||||||
boxes.add(LINE_UP_1_AABB);
|
boxes.add(ConstantsImporter.LINE_UP_1_AABB);
|
||||||
boxes.add(LINE_UP_2_AABB);
|
boxes.add(ConstantsImporter.LINE_UP_2_AABB);
|
||||||
boxes.add(LINE_UP_3_AABB);
|
boxes.add(ConstantsImporter.LINE_UP_3_AABB);
|
||||||
break;
|
break;
|
||||||
case DOWN:
|
case DOWN:
|
||||||
boxes.add(LINE_DOWN_1_AABB);
|
boxes.add(ConstantsImporter.LINE_DOWN_1_AABB);
|
||||||
boxes.add(LINE_DOWN_2_AABB);
|
boxes.add(ConstantsImporter.LINE_DOWN_2_AABB);
|
||||||
boxes.add(LINE_DOWN_3_AABB);
|
boxes.add(ConstantsImporter.LINE_DOWN_3_AABB);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.block;
|
|||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid;
|
import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsPortableGrid;
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
|
||||||
import net.minecraft.block.properties.PropertyBool;
|
import net.minecraft.block.properties.PropertyBool;
|
||||||
import net.minecraft.block.properties.PropertyEnum;
|
import net.minecraft.block.properties.PropertyEnum;
|
||||||
@@ -25,8 +26,6 @@ import net.minecraft.world.World;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class BlockPortableGrid extends BlockBase {
|
public class BlockPortableGrid extends BlockBase {
|
||||||
private static final AxisAlignedBB PORTABLE_GRID_AABB = new AxisAlignedBB(0, 0, 0, 1, 13.2F / 16F, 1);
|
|
||||||
|
|
||||||
public static final PropertyEnum TYPE = PropertyEnum.create("type", PortableGridType.class);
|
public static final PropertyEnum TYPE = PropertyEnum.create("type", PortableGridType.class);
|
||||||
public static final PropertyEnum DISK_STATE = PropertyEnum.create("disk_state", PortableGridDiskState.class);
|
public static final PropertyEnum DISK_STATE = PropertyEnum.create("disk_state", PortableGridDiskState.class);
|
||||||
public static final PropertyBool CONNECTED = PropertyBool.create("connected");
|
public static final PropertyBool CONNECTED = PropertyBool.create("connected");
|
||||||
@@ -59,7 +58,7 @@ public class BlockPortableGrid extends BlockBase {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) {
|
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) {
|
||||||
return PORTABLE_GRID_AABB;
|
return ConstantsPortableGrid.PORTABLE_GRID_AABB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.block;
|
package com.raoulvdberge.refinedstorage.block;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsWirelessTransmitter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
|
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.BlockFaceShape;
|
import net.minecraft.block.state.BlockFaceShape;
|
||||||
@@ -23,9 +24,6 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class BlockWirelessTransmitter extends BlockNode {
|
public class BlockWirelessTransmitter extends BlockNode {
|
||||||
// From BlockTorch
|
|
||||||
private static final AxisAlignedBB WIRELESS_TRANSMITTER_AABB = new AxisAlignedBB(0.4000000059604645D, 0.0D, 0.4000000059604645D, 0.6000000238418579D, 0.6000000238418579D, 0.6000000238418579D);
|
|
||||||
|
|
||||||
public BlockWirelessTransmitter() {
|
public BlockWirelessTransmitter() {
|
||||||
super("wireless_transmitter");
|
super("wireless_transmitter");
|
||||||
}
|
}
|
||||||
@@ -57,7 +55,7 @@ public class BlockWirelessTransmitter extends BlockNode {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) {
|
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) {
|
||||||
return WIRELESS_TRANSMITTER_AABB;
|
return ConstantsWirelessTransmitter.WIRELESS_TRANSMITTER_AABB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,7 +20,7 @@ public class RSJEIPlugin implements IModPlugin {
|
|||||||
registry.addAdvancedGuiHandlers(new AdvancedGuiHandlerGrid());
|
registry.addAdvancedGuiHandlers(new AdvancedGuiHandlerGrid());
|
||||||
|
|
||||||
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover());
|
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover());
|
||||||
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowCover());
|
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowWideCover());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -9,7 +9,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RecipeRegistryPluginHollowCover implements IRecipeRegistryPlugin {
|
public class RecipeRegistryPluginHollowWideCover implements IRecipeRegistryPlugin {
|
||||||
@Override
|
@Override
|
||||||
public <V> List<String> getRecipeCategoryUids(IFocus<V> focus) {
|
public <V> List<String> getRecipeCategoryUids(IFocus<V> focus) {
|
||||||
if (focus.getValue() instanceof ItemStack) {
|
if (focus.getValue() instanceof ItemStack) {
|
||||||
@@ -20,7 +20,7 @@ public class RecipeRegistryPluginHollowCover implements IRecipeRegistryPlugin {
|
|||||||
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
|
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
|
||||||
}
|
}
|
||||||
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
|
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
|
||||||
if (stack.getItem() == RSItems.HOLLOW_COVER) {
|
if (stack.getItem() == RSItems.HOLLOW_WIDE_COVER) {
|
||||||
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
|
return Collections.singletonList(VanillaRecipeCategoryUid.CRAFTING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,19 +36,19 @@ public class RecipeRegistryPluginHollowCover implements IRecipeRegistryPlugin {
|
|||||||
|
|
||||||
if (focus.getMode() == IFocus.Mode.INPUT) {
|
if (focus.getMode() == IFocus.Mode.INPUT) {
|
||||||
if (stack.getItem() == RSItems.COVER && CoverManager.isValidCover(ItemCover.getItem(stack))) {
|
if (stack.getItem() == RSItems.COVER && CoverManager.isValidCover(ItemCover.getItem(stack))) {
|
||||||
ItemStack hollowCover = new ItemStack(RSItems.HOLLOW_COVER);
|
ItemStack hollowWideCover = new ItemStack(RSItems.HOLLOW_WIDE_COVER);
|
||||||
|
|
||||||
ItemCover.setItem(hollowCover, ItemCover.getItem(stack));
|
ItemCover.setItem(hollowWideCover, ItemCover.getItem(stack));
|
||||||
|
|
||||||
return Collections.singletonList((T) new RecipeWrapperHollowCover(stack, hollowCover));
|
return Collections.singletonList((T) new RecipeWrapperHollowWideCover(stack, hollowWideCover));
|
||||||
}
|
}
|
||||||
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
|
} else if (focus.getMode() == IFocus.Mode.OUTPUT) {
|
||||||
if (stack.getItem() == RSItems.HOLLOW_COVER) {
|
if (stack.getItem() == RSItems.HOLLOW_WIDE_COVER) {
|
||||||
ItemStack cover = new ItemStack(RSItems.COVER);
|
ItemStack cover = new ItemStack(RSItems.COVER);
|
||||||
|
|
||||||
ItemCover.setItem(cover, ItemCover.getItem(stack));
|
ItemCover.setItem(cover, ItemCover.getItem(stack));
|
||||||
|
|
||||||
return Collections.singletonList((T) new RecipeWrapperHollowCover(cover, stack));
|
return Collections.singletonList((T) new RecipeWrapperHollowWideCover(cover, stack));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -8,13 +8,13 @@ import net.minecraftforge.items.ItemHandlerHelper;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RecipeWrapperHollowCover implements IShapedCraftingRecipeWrapper {
|
public class RecipeWrapperHollowWideCover implements IShapedCraftingRecipeWrapper {
|
||||||
private ItemStack cover;
|
private ItemStack cover;
|
||||||
private ItemStack hollowCover;
|
private ItemStack hollowWideCover;
|
||||||
|
|
||||||
public RecipeWrapperHollowCover(ItemStack cover, ItemStack hollowCover) {
|
public RecipeWrapperHollowWideCover(ItemStack cover, ItemStack hollowWideCover) {
|
||||||
this.cover = ItemHandlerHelper.copyStackWithSize(cover, 1);
|
this.cover = ItemHandlerHelper.copyStackWithSize(cover, 1);
|
||||||
this.hollowCover = ItemHandlerHelper.copyStackWithSize(hollowCover, 8);
|
this.hollowWideCover = ItemHandlerHelper.copyStackWithSize(hollowWideCover, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -26,7 +26,7 @@ public class RecipeWrapperHollowCover implements IShapedCraftingRecipeWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ingredients.setInputs(ItemStack.class, inputs);
|
ingredients.setInputs(ItemStack.class, inputs);
|
||||||
ingredients.setOutput(ItemStack.class, hollowCover);
|
ingredients.setOutput(ItemStack.class, hollowWideCover);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.api.network.security.Permission;
|
|||||||
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.tile.TileNode;
|
import com.raoulvdberge.refinedstorage.tile.TileNode;
|
||||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@@ -143,6 +144,6 @@ public class ItemCover extends ItemBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Cover createCover(ItemStack stack) {
|
protected Cover createCover(ItemStack stack) {
|
||||||
return new Cover(stack, false);
|
return new Cover(stack, CoverType.NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,15 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.item;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
|
|
||||||
public class ItemHollowCover extends ItemCover {
|
|
||||||
public ItemHollowCover() {
|
|
||||||
super("hollow_cover");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Cover createCover(ItemStack stack) {
|
|
||||||
return new Cover(stack, true);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -0,0 +1,16 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.item;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class ItemHollowWideCover extends ItemCover {
|
||||||
|
public ItemHollowWideCover() {
|
||||||
|
super("hollow_wide_cover");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Cover createCover(ItemStack stack) {
|
||||||
|
return new Cover(stack, CoverType.HOLLOW_WIDE);
|
||||||
|
}
|
||||||
|
}
|
@@ -231,7 +231,7 @@ public class ProxyClient extends ProxyCommon {
|
|||||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.QUARTZ_ENRICHED_IRON), 0, new ModelResourceLocation("refinedstorage:quartz_enriched_iron_block", "inventory"));
|
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.QUARTZ_ENRICHED_IRON), 0, new ModelResourceLocation("refinedstorage:quartz_enriched_iron_block", "inventory"));
|
||||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE_MONITOR), 0, new ModelResourceLocation("refinedstorage:storage_monitor", "connected=false,direction=north"));
|
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.STORAGE_MONITOR), 0, new ModelResourceLocation("refinedstorage:storage_monitor", "connected=false,direction=north"));
|
||||||
ModelLoader.setCustomModelResourceLocation(RSItems.COVER, 0, new ModelResourceLocation("refinedstorage:cover", "inventory"));
|
ModelLoader.setCustomModelResourceLocation(RSItems.COVER, 0, new ModelResourceLocation("refinedstorage:cover", "inventory"));
|
||||||
ModelLoader.setCustomModelResourceLocation(RSItems.HOLLOW_COVER, 0, new ModelResourceLocation("refinedstorage:hollow_cover", "inventory"));
|
ModelLoader.setCustomModelResourceLocation(RSItems.HOLLOW_WIDE_COVER, 0, new ModelResourceLocation("refinedstorage:hollow_wide_cover", "inventory"));
|
||||||
|
|
||||||
ModelLoaderRegistry.registerLoader(new CustomModelLoaderDefault(new ResourceLocation(RS.ID, "disk_drive"), ModelDiskDrive::new));
|
ModelLoaderRegistry.registerLoader(new CustomModelLoaderDefault(new ResourceLocation(RS.ID, "disk_drive"), ModelDiskDrive::new));
|
||||||
ModelLoaderRegistry.registerLoader(new CustomModelLoaderDefault(new ResourceLocation(RS.ID, "disk_manipulator"), ModelDiskManipulator::new));
|
ModelLoaderRegistry.registerLoader(new CustomModelLoaderDefault(new ResourceLocation(RS.ID, "disk_manipulator"), ModelDiskManipulator::new));
|
||||||
|
@@ -43,7 +43,7 @@ import com.raoulvdberge.refinedstorage.integration.oc.IntegrationOC;
|
|||||||
import com.raoulvdberge.refinedstorage.item.ItemProcessor;
|
import com.raoulvdberge.refinedstorage.item.ItemProcessor;
|
||||||
import com.raoulvdberge.refinedstorage.network.*;
|
import com.raoulvdberge.refinedstorage.network.*;
|
||||||
import com.raoulvdberge.refinedstorage.recipe.RecipeCover;
|
import com.raoulvdberge.refinedstorage.recipe.RecipeCover;
|
||||||
import com.raoulvdberge.refinedstorage.recipe.RecipeHollowCover;
|
import com.raoulvdberge.refinedstorage.recipe.RecipeHollowWideCover;
|
||||||
import com.raoulvdberge.refinedstorage.tile.*;
|
import com.raoulvdberge.refinedstorage.tile.*;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||||
@@ -264,7 +264,7 @@ public class ProxyCommon {
|
|||||||
registerItem(RSItems.NETWORK_CARD);
|
registerItem(RSItems.NETWORK_CARD);
|
||||||
registerItem(RSItems.SECURITY_CARD);
|
registerItem(RSItems.SECURITY_CARD);
|
||||||
registerItem(RSItems.COVER);
|
registerItem(RSItems.COVER);
|
||||||
registerItem(RSItems.HOLLOW_COVER);
|
registerItem(RSItems.HOLLOW_WIDE_COVER);
|
||||||
|
|
||||||
IntegrationInventorySorter.register();
|
IntegrationInventorySorter.register();
|
||||||
}
|
}
|
||||||
@@ -312,7 +312,7 @@ public class ProxyCommon {
|
|||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void registerRecipes(RegistryEvent.Register<IRecipe> e) {
|
public void registerRecipes(RegistryEvent.Register<IRecipe> e) {
|
||||||
e.getRegistry().register(new RecipeCover().setRegistryName(new ResourceLocation(RS.ID, "cover")));
|
e.getRegistry().register(new RecipeCover().setRegistryName(new ResourceLocation(RS.ID, "cover")));
|
||||||
e.getRegistry().register(new RecipeHollowCover().setRegistryName(new ResourceLocation(RS.ID, "hollow_cover")));
|
e.getRegistry().register(new RecipeHollowWideCover().setRegistryName(new ResourceLocation(RS.ID, "hollow_wide_cover")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.recipe;
|
|||||||
import com.raoulvdberge.refinedstorage.RSItems;
|
import com.raoulvdberge.refinedstorage.RSItems;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemCover;
|
import com.raoulvdberge.refinedstorage.item.ItemCover;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemHollowCover;
|
import com.raoulvdberge.refinedstorage.item.ItemHollowWideCover;
|
||||||
import net.minecraft.inventory.InventoryCrafting;
|
import net.minecraft.inventory.InventoryCrafting;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.crafting.IRecipe;
|
import net.minecraft.item.crafting.IRecipe;
|
||||||
@@ -12,7 +12,7 @@ import net.minecraftforge.registries.IForgeRegistryEntry;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class RecipeHollowCover extends IForgeRegistryEntry.Impl<IRecipe> implements IRecipe {
|
public class RecipeHollowWideCover extends IForgeRegistryEntry.Impl<IRecipe> implements IRecipe {
|
||||||
private boolean isValid(ItemStack slot, @Nullable ItemStack previousValidSlot) {
|
private boolean isValid(ItemStack slot, @Nullable ItemStack previousValidSlot) {
|
||||||
ItemStack currentCover = ItemCover.getItem(slot);
|
ItemStack currentCover = ItemCover.getItem(slot);
|
||||||
|
|
||||||
@@ -54,9 +54,9 @@ public class RecipeHollowCover extends IForgeRegistryEntry.Impl<IRecipe> impleme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getCraftingResult(InventoryCrafting inv) {
|
public ItemStack getCraftingResult(InventoryCrafting inv) {
|
||||||
ItemStack stack = new ItemStack(RSItems.HOLLOW_COVER, 8);
|
ItemStack stack = new ItemStack(RSItems.HOLLOW_WIDE_COVER, 8);
|
||||||
|
|
||||||
ItemHollowCover.setItem(stack, ItemCover.getItem(inv.getStackInSlot(0)));
|
ItemHollowWideCover.setItem(stack, ItemCover.getItem(inv.getStackInSlot(0)));
|
||||||
|
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
@@ -1,74 +1,100 @@
|
|||||||
package com.raoulvdberge.refinedstorage.render;
|
package com.raoulvdberge.refinedstorage.render;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.block.model.*;
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
|
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad;
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
import org.lwjgl.util.vector.Vector3f;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class CubeBuilder {
|
public class CubeBuilder {
|
||||||
private class CubeFace {
|
public enum UvRotation {
|
||||||
private TextureAtlasSprite sprite;
|
CLOCKWISE_0,
|
||||||
|
CLOCKWISE_90,
|
||||||
|
CLOCKWISE_180,
|
||||||
|
CLOCKWISE_270
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class Uv {
|
||||||
private float xFrom;
|
private float xFrom;
|
||||||
private float xTo;
|
private float xTo;
|
||||||
private float yFrom;
|
private float yFrom;
|
||||||
private float yTo;
|
private float yTo;
|
||||||
|
}
|
||||||
|
|
||||||
CubeFace(TextureAtlasSprite sprite, float xFrom, float xTo, float yFrom, float yTo) {
|
public static class Face {
|
||||||
|
private EnumFacing face;
|
||||||
|
private TextureAtlasSprite sprite;
|
||||||
|
private int light;
|
||||||
|
private UvRotation uvRotation = UvRotation.CLOCKWISE_0;
|
||||||
|
|
||||||
|
public Face(EnumFacing face, TextureAtlasSprite sprite) {
|
||||||
|
this.face = face;
|
||||||
this.sprite = sprite;
|
this.sprite = sprite;
|
||||||
this.xFrom = xFrom;
|
}
|
||||||
this.xTo = xTo;
|
|
||||||
this.yFrom = yFrom;
|
public Face(EnumFacing face, TextureAtlasSprite sprite, UvRotation uvRotation) {
|
||||||
this.yTo = yTo;
|
this(face, sprite);
|
||||||
|
|
||||||
|
this.uvRotation = uvRotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Face(EnumFacing face, TextureAtlasSprite sprite, UvRotation uvRotation, int light) {
|
||||||
|
this(face, sprite, uvRotation);
|
||||||
|
|
||||||
|
this.light = light;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final FaceBakery BAKERY = new FaceBakery();
|
|
||||||
|
|
||||||
private Vector3f from;
|
private Vector3f from;
|
||||||
private Vector3f to;
|
private Vector3f to;
|
||||||
private Map<EnumFacing, CubeFace> faces = new HashMap<>();
|
private VertexFormat format = DefaultVertexFormats.ITEM;
|
||||||
private ModelRotation rotation = ModelRotation.X0_Y0;
|
private Map<EnumFacing, Face> faces = new HashMap<>();
|
||||||
private boolean uvLocked = true;
|
private int color = 0xFFFFFFFF;
|
||||||
|
|
||||||
public CubeBuilder from(float x, float y, float z) {
|
public CubeBuilder from(float x, float y, float z) {
|
||||||
this.from = new Vector3f(x, y, z);
|
this.from = new Vector3f(x / 16, y / 16, z / 16);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CubeBuilder to(float x, float y, float z) {
|
public CubeBuilder to(float x, float y, float z) {
|
||||||
this.to = new Vector3f(x, y, z);
|
this.to = new Vector3f(x / 16, y / 16, z / 16);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CubeBuilder face(EnumFacing face, float xFrom, float xTo, float yFrom, float yTo, TextureAtlasSprite sprite) {
|
public CubeBuilder color(int color) {
|
||||||
faces.put(face, new CubeFace(
|
this.color = color;
|
||||||
sprite,
|
|
||||||
xFrom,
|
|
||||||
xTo,
|
|
||||||
yFrom,
|
|
||||||
yTo
|
|
||||||
));
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CubeBuilder allFaces(float xFrom, float xTo, float yFrom, float yTo, TextureAtlasSprite sprite) {
|
public CubeBuilder lightmap() {
|
||||||
|
this.format = RenderUtils.getFormatWithLightMap(format);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CubeBuilder addFaces(Function<EnumFacing, Face> faceSupplier) {
|
||||||
for (EnumFacing facing : EnumFacing.VALUES) {
|
for (EnumFacing facing : EnumFacing.VALUES) {
|
||||||
face(facing, xFrom, xTo, yFrom, yTo, sprite);
|
addFace(faceSupplier.apply(facing));
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CubeBuilder rotate(ModelRotation rotation) {
|
public CubeBuilder addFace(Face face) {
|
||||||
this.rotation = rotation;
|
faces.put(face.face, face);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -76,36 +102,251 @@ public class CubeBuilder {
|
|||||||
public List<BakedQuad> bake() {
|
public List<BakedQuad> bake() {
|
||||||
List<BakedQuad> quads = new ArrayList<>();
|
List<BakedQuad> quads = new ArrayList<>();
|
||||||
|
|
||||||
for (Map.Entry<EnumFacing, CubeFace> entry : faces.entrySet()) {
|
for (Map.Entry<EnumFacing, Face> entry : faces.entrySet()) {
|
||||||
EnumFacing face = entry.getKey();
|
quads.add(bakeFace(entry.getKey(), entry.getValue()));
|
||||||
|
|
||||||
CubeFace faceData = entry.getValue();
|
|
||||||
|
|
||||||
BlockFaceUV uv = new BlockFaceUV(new float[]{
|
|
||||||
faceData.xFrom, faceData.yFrom, faceData.xTo, faceData.yTo
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
BlockPartFace part = new BlockPartFace(face, -1, null, uv);
|
|
||||||
|
|
||||||
quads.add(BAKERY.makeBakedQuad(
|
|
||||||
from,
|
|
||||||
to,
|
|
||||||
part,
|
|
||||||
faceData.sprite,
|
|
||||||
face,
|
|
||||||
rotation,
|
|
||||||
null,
|
|
||||||
uvLocked,
|
|
||||||
true
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return quads;
|
return quads;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CubeBuilder setUvLocked(boolean uvLocked) {
|
private BakedQuad bakeFace(EnumFacing facing, Face cubeFace) {
|
||||||
this.uvLocked = uvLocked;
|
UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(format);
|
||||||
|
|
||||||
return this;
|
builder.setTexture(cubeFace.sprite);
|
||||||
|
builder.setQuadOrientation(facing);
|
||||||
|
builder.setQuadTint(-1);
|
||||||
|
builder.setApplyDiffuseLighting(true);
|
||||||
|
|
||||||
|
Uv uv = getDefaultUv(facing, cubeFace.sprite, from.x, from.y, from.z, to.x, to.y, to.z);
|
||||||
|
|
||||||
|
switch (facing) {
|
||||||
|
case DOWN:
|
||||||
|
addVertexTopRight(builder, cubeFace, to.x, from.y, from.z, uv);
|
||||||
|
addVertexBottomRight(builder, cubeFace, to.x, from.y, to.z, uv);
|
||||||
|
addVertexBottomLeft(builder, cubeFace, from.x, from.y, to.z, uv);
|
||||||
|
addVertexTopLeft(builder, cubeFace, from.x, from.y, from.z, uv);
|
||||||
|
break;
|
||||||
|
case UP:
|
||||||
|
addVertexTopLeft(builder, cubeFace, from.x, to.y, from.z, uv);
|
||||||
|
addVertexBottomLeft(builder, cubeFace, from.x, to.y, to.z, uv);
|
||||||
|
addVertexBottomRight(builder, cubeFace, to.x, to.y, to.z, uv);
|
||||||
|
addVertexTopRight(builder, cubeFace, to.x, to.y, from.z, uv);
|
||||||
|
break;
|
||||||
|
case NORTH:
|
||||||
|
addVertexBottomRight(builder, cubeFace, to.x, to.y, from.z, uv);
|
||||||
|
addVertexTopRight(builder, cubeFace, to.x, from.y, from.z, uv);
|
||||||
|
addVertexTopLeft(builder, cubeFace, from.x, from.y, from.z, uv);
|
||||||
|
addVertexBottomLeft(builder, cubeFace, from.x, to.y, from.z, uv);
|
||||||
|
break;
|
||||||
|
case SOUTH:
|
||||||
|
addVertexBottomLeft(builder, cubeFace, from.x, to.y, to.z, uv);
|
||||||
|
addVertexTopLeft(builder, cubeFace, from.x, from.y, to.z, uv);
|
||||||
|
addVertexTopRight(builder, cubeFace, to.x, from.y, to.z, uv);
|
||||||
|
addVertexBottomRight(builder, cubeFace, to.x, to.y, to.z, uv);
|
||||||
|
break;
|
||||||
|
case WEST:
|
||||||
|
addVertexTopLeft(builder, cubeFace, from.x, from.y, from.z, uv);
|
||||||
|
addVertexTopRight(builder, cubeFace, from.x, from.y, to.z, uv);
|
||||||
|
addVertexBottomRight(builder, cubeFace, from.x, to.y, to.z, uv);
|
||||||
|
addVertexBottomLeft(builder, cubeFace, from.x, to.y, from.z, uv);
|
||||||
|
break;
|
||||||
|
case EAST:
|
||||||
|
addVertexBottomRight(builder, cubeFace, to.x, to.y, from.z, uv);
|
||||||
|
addVertexBottomLeft(builder, cubeFace, to.x, to.y, to.z, uv);
|
||||||
|
addVertexTopLeft(builder, cubeFace, to.x, from.y, to.z, uv);
|
||||||
|
addVertexTopRight(builder, cubeFace, to.x, from.y, from.z, uv);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Uv getDefaultUv(EnumFacing face, TextureAtlasSprite texture, float fromX, float fromY, float fromZ, float toX, float toY, float toZ) {
|
||||||
|
Uv uv = new Uv();
|
||||||
|
|
||||||
|
switch (face) {
|
||||||
|
case DOWN:
|
||||||
|
uv.xFrom = texture.getInterpolatedU(fromX * 16);
|
||||||
|
uv.yFrom = texture.getInterpolatedV(16 - fromZ * 16);
|
||||||
|
uv.xTo = texture.getInterpolatedU(toX * 16);
|
||||||
|
uv.yTo = texture.getInterpolatedV(16 - toZ * 16);
|
||||||
|
break;
|
||||||
|
case UP:
|
||||||
|
uv.xFrom = texture.getInterpolatedU(fromX * 16);
|
||||||
|
uv.yFrom = texture.getInterpolatedV(fromZ * 16);
|
||||||
|
uv.xTo = texture.getInterpolatedU(toX * 16);
|
||||||
|
uv.yTo = texture.getInterpolatedV(toZ * 16);
|
||||||
|
break;
|
||||||
|
case NORTH:
|
||||||
|
uv.xFrom = texture.getInterpolatedU(16 - fromX * 16);
|
||||||
|
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
|
||||||
|
uv.xTo = texture.getInterpolatedU(16 - toX * 16);
|
||||||
|
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
|
||||||
|
break;
|
||||||
|
case SOUTH:
|
||||||
|
uv.xFrom = texture.getInterpolatedU(fromX * 16);
|
||||||
|
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
|
||||||
|
uv.xTo = texture.getInterpolatedU(toX * 16);
|
||||||
|
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
|
||||||
|
break;
|
||||||
|
case WEST:
|
||||||
|
uv.xFrom = texture.getInterpolatedU(fromZ * 16);
|
||||||
|
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
|
||||||
|
uv.xTo = texture.getInterpolatedU(toZ * 16);
|
||||||
|
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
|
||||||
|
break;
|
||||||
|
case EAST:
|
||||||
|
uv.xFrom = texture.getInterpolatedU(16 - toZ * 16);
|
||||||
|
uv.yFrom = texture.getInterpolatedV(16 - fromY * 16);
|
||||||
|
uv.xTo = texture.getInterpolatedU(16 - fromZ * 16);
|
||||||
|
uv.yTo = texture.getInterpolatedV(16 - toY * 16);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return uv;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addVertexTopLeft(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
|
||||||
|
float u;
|
||||||
|
float v;
|
||||||
|
|
||||||
|
switch (face.uvRotation) {
|
||||||
|
default:
|
||||||
|
case CLOCKWISE_0:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_90:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_180:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_270:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
addVertex(builder, face, x, y, z, u, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addVertexTopRight(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
|
||||||
|
float u;
|
||||||
|
float v;
|
||||||
|
|
||||||
|
switch (face.uvRotation) {
|
||||||
|
default:
|
||||||
|
case CLOCKWISE_0:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_90:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_180:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_270:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
addVertex(builder, face, x, y, z, u, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addVertexBottomRight(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
|
||||||
|
float u;
|
||||||
|
float v;
|
||||||
|
|
||||||
|
switch (face.uvRotation) {
|
||||||
|
default:
|
||||||
|
case CLOCKWISE_0:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_90:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_180:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_270:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
addVertex(builder, face, x, y, z, u, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addVertexBottomLeft(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, Uv uv) {
|
||||||
|
float u;
|
||||||
|
float v;
|
||||||
|
|
||||||
|
switch (face.uvRotation) {
|
||||||
|
default:
|
||||||
|
case CLOCKWISE_0:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_90:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yTo;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_180:
|
||||||
|
u = uv.xTo;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
case CLOCKWISE_270:
|
||||||
|
u = uv.xFrom;
|
||||||
|
v = uv.yFrom;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
addVertex(builder, face, x, y, z, u, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addVertex(UnpackedBakedQuad.Builder builder, Face face, float x, float y, float z, float u, float v) {
|
||||||
|
VertexFormat format = builder.getVertexFormat();
|
||||||
|
|
||||||
|
for (int i = 0; i < format.getElementCount(); i++) {
|
||||||
|
VertexFormatElement e = format.getElement(i);
|
||||||
|
|
||||||
|
switch (e.getUsage()) {
|
||||||
|
case POSITION:
|
||||||
|
builder.put(i, x, y, z);
|
||||||
|
break;
|
||||||
|
case NORMAL:
|
||||||
|
builder.put(i, face.face.getFrontOffsetX(), face.face.getFrontOffsetY(), face.face.getFrontOffsetZ());
|
||||||
|
break;
|
||||||
|
case COLOR:
|
||||||
|
float r = (color >> 16 & 0xFF) / 255f;
|
||||||
|
float g = (color >> 8 & 0xFF) / 255f;
|
||||||
|
float b = (color & 0xFF) / 255f;
|
||||||
|
float a = (color >> 24 & 0xFF) / 255f;
|
||||||
|
|
||||||
|
builder.put(i, r, g, b, a);
|
||||||
|
break;
|
||||||
|
case UV:
|
||||||
|
if (e.getIndex() == 0) {
|
||||||
|
builder.put(i, u, v);
|
||||||
|
} else {
|
||||||
|
builder.put(i, (float) (face.light * 0x20) / 0xFFFF, (float) (face.light * 0x20) / 0xFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
builder.put(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,98 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
import org.lwjgl.util.vector.Vector3f;
|
||||||
|
|
||||||
|
public final class ConstantsCable {
|
||||||
|
public static final AxisAlignedBB CORE_AABB = RenderUtils.getBounds(6, 6, 6, 10, 10, 10);
|
||||||
|
public static final AxisAlignedBB NORTH_AABB = RenderUtils.getBounds(6, 6, 0, 10, 10, 6);
|
||||||
|
public static final AxisAlignedBB EAST_AABB = RenderUtils.getBounds(10, 6, 6, 16, 10, 10);
|
||||||
|
public static final AxisAlignedBB SOUTH_AABB = RenderUtils.getBounds(6, 6, 10, 10, 10, 16);
|
||||||
|
public static final AxisAlignedBB WEST_AABB = RenderUtils.getBounds(0, 6, 6, 6, 10, 10);
|
||||||
|
public static final AxisAlignedBB UP_AABB = RenderUtils.getBounds(6, 10, 6, 10, 16, 10);
|
||||||
|
public static final AxisAlignedBB DOWN_AABB = RenderUtils.getBounds(6, 0, 6, 10, 6, 10);
|
||||||
|
|
||||||
|
public static final AxisAlignedBB HOLDER_NORTH_AABB = RenderUtils.getBounds(7, 7, 2, 9, 9, 6);
|
||||||
|
public static final AxisAlignedBB HOLDER_EAST_AABB = RenderUtils.getBounds(10, 7, 7, 14, 9, 9);
|
||||||
|
public static final AxisAlignedBB HOLDER_SOUTH_AABB = RenderUtils.getBounds(7, 7, 10, 9, 9, 14);
|
||||||
|
public static final AxisAlignedBB HOLDER_WEST_AABB = RenderUtils.getBounds(2, 7, 7, 6, 9, 9);
|
||||||
|
public static final AxisAlignedBB HOLDER_UP_AABB = RenderUtils.getBounds(7, 10, 7, 9, 14, 9);
|
||||||
|
public static final AxisAlignedBB HOLDER_DOWN_AABB = RenderUtils.getBounds(7, 2, 7, 9, 6, 9);
|
||||||
|
|
||||||
|
public static Pair<Vector3f, Vector3f> getCoverBounds(EnumFacing side) {
|
||||||
|
switch (side) {
|
||||||
|
case DOWN:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(0, 0, 0),
|
||||||
|
new Vector3f(16, 2, 16)
|
||||||
|
);
|
||||||
|
case UP:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(0, 14, 0),
|
||||||
|
new Vector3f(16, 16, 16)
|
||||||
|
);
|
||||||
|
case NORTH:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(0, 0, 0),
|
||||||
|
new Vector3f(16, 16, 2)
|
||||||
|
);
|
||||||
|
case SOUTH:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(16, 0, 16),
|
||||||
|
new Vector3f(0, 16, 14)
|
||||||
|
);
|
||||||
|
case WEST:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(0, 0, 0),
|
||||||
|
new Vector3f(2, 16, 16)
|
||||||
|
);
|
||||||
|
case EAST:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(14, 0, 0),
|
||||||
|
new Vector3f(16, 16, 16)
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Pair<Vector3f, Vector3f> getHolderBounds(EnumFacing side) {
|
||||||
|
switch (side) {
|
||||||
|
case DOWN:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(7, 2, 7),
|
||||||
|
new Vector3f(9, 6, 9)
|
||||||
|
);
|
||||||
|
case UP:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(7, 10, 7),
|
||||||
|
new Vector3f(9, 14, 9)
|
||||||
|
);
|
||||||
|
case NORTH:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(7, 7, 2),
|
||||||
|
new Vector3f(9, 9, 6)
|
||||||
|
);
|
||||||
|
case SOUTH:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(7, 7, 10),
|
||||||
|
new Vector3f(9, 9, 14)
|
||||||
|
);
|
||||||
|
case WEST:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(2, 7, 7),
|
||||||
|
new Vector3f(6, 9, 9)
|
||||||
|
);
|
||||||
|
case EAST:
|
||||||
|
return Pair.of(
|
||||||
|
new Vector3f(10, 7, 7),
|
||||||
|
new Vector3f(14, 9, 9)
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,13 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
public final class ConstantsConstructor {
|
||||||
|
public static final AxisAlignedBB HEAD_NORTH_AABB = RenderUtils.getBounds(2, 2, 0, 14, 14, 2);
|
||||||
|
public static final AxisAlignedBB HEAD_EAST_AABB = RenderUtils.getBounds(14, 2, 2, 16, 14, 14);
|
||||||
|
public static final AxisAlignedBB HEAD_SOUTH_AABB = RenderUtils.getBounds(2, 2, 14, 14, 14, 16);
|
||||||
|
public static final AxisAlignedBB HEAD_WEST_AABB = RenderUtils.getBounds(0, 2, 2, 2, 14, 14);
|
||||||
|
public static final AxisAlignedBB HEAD_DOWN_AABB = RenderUtils.getBounds(2, 0, 2, 14, 2, 14);
|
||||||
|
public static final AxisAlignedBB HEAD_UP_AABB = RenderUtils.getBounds(2, 14, 2, 14, 16, 14);
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
public final class ConstantsDetector {
|
||||||
|
public static final AxisAlignedBB DETECTOR_AABB = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 5D / 16D, 1.0D);
|
||||||
|
}
|
@@ -0,0 +1,25 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
public final class ConstantsExporter {
|
||||||
|
public static final AxisAlignedBB LINE_NORTH_1_AABB = RenderUtils.getBounds(6, 6, 0, 10, 10, 2);
|
||||||
|
public static final AxisAlignedBB LINE_NORTH_2_AABB = RenderUtils.getBounds(5, 5, 2, 11, 11, 4);
|
||||||
|
public static final AxisAlignedBB LINE_NORTH_3_AABB = RenderUtils.getBounds(3, 3, 4, 13, 13, 6);
|
||||||
|
public static final AxisAlignedBB LINE_EAST_1_AABB = RenderUtils.getBounds(14, 6, 6, 16, 10, 10);
|
||||||
|
public static final AxisAlignedBB LINE_EAST_2_AABB = RenderUtils.getBounds(12, 5, 5, 14, 11, 11);
|
||||||
|
public static final AxisAlignedBB LINE_EAST_3_AABB = RenderUtils.getBounds(10, 3, 3, 12, 13, 13);
|
||||||
|
public static final AxisAlignedBB LINE_SOUTH_1_AABB = RenderUtils.getBounds(6, 6, 14, 10, 10, 16);
|
||||||
|
public static final AxisAlignedBB LINE_SOUTH_2_AABB = RenderUtils.getBounds(5, 5, 12, 11, 11, 14);
|
||||||
|
public static final AxisAlignedBB LINE_SOUTH_3_AABB = RenderUtils.getBounds(3, 3, 10, 13, 13, 12);
|
||||||
|
public static final AxisAlignedBB LINE_WEST_1_AABB = RenderUtils.getBounds(0, 6, 6, 2, 10, 10);
|
||||||
|
public static final AxisAlignedBB LINE_WEST_2_AABB = RenderUtils.getBounds(2, 5, 5, 4, 11, 11);
|
||||||
|
public static final AxisAlignedBB LINE_WEST_3_AABB = RenderUtils.getBounds(4, 3, 3, 6, 13, 13);
|
||||||
|
public static final AxisAlignedBB LINE_UP_1_AABB = RenderUtils.getBounds(6, 14, 6, 10, 16, 10);
|
||||||
|
public static final AxisAlignedBB LINE_UP_2_AABB = RenderUtils.getBounds(5, 12, 5, 11, 14, 11);
|
||||||
|
public static final AxisAlignedBB LINE_UP_3_AABB = RenderUtils.getBounds(3, 10, 3, 13, 12, 13);
|
||||||
|
public static final AxisAlignedBB LINE_DOWN_1_AABB = RenderUtils.getBounds(6, 0, 6, 10, 2, 10);
|
||||||
|
public static final AxisAlignedBB LINE_DOWN_2_AABB = RenderUtils.getBounds(5, 2, 5, 11, 4, 11);
|
||||||
|
public static final AxisAlignedBB LINE_DOWN_3_AABB = RenderUtils.getBounds(3, 4, 3, 13, 6, 13);
|
||||||
|
}
|
@@ -0,0 +1,13 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
public final class ConstantsExternalStorage {
|
||||||
|
public static final AxisAlignedBB HEAD_NORTH_AABB = RenderUtils.getBounds(3, 3, 0, 13, 13, 2);
|
||||||
|
public static final AxisAlignedBB HEAD_EAST_AABB = RenderUtils.getBounds(14, 3, 3, 16, 13, 13);
|
||||||
|
public static final AxisAlignedBB HEAD_SOUTH_AABB = RenderUtils.getBounds(3, 3, 14, 13, 13, 16);
|
||||||
|
public static final AxisAlignedBB HEAD_WEST_AABB = RenderUtils.getBounds(0, 3, 3, 2, 13, 13);
|
||||||
|
public static final AxisAlignedBB HEAD_UP_AABB = RenderUtils.getBounds(3, 14, 3, 13, 16, 13);
|
||||||
|
public static final AxisAlignedBB HEAD_DOWN_AABB = RenderUtils.getBounds(3, 0, 3, 13, 2, 13);
|
||||||
|
}
|
@@ -0,0 +1,25 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
public final class ConstantsImporter {
|
||||||
|
public static final AxisAlignedBB LINE_NORTH_1_AABB = RenderUtils.getBounds(6, 6, 4, 10, 10, 6);
|
||||||
|
public static final AxisAlignedBB LINE_NORTH_2_AABB = RenderUtils.getBounds(5, 5, 2, 11, 11, 4);
|
||||||
|
public static final AxisAlignedBB LINE_NORTH_3_AABB = RenderUtils.getBounds(3, 3, 0, 13, 13, 2);
|
||||||
|
public static final AxisAlignedBB LINE_EAST_1_AABB = RenderUtils.getBounds(10, 6, 6, 12, 10, 10);
|
||||||
|
public static final AxisAlignedBB LINE_EAST_2_AABB = RenderUtils.getBounds(12, 5, 5, 14, 11, 11);
|
||||||
|
public static final AxisAlignedBB LINE_EAST_3_AABB = RenderUtils.getBounds(14, 3, 3, 16, 13, 13);
|
||||||
|
public static final AxisAlignedBB LINE_SOUTH_1_AABB = RenderUtils.getBounds(6, 6, 10, 10, 10, 12);
|
||||||
|
public static final AxisAlignedBB LINE_SOUTH_2_AABB = RenderUtils.getBounds(5, 5, 12, 11, 11, 14);
|
||||||
|
public static final AxisAlignedBB LINE_SOUTH_3_AABB = RenderUtils.getBounds(3, 3, 14, 13, 13, 16);
|
||||||
|
public static final AxisAlignedBB LINE_WEST_1_AABB = RenderUtils.getBounds(4, 6, 6, 6, 10, 10);
|
||||||
|
public static final AxisAlignedBB LINE_WEST_2_AABB = RenderUtils.getBounds(2, 5, 5, 4, 11, 11);
|
||||||
|
public static final AxisAlignedBB LINE_WEST_3_AABB = RenderUtils.getBounds(0, 3, 3, 2, 13, 13);
|
||||||
|
public static final AxisAlignedBB LINE_UP_1_AABB = RenderUtils.getBounds(6, 10, 6, 10, 12, 10);
|
||||||
|
public static final AxisAlignedBB LINE_UP_2_AABB = RenderUtils.getBounds(5, 12, 5, 11, 14, 11);
|
||||||
|
public static final AxisAlignedBB LINE_UP_3_AABB = RenderUtils.getBounds(3, 14, 3, 13, 16, 13);
|
||||||
|
public static final AxisAlignedBB LINE_DOWN_1_AABB = RenderUtils.getBounds(6, 4, 6, 10, 6, 10);
|
||||||
|
public static final AxisAlignedBB LINE_DOWN_2_AABB = RenderUtils.getBounds(5, 2, 5, 11, 4, 11);
|
||||||
|
public static final AxisAlignedBB LINE_DOWN_3_AABB = RenderUtils.getBounds(3, 0, 3, 13, 2, 13);
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
public final class ConstantsPortableGrid {
|
||||||
|
public static final AxisAlignedBB PORTABLE_GRID_AABB = new AxisAlignedBB(0, 0, 0, 1, 13.2F / 16F, 1);
|
||||||
|
}
|
@@ -0,0 +1,8 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.render.constants;
|
||||||
|
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
|
||||||
|
public final class ConstantsWirelessTransmitter {
|
||||||
|
// From BlockTorch
|
||||||
|
public static final AxisAlignedBB WIRELESS_TRANSMITTER_AABB = new AxisAlignedBB(0.4000000059604645D, 0.0D, 0.4000000059604645D, 0.6000000238418579D, 0.6000000238418579D, 0.6000000238418579D);
|
||||||
|
}
|
@@ -1,5 +1,6 @@
|
|||||||
package com.raoulvdberge.refinedstorage.render.model;
|
package com.raoulvdberge.refinedstorage.render.model;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType;
|
||||||
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelCover;
|
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelCover;
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
@@ -11,14 +12,14 @@ import net.minecraftforge.common.model.IModelState;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class ModelCover implements IModel {
|
public class ModelCover implements IModel {
|
||||||
private boolean hollow;
|
private CoverType coverType;
|
||||||
|
|
||||||
public ModelCover(boolean hollow) {
|
public ModelCover(CoverType coverType) {
|
||||||
this.hollow = hollow;
|
this.coverType = coverType;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
|
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
|
||||||
return new BakedModelCover(null, hollow);
|
return new BakedModelCover(null, coverType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -5,16 +5,19 @@ 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.BlockCable;
|
import com.raoulvdberge.refinedstorage.block.BlockCable;
|
||||||
import com.raoulvdberge.refinedstorage.render.CubeBuilder;
|
import com.raoulvdberge.refinedstorage.render.CubeBuilder;
|
||||||
|
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.block.model.*;
|
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||||
|
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
|
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||||
|
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.client.ForgeHooksClient;
|
|
||||||
import net.minecraftforge.client.MinecraftForgeClient;
|
|
||||||
import net.minecraftforge.common.property.IExtendedBlockState;
|
import net.minecraftforge.common.property.IExtendedBlockState;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
import org.lwjgl.util.vector.Vector3f;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.vecmath.Matrix4f;
|
import javax.vecmath.Matrix4f;
|
||||||
@@ -43,343 +46,300 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
boolean hasEast = s.getValue(BlockCable.COVER_EAST) != null;
|
boolean hasEast = s.getValue(BlockCable.COVER_EAST) != null;
|
||||||
boolean hasWest = s.getValue(BlockCable.COVER_WEST) != null;
|
boolean hasWest = s.getValue(BlockCable.COVER_WEST) != null;
|
||||||
|
|
||||||
addCoverOrHollow(quads, s.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
addCover(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);
|
addCover(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);
|
addCover(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);
|
addCover(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);
|
addCover(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);
|
addCover(quads, s.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, hasUp, hasDown, hasEast, hasWest, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return quads;
|
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, boolean handle) {
|
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) {
|
||||||
if (cover == null) {
|
if (cover == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cover.isHollow()) {
|
|
||||||
addHollowCover(quads, cover, coverSide, side, rand, hasUp, hasDown, hasEast, hasWest);
|
|
||||||
} else {
|
|
||||||
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, boolean handle) {
|
|
||||||
IBlockState coverState = CoverManager.getBlockState(cover.getStack());
|
IBlockState coverState = CoverManager.getBlockState(cover.getStack());
|
||||||
|
|
||||||
if (coverState == null) {
|
if (coverState == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
IBakedModel coverModel = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState);
|
TextureAtlasSprite sprite = RenderUtils.getSprite(Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState), coverState, side, rand);
|
||||||
|
|
||||||
TextureAtlasSprite sprite = getSprite(coverModel, coverState, side, rand);
|
switch (cover.getType()) {
|
||||||
|
case NORMAL:
|
||||||
|
addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle);
|
||||||
|
break;
|
||||||
|
case HOLLOW:
|
||||||
|
break;
|
||||||
|
case HOLLOW_WIDE:
|
||||||
|
addHollowWideCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ModelRotation rotation = ModelRotation.X0_Y0;
|
private static void addNormalCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) {
|
||||||
|
Pair<Vector3f, Vector3f> bounds = ConstantsCable.getCoverBounds(coverSide);
|
||||||
int xStart = 0;
|
|
||||||
int xEnd = 16;
|
|
||||||
|
|
||||||
int xTexStart = 0;
|
|
||||||
int xTexEnd = 16;
|
|
||||||
|
|
||||||
int xTexBackStart = 0;
|
|
||||||
int xTexBackEnd = 16;
|
|
||||||
|
|
||||||
int yStart = 0;
|
|
||||||
int yEnd = 16;
|
|
||||||
|
|
||||||
int yTexStart = 0;
|
|
||||||
int yTexEnd = 16;
|
|
||||||
|
|
||||||
if (coverSide == EnumFacing.NORTH) {
|
if (coverSide == EnumFacing.NORTH) {
|
||||||
if (hasWest) {
|
if (hasWest) {
|
||||||
xStart = 2;
|
bounds.getLeft().setX(2);
|
||||||
xTexEnd = 14;
|
|
||||||
xTexBackStart = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasEast) {
|
if (hasEast) {
|
||||||
xEnd = 14;
|
bounds.getRight().setX(14);
|
||||||
xTexStart = 2;
|
|
||||||
xTexBackEnd = 14;
|
|
||||||
}
|
}
|
||||||
} else if (coverSide == EnumFacing.SOUTH) {
|
} else if (coverSide == EnumFacing.SOUTH) {
|
||||||
rotation = ModelRotation.X0_Y180;
|
|
||||||
|
|
||||||
if (hasWest) {
|
if (hasWest) {
|
||||||
xEnd = 14;
|
bounds.getRight().setX(2);
|
||||||
xTexStart = 2;
|
|
||||||
xTexBackEnd = 14;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasEast) {
|
if (hasEast) {
|
||||||
xStart = 2;
|
bounds.getLeft().setX(14);
|
||||||
xTexEnd = 14;
|
|
||||||
xTexBackStart = 2;
|
|
||||||
}
|
}
|
||||||
} else if (coverSide == EnumFacing.EAST) {
|
|
||||||
rotation = ModelRotation.X0_Y90;
|
|
||||||
} else if (coverSide == EnumFacing.WEST) {
|
|
||||||
rotation = ModelRotation.X0_Y270;
|
|
||||||
} else if (coverSide == EnumFacing.DOWN) {
|
|
||||||
rotation = ModelRotation.X90_Y0;
|
|
||||||
} else if (coverSide == EnumFacing.UP) {
|
|
||||||
rotation = ModelRotation.X270_Y0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (coverSide.getAxis() != EnumFacing.Axis.Y) {
|
if (coverSide.getAxis() != EnumFacing.Axis.Y) {
|
||||||
if (hasDown) {
|
if (hasDown) {
|
||||||
yStart = 2;
|
bounds.getLeft().setY(2);
|
||||||
yTexEnd = 14;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasUp) {
|
if (hasUp) {
|
||||||
yEnd = 14;
|
bounds.getRight().setY(14);
|
||||||
yTexStart = 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder()
|
quads.addAll(new CubeBuilder()
|
||||||
.from(xStart, yStart, 0)
|
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ())
|
||||||
.to(xEnd, yEnd, 2)
|
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
|
||||||
|
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
||||||
.face(EnumFacing.NORTH, xTexStart, xTexEnd, yTexStart, yTexEnd, sprite)
|
|
||||||
.face(EnumFacing.SOUTH, xTexBackStart, xTexBackEnd, yTexStart, yTexEnd, sprite)
|
|
||||||
|
|
||||||
.face(EnumFacing.UP, 0, 16, 0, 2, sprite)
|
|
||||||
.face(EnumFacing.DOWN, 0, 16, 14, 16, sprite)
|
|
||||||
.face(EnumFacing.EAST, 14, 16, yTexStart, yTexEnd, sprite)
|
|
||||||
.face(EnumFacing.WEST, 0, 2, yTexStart, yTexEnd, sprite)
|
|
||||||
|
|
||||||
.rotate(rotation)
|
|
||||||
|
|
||||||
.bake()
|
.bake()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (handle) {
|
if (handle) {
|
||||||
addHandle(quads, rotation);
|
if (GREY_SPRITE == null) {
|
||||||
|
GREY_SPRITE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey");
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds = ConstantsCable.getHolderBounds(coverSide);
|
||||||
|
|
||||||
|
quads.addAll(new CubeBuilder()
|
||||||
|
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ())
|
||||||
|
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
|
||||||
|
|
||||||
|
.addFaces(face -> new CubeBuilder.Face(face, GREY_SPRITE))
|
||||||
|
|
||||||
|
.bake()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addHollowCover(List<BakedQuad> quads, Cover cover, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) {
|
private static void addHollowWideCover(List<BakedQuad> quads, TextureAtlasSprite sprite, EnumFacing coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) {
|
||||||
IBlockState coverState = CoverManager.getBlockState(cover.getStack());
|
Pair<Vector3f, Vector3f> bounds = ConstantsCable.getCoverBounds(coverSide);
|
||||||
|
|
||||||
if (coverState == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
IBakedModel coverModel = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState);
|
|
||||||
|
|
||||||
TextureAtlasSprite sprite = getSprite(coverModel, coverState, side, rand);
|
|
||||||
|
|
||||||
ModelRotation rotation = ModelRotation.X0_Y0;
|
|
||||||
|
|
||||||
int xLeftStart = 13;
|
|
||||||
int xLeftEnd = 16;
|
|
||||||
|
|
||||||
int xLeftTexStart = 0;
|
|
||||||
int xLeftTexEnd = 3;
|
|
||||||
|
|
||||||
int xLeftTexBackStart = 13;
|
|
||||||
int xLeftTexBackEnd = 16;
|
|
||||||
|
|
||||||
int xRightStart = 0;
|
|
||||||
int xRightEnd = 3;
|
|
||||||
|
|
||||||
int xRightTexStart = 13;
|
|
||||||
int xRightTexEnd = 16;
|
|
||||||
|
|
||||||
int xRightTexBackStart = 0;
|
|
||||||
int xRightTexBackEnd = 3;
|
|
||||||
|
|
||||||
int yStart = 0;
|
|
||||||
int yEnd = 16;
|
|
||||||
|
|
||||||
int yTexStart = 0;
|
|
||||||
int yTexEnd = 16;
|
|
||||||
|
|
||||||
if (coverSide == EnumFacing.NORTH) {
|
|
||||||
if (hasEast) {
|
|
||||||
xLeftEnd = 14;
|
|
||||||
xLeftTexStart = 2;
|
|
||||||
xLeftTexBackEnd = 14;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasWest) {
|
|
||||||
xRightStart = 2;
|
|
||||||
xRightTexEnd = 14;
|
|
||||||
xRightTexBackStart = 2;
|
|
||||||
}
|
|
||||||
} else if (coverSide == EnumFacing.SOUTH) {
|
|
||||||
rotation = ModelRotation.X0_Y180;
|
|
||||||
|
|
||||||
if (hasWest) {
|
|
||||||
xLeftEnd = 14;
|
|
||||||
xLeftTexStart = 2;
|
|
||||||
xLeftTexBackEnd = 14;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasEast) {
|
|
||||||
xRightStart = 2;
|
|
||||||
xRightTexEnd = 14;
|
|
||||||
xRightTexBackStart = 2;
|
|
||||||
}
|
|
||||||
} else if (coverSide == EnumFacing.EAST) {
|
|
||||||
rotation = ModelRotation.X0_Y90;
|
|
||||||
} else if (coverSide == EnumFacing.WEST) {
|
|
||||||
rotation = ModelRotation.X0_Y270;
|
|
||||||
} else if (coverSide == EnumFacing.DOWN) {
|
|
||||||
rotation = ModelRotation.X90_Y0;
|
|
||||||
} else if (coverSide == EnumFacing.UP) {
|
|
||||||
rotation = ModelRotation.X270_Y0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (coverSide.getAxis() != EnumFacing.Axis.Y) {
|
if (coverSide.getAxis() != EnumFacing.Axis.Y) {
|
||||||
if (hasDown) {
|
if (hasDown) {
|
||||||
yStart = 2;
|
bounds.getLeft().setY(2);
|
||||||
yTexEnd = 14;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasUp) {
|
if (hasUp) {
|
||||||
yEnd = 14;
|
bounds.getRight().setY(14);
|
||||||
yTexStart = 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder()
|
// Right
|
||||||
.from(xLeftStart, yStart, 0)
|
if (coverSide == EnumFacing.NORTH) {
|
||||||
.to(xLeftEnd, yEnd, 2)
|
if (hasWest) {
|
||||||
|
bounds.getLeft().setX(2);
|
||||||
.face(EnumFacing.NORTH, xLeftTexStart, xLeftTexEnd, yTexStart, yTexEnd, sprite)
|
} else {
|
||||||
.face(EnumFacing.SOUTH, xLeftTexBackStart, xLeftTexBackEnd, yTexStart, yTexEnd, sprite)
|
bounds.getLeft().setX(0);
|
||||||
|
|
||||||
.face(EnumFacing.UP, 13, 16, 0, 2, sprite)
|
|
||||||
.face(EnumFacing.DOWN, 13, 16, 14, 16, sprite)
|
|
||||||
.face(EnumFacing.EAST, 14, 16, yTexStart, yTexEnd, sprite)
|
|
||||||
.face(EnumFacing.WEST, 0, 2, yTexStart, yTexEnd, sprite)
|
|
||||||
|
|
||||||
.rotate(rotation)
|
|
||||||
|
|
||||||
.bake()
|
|
||||||
);
|
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder()
|
|
||||||
.from(xRightStart, yStart, 0)
|
|
||||||
.to(xRightEnd, yEnd, 2)
|
|
||||||
|
|
||||||
.face(EnumFacing.NORTH, xRightTexStart, xRightTexEnd, yTexStart, yTexEnd, sprite)
|
|
||||||
.face(EnumFacing.SOUTH, xRightTexBackStart, xRightTexBackEnd, yTexStart, yTexEnd, sprite)
|
|
||||||
|
|
||||||
.face(EnumFacing.UP, 0, 3, 0, 2, sprite)
|
|
||||||
.face(EnumFacing.DOWN, 0, 3, 14, 16, sprite)
|
|
||||||
.face(EnumFacing.EAST, 14, 16, yTexStart, yTexEnd, sprite)
|
|
||||||
.face(EnumFacing.WEST, 0, 2, yTexStart, yTexEnd, sprite)
|
|
||||||
|
|
||||||
.rotate(rotation)
|
|
||||||
|
|
||||||
.bake()
|
|
||||||
);
|
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder()
|
|
||||||
.from(3, yStart, 0)
|
|
||||||
.to(13, 3, 2)
|
|
||||||
|
|
||||||
.face(EnumFacing.NORTH, 3, 13, 13, yTexEnd, sprite)
|
|
||||||
.face(EnumFacing.SOUTH, 3, 13, 13, yTexEnd, sprite)
|
|
||||||
|
|
||||||
.face(EnumFacing.UP, 3, 13, 0, 2, sprite)
|
|
||||||
.face(EnumFacing.DOWN, 3, 13, 14, 16, sprite)
|
|
||||||
|
|
||||||
.rotate(rotation)
|
|
||||||
|
|
||||||
.bake()
|
|
||||||
);
|
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder()
|
|
||||||
.from(3, 13, 0)
|
|
||||||
.to(13, yEnd, 2)
|
|
||||||
|
|
||||||
.face(EnumFacing.NORTH, 3, 13, yTexStart, 3, sprite)
|
|
||||||
.face(EnumFacing.SOUTH, 3, 13, yTexStart, 3, sprite)
|
|
||||||
|
|
||||||
.face(EnumFacing.UP, 3, 13, 0, 2, sprite)
|
|
||||||
.face(EnumFacing.DOWN, 3, 13, 14, 16, sprite)
|
|
||||||
|
|
||||||
.rotate(rotation)
|
|
||||||
|
|
||||||
.bake()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void addHandle(List<BakedQuad> quads, ModelRotation rotation) {
|
|
||||||
if (GREY_SPRITE == null) {
|
|
||||||
GREY_SPRITE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey");
|
|
||||||
}
|
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder()
|
|
||||||
.from(7, 7, 2)
|
|
||||||
.to(9, 9, 6)
|
|
||||||
|
|
||||||
.face(EnumFacing.NORTH, 0, 0, 4, 4, GREY_SPRITE)
|
|
||||||
.face(EnumFacing.EAST, 0, 0, 2, 4, GREY_SPRITE)
|
|
||||||
.face(EnumFacing.SOUTH, 0, 0, 4, 4, GREY_SPRITE)
|
|
||||||
.face(EnumFacing.WEST, 0, 0, 2, 4, GREY_SPRITE)
|
|
||||||
.face(EnumFacing.UP, 0, 0, 4, 2, GREY_SPRITE)
|
|
||||||
.face(EnumFacing.DOWN, 0, 0, 4, 2, GREY_SPRITE)
|
|
||||||
|
|
||||||
.rotate(rotation)
|
|
||||||
|
|
||||||
.setUvLocked(false)
|
|
||||||
|
|
||||||
.bake()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static TextureAtlasSprite getSprite(IBakedModel coverModel, IBlockState coverState, EnumFacing facing, long rand) {
|
|
||||||
TextureAtlasSprite sprite = null;
|
|
||||||
|
|
||||||
BlockRenderLayer originalLayer = MinecraftForgeClient.getRenderLayer();
|
|
||||||
|
|
||||||
try {
|
|
||||||
for (BlockRenderLayer layer : BlockRenderLayer.values()) {
|
|
||||||
ForgeHooksClient.setRenderLayer(layer);
|
|
||||||
|
|
||||||
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand)) {
|
|
||||||
return bakedQuad.getSprite();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, null, rand)) {
|
|
||||||
if (sprite == null) {
|
|
||||||
sprite = bakedQuad.getSprite();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bakedQuad.getFace() == facing) {
|
|
||||||
return bakedQuad.getSprite();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
// NO OP
|
|
||||||
} finally {
|
|
||||||
ForgeHooksClient.setRenderLayer(originalLayer);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sprite == null) {
|
bounds.getRight().setX(3);
|
||||||
try {
|
} else if (coverSide == EnumFacing.SOUTH) {
|
||||||
sprite = coverModel.getParticleTexture();
|
if (hasEast) {
|
||||||
} catch (Exception e) {
|
bounds.getLeft().setX(14);
|
||||||
// NO OP
|
} else {
|
||||||
|
bounds.getLeft().setX(16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bounds.getRight().setX(13);
|
||||||
|
} else if (coverSide == EnumFacing.EAST) {
|
||||||
|
bounds.getLeft().setZ(0);
|
||||||
|
bounds.getRight().setZ(3);
|
||||||
|
} else if (coverSide == EnumFacing.WEST) {
|
||||||
|
bounds.getLeft().setZ(13);
|
||||||
|
bounds.getRight().setZ(16);
|
||||||
|
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
|
||||||
|
bounds.getLeft().setZ(13);
|
||||||
|
bounds.getRight().setZ(16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sprite == null) {
|
quads.addAll(new CubeBuilder()
|
||||||
sprite = Minecraft.getMinecraft().getTextureMapBlocks().getMissingSprite();
|
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ())
|
||||||
|
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
|
||||||
|
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
||||||
|
.bake()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Left
|
||||||
|
if (coverSide == EnumFacing.NORTH) {
|
||||||
|
if (hasEast) {
|
||||||
|
bounds.getRight().setX(14);
|
||||||
|
} else {
|
||||||
|
bounds.getRight().setX(16);
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getLeft().setX(13);
|
||||||
|
} else if (coverSide == EnumFacing.SOUTH) {
|
||||||
|
if (hasWest) {
|
||||||
|
bounds.getRight().setX(2);
|
||||||
|
} else {
|
||||||
|
bounds.getRight().setX(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getLeft().setX(3);
|
||||||
|
} else if (coverSide == EnumFacing.EAST) {
|
||||||
|
bounds.getRight().setZ(16);
|
||||||
|
bounds.getLeft().setZ(13);
|
||||||
|
} else if (coverSide == EnumFacing.WEST) {
|
||||||
|
bounds.getLeft().setZ(0);
|
||||||
|
bounds.getRight().setZ(3);
|
||||||
|
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
|
||||||
|
bounds.getLeft().setZ(0);
|
||||||
|
bounds.getRight().setZ(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprite;
|
quads.addAll(new CubeBuilder()
|
||||||
|
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ())
|
||||||
|
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
|
||||||
|
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
||||||
|
.bake()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Bottom
|
||||||
|
if (coverSide == EnumFacing.NORTH) {
|
||||||
|
bounds.getLeft().setX(3);
|
||||||
|
bounds.getRight().setX(13);
|
||||||
|
|
||||||
|
if (hasDown) {
|
||||||
|
bounds.getLeft().setY(2);
|
||||||
|
} else {
|
||||||
|
bounds.getLeft().y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getRight().y = 3;
|
||||||
|
} else if (coverSide == EnumFacing.SOUTH) {
|
||||||
|
bounds.getRight().setX(3);
|
||||||
|
bounds.getLeft().setX(13);
|
||||||
|
|
||||||
|
if (hasDown) {
|
||||||
|
bounds.getLeft().setY(2);
|
||||||
|
} else {
|
||||||
|
bounds.getLeft().y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getRight().y = 3;
|
||||||
|
} else if (coverSide == EnumFacing.EAST) {
|
||||||
|
bounds.getLeft().setZ(3);
|
||||||
|
bounds.getRight().setZ(13);
|
||||||
|
|
||||||
|
if (hasDown) {
|
||||||
|
bounds.getLeft().setY(2);
|
||||||
|
} else {
|
||||||
|
bounds.getLeft().y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getRight().y = 3;
|
||||||
|
} else if (coverSide == EnumFacing.WEST) {
|
||||||
|
bounds.getLeft().setZ(3);
|
||||||
|
bounds.getRight().setZ(13);
|
||||||
|
|
||||||
|
if (hasDown) {
|
||||||
|
bounds.getLeft().setY(2);
|
||||||
|
} else {
|
||||||
|
bounds.getLeft().y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getRight().y = 3;
|
||||||
|
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
|
||||||
|
bounds.getLeft().setZ(3);
|
||||||
|
bounds.getRight().setZ(13);
|
||||||
|
|
||||||
|
bounds.getLeft().setX(0);
|
||||||
|
bounds.getRight().setX(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
quads.addAll(new CubeBuilder()
|
||||||
|
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ())
|
||||||
|
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
|
||||||
|
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
||||||
|
.bake()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Up
|
||||||
|
if (coverSide == EnumFacing.NORTH) {
|
||||||
|
bounds.getLeft().setX(3);
|
||||||
|
bounds.getRight().setX(13);
|
||||||
|
|
||||||
|
if (hasUp) {
|
||||||
|
bounds.getRight().setY(14);
|
||||||
|
} else {
|
||||||
|
bounds.getRight().y = 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getLeft().y = 13;
|
||||||
|
} else if (coverSide == EnumFacing.SOUTH) {
|
||||||
|
bounds.getRight().setX(3);
|
||||||
|
bounds.getLeft().setX(13);
|
||||||
|
|
||||||
|
if (hasUp) {
|
||||||
|
bounds.getRight().setY(14);
|
||||||
|
} else {
|
||||||
|
bounds.getRight().y = 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getLeft().y = 13;
|
||||||
|
} else if (coverSide == EnumFacing.EAST) {
|
||||||
|
bounds.getLeft().setZ(3);
|
||||||
|
bounds.getRight().setZ(13);
|
||||||
|
|
||||||
|
if (hasUp) {
|
||||||
|
bounds.getRight().setY(14);
|
||||||
|
} else {
|
||||||
|
bounds.getRight().y = 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getLeft().y = 13;
|
||||||
|
} else if (coverSide == EnumFacing.WEST) {
|
||||||
|
bounds.getLeft().setZ(3);
|
||||||
|
bounds.getRight().setZ(13);
|
||||||
|
|
||||||
|
if (hasUp) {
|
||||||
|
bounds.getRight().setY(14);
|
||||||
|
} else {
|
||||||
|
bounds.getRight().y = 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
bounds.getLeft().y = 13;
|
||||||
|
} else if (coverSide == EnumFacing.DOWN || coverSide == EnumFacing.UP) {
|
||||||
|
bounds.getLeft().setZ(3);
|
||||||
|
bounds.getRight().setZ(13);
|
||||||
|
|
||||||
|
bounds.getLeft().setX(13);
|
||||||
|
bounds.getRight().setX(16);
|
||||||
|
}
|
||||||
|
|
||||||
|
quads.addAll(new CubeBuilder()
|
||||||
|
.from(bounds.getLeft().getX(), bounds.getLeft().getY(), bounds.getLeft().getZ())
|
||||||
|
.to(bounds.getRight().getX(), bounds.getRight().getY(), bounds.getRight().getZ())
|
||||||
|
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
||||||
|
.bake()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -4,6 +4,7 @@ import com.google.common.cache.CacheBuilder;
|
|||||||
import com.google.common.cache.CacheLoader;
|
import com.google.common.cache.CacheLoader;
|
||||||
import com.google.common.cache.LoadingCache;
|
import com.google.common.cache.LoadingCache;
|
||||||
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.CoverType;
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemCover;
|
import com.raoulvdberge.refinedstorage.item.ItemCover;
|
||||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
@@ -31,13 +32,13 @@ public class BakedModelCover extends BakedModelCableCover {
|
|||||||
private IBlockState state;
|
private IBlockState state;
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
private EnumFacing side;
|
private EnumFacing side;
|
||||||
private boolean hollow;
|
private CoverType type;
|
||||||
|
|
||||||
CacheKey(IBlockState state, ItemStack stack, EnumFacing side, boolean hollow) {
|
CacheKey(IBlockState state, ItemStack stack, EnumFacing side, CoverType type) {
|
||||||
this.state = state;
|
this.state = state;
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.side = side;
|
this.side = side;
|
||||||
this.hollow = hollow;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -52,7 +53,7 @@ public class BakedModelCover extends BakedModelCableCover {
|
|||||||
|
|
||||||
BakedModelCover.CacheKey cacheKey = (BakedModelCover.CacheKey) o;
|
BakedModelCover.CacheKey cacheKey = (BakedModelCover.CacheKey) o;
|
||||||
|
|
||||||
return cacheKey.hollow == hollow && cacheKey.stack.getItem() == stack.getItem() && cacheKey.stack.getItemDamage() == stack.getItemDamage() && cacheKey.side == side && Objects.equals(cacheKey.state, state);
|
return cacheKey.type == type && cacheKey.stack.getItem() == stack.getItem() && cacheKey.stack.getItemDamage() == stack.getItemDamage() && cacheKey.side == side && Objects.equals(cacheKey.state, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,7 +62,7 @@ public class BakedModelCover extends BakedModelCableCover {
|
|||||||
result = 31 * result + stack.getItemDamage();
|
result = 31 * result + stack.getItemDamage();
|
||||||
result = 31 * result + (side != null ? side.hashCode() : 0);
|
result = 31 * result + (side != null ? side.hashCode() : 0);
|
||||||
result = 31 * result + (state != null ? state.hashCode() : 0);
|
result = 31 * result + (state != null ? state.hashCode() : 0);
|
||||||
result = 31 * result + Boolean.hashCode(hollow);
|
result = 31 * result + type.hashCode();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -71,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<>();
|
||||||
|
|
||||||
addCoverOrHollow(quads, new Cover(key.stack, key.hollow), EnumFacing.NORTH, key.side, 0, false, false, false, false, false);
|
addCover(quads, new Cover(key.stack, key.type), EnumFacing.NORTH, key.side, 0, false, false, false, false, false);
|
||||||
|
|
||||||
return quads;
|
return quads;
|
||||||
}
|
}
|
||||||
@@ -79,13 +80,13 @@ public class BakedModelCover extends BakedModelCableCover {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
private boolean hollow;
|
private CoverType type;
|
||||||
|
|
||||||
public BakedModelCover(@Nullable ItemStack stack, boolean hollow) {
|
public BakedModelCover(@Nullable ItemStack stack, CoverType type) {
|
||||||
super(null);
|
super(null);
|
||||||
|
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
this.hollow = hollow;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -94,7 +95,7 @@ public class BakedModelCover extends BakedModelCableCover {
|
|||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
CacheKey key = new CacheKey(state, ItemCover.getItem(stack), side, hollow);
|
CacheKey key = new CacheKey(state, ItemCover.getItem(stack), side, type);
|
||||||
|
|
||||||
return CACHE.getUnchecked(key);
|
return CACHE.getUnchecked(key);
|
||||||
}
|
}
|
||||||
@@ -108,7 +109,7 @@ public class BakedModelCover extends BakedModelCableCover {
|
|||||||
return new ItemOverrideList(Collections.emptyList()) {
|
return new ItemOverrideList(Collections.emptyList()) {
|
||||||
@Override
|
@Override
|
||||||
public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) {
|
public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) {
|
||||||
return new BakedModelCover(stack, hollow);
|
return new BakedModelCover(stack, type);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -1,21 +1,36 @@
|
|||||||
package com.raoulvdberge.refinedstorage.render.model.loader;
|
package com.raoulvdberge.refinedstorage.render.model.loader;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType;
|
||||||
import com.raoulvdberge.refinedstorage.render.model.ModelCover;
|
import com.raoulvdberge.refinedstorage.render.model.ModelCover;
|
||||||
import net.minecraft.client.resources.IResourceManager;
|
import net.minecraft.client.resources.IResourceManager;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.client.model.ICustomModelLoader;
|
import net.minecraftforge.client.model.ICustomModelLoader;
|
||||||
import net.minecraftforge.client.model.IModel;
|
import net.minecraftforge.client.model.IModel;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class CustomModelLoaderCover implements ICustomModelLoader {
|
public class CustomModelLoaderCover implements ICustomModelLoader {
|
||||||
@Override
|
@Override
|
||||||
public boolean accepts(ResourceLocation modelLocation) {
|
public boolean accepts(ResourceLocation modelLocation) {
|
||||||
return modelLocation.getResourceDomain().equals(RS.ID) && (modelLocation.getResourcePath().equals("cover") || modelLocation.getResourcePath().equals("hollow_cover"));
|
return modelLocation.getResourceDomain().equals(RS.ID) && getType(modelLocation) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IModel loadModel(ResourceLocation modelLocation) {
|
public IModel loadModel(ResourceLocation modelLocation) {
|
||||||
return new ModelCover(modelLocation.getResourcePath().equals("hollow_cover"));
|
return new ModelCover(getType(modelLocation));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private CoverType getType(ResourceLocation modelLocation) {
|
||||||
|
switch (modelLocation.getResourcePath()) {
|
||||||
|
case "cover":
|
||||||
|
return CoverType.NORMAL;
|
||||||
|
case "hollow_wide_cover":
|
||||||
|
return CoverType.HOLLOW_WIDE;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -2,31 +2,41 @@ package com.raoulvdberge.refinedstorage.util;
|
|||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.FontRenderer;
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
import net.minecraft.client.renderer.BufferBuilder;
|
import net.minecraft.client.renderer.BufferBuilder;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
import net.minecraft.client.renderer.RenderHelper;
|
import net.minecraft.client.renderer.RenderHelper;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||||
|
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.client.renderer.texture.TextureMap;
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.client.util.ITooltipFlag;
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
|
import net.minecraftforge.client.ForgeHooksClient;
|
||||||
|
import net.minecraftforge.client.MinecraftForgeClient;
|
||||||
import net.minecraftforge.client.event.RenderTooltipEvent;
|
import net.minecraftforge.client.event.RenderTooltipEvent;
|
||||||
|
import net.minecraftforge.common.ForgeModContainer;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.model.TRSRTransformation;
|
import net.minecraftforge.common.model.TRSRTransformation;
|
||||||
import net.minecraftforge.fluids.Fluid;
|
import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fml.client.FMLClientHandler;
|
||||||
import net.minecraftforge.fml.client.config.GuiUtils;
|
import net.minecraftforge.fml.client.config.GuiUtils;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
@@ -48,6 +58,8 @@ public final class RenderUtils {
|
|||||||
private static ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> DEFAULT_ITEM_TRANSFORM;
|
private static ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> DEFAULT_ITEM_TRANSFORM;
|
||||||
private static ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> DEFAULT_BLOCK_TRANSFORM;
|
private static ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> DEFAULT_BLOCK_TRANSFORM;
|
||||||
|
|
||||||
|
private static final VertexFormat ITEM_FORMAT_WITH_LIGHTMAP = new VertexFormat(DefaultVertexFormats.ITEM).addElement(DefaultVertexFormats.TEX_2S);
|
||||||
|
|
||||||
public static AxisAlignedBB getBounds(int fromX, int fromY, int fromZ, int toX, int toY, int toZ) {
|
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);
|
return new AxisAlignedBB((float) fromX / 16F, (float) fromY / 16F, (float) fromZ / 16F, (float) toX / 16F, (float) toY / 16F, (float) toZ / 16F);
|
||||||
}
|
}
|
||||||
@@ -483,4 +495,70 @@ public final class RenderUtils {
|
|||||||
|
|
||||||
return lines;
|
return lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public static VertexFormat getFormatWithLightMap(VertexFormat format) {
|
||||||
|
if (FMLClientHandler.instance().hasOptifine() || !ForgeModContainer.forgeLightPipelineEnabled) {
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (format == DefaultVertexFormats.BLOCK) {
|
||||||
|
return DefaultVertexFormats.BLOCK;
|
||||||
|
} else if (format == DefaultVertexFormats.ITEM) {
|
||||||
|
return ITEM_FORMAT_WITH_LIGHTMAP;
|
||||||
|
} else if (!format.hasUvOffset(1)) {
|
||||||
|
VertexFormat result = new VertexFormat(format);
|
||||||
|
|
||||||
|
result.addElement(DefaultVertexFormats.TEX_2S);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public static TextureAtlasSprite getSprite(IBakedModel coverModel, IBlockState coverState, EnumFacing facing, long rand) {
|
||||||
|
TextureAtlasSprite sprite = null;
|
||||||
|
|
||||||
|
BlockRenderLayer originalLayer = MinecraftForgeClient.getRenderLayer();
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (BlockRenderLayer layer : BlockRenderLayer.values()) {
|
||||||
|
ForgeHooksClient.setRenderLayer(layer);
|
||||||
|
|
||||||
|
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, facing, rand)) {
|
||||||
|
return bakedQuad.getSprite();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (BakedQuad bakedQuad : coverModel.getQuads(coverState, null, rand)) {
|
||||||
|
if (sprite == null) {
|
||||||
|
sprite = bakedQuad.getSprite();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bakedQuad.getFace() == facing) {
|
||||||
|
return bakedQuad.getSprite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// NO OP
|
||||||
|
} finally {
|
||||||
|
ForgeHooksClient.setRenderLayer(originalLayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sprite == null) {
|
||||||
|
try {
|
||||||
|
sprite = coverModel.getParticleTexture();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// NO OP
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sprite == null) {
|
||||||
|
sprite = Minecraft.getMinecraft().getTextureMapBlocks().getMissingSprite();
|
||||||
|
}
|
||||||
|
|
||||||
|
return sprite;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -292,7 +292,7 @@ item.refinedstorage:security_card.name=Security Card
|
|||||||
item.refinedstorage:security_card.owner=Bound to: %s
|
item.refinedstorage:security_card.owner=Bound to: %s
|
||||||
item.refinedstorage:cutting_tool.name=Cutting Tool
|
item.refinedstorage:cutting_tool.name=Cutting Tool
|
||||||
item.refinedstorage:cover.name=Cover
|
item.refinedstorage:cover.name=Cover
|
||||||
item.refinedstorage:hollow_cover.name=Hollow Cover
|
item.refinedstorage:hollow_wide_cover.name=Hollow Wide Cover
|
||||||
|
|
||||||
commands.refinedstorage.createdisk.usage=/createdisk <player> <item> <metadata> <id>
|
commands.refinedstorage.createdisk.usage=/createdisk <player> <item> <metadata> <id>
|
||||||
commands.refinedstorage.createdisk.error.notADisk=The given disk item is not a disk.
|
commands.refinedstorage.createdisk.error.notADisk=The given disk item is not a disk.
|
||||||
|
Reference in New Issue
Block a user