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