diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java b/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java index f3eef9d00..a3a09eff5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/IRSAPI.java @@ -11,13 +11,9 @@ import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRegistry; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.api.util.IStackList; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; -import java.util.Set; -import java.util.function.BiPredicate; /** * Represents a Refined Storage API implementation. @@ -92,9 +88,4 @@ public interface IRSAPI { * @return a hashcode for the given stack */ int getFluidStackHashCode(FluidStack stack); - - /** - * @return a set with the predicates to check if a block is connectable - */ - Set> getConnectableConditions(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java index 3aa67aa92..d27230953 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/API.java @@ -137,9 +137,4 @@ public class API implements IRSAPI { public int getFluidStackHashCode(FluidStack stack) { return stack.getFluid().hashCode() * (stack.tag != null ? stack.tag.hashCode() : 1); } - - @Override - public Set> getConnectableConditions() { - return connectableConditions; - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/fluid/FluidStorageNBT.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/fluid/FluidStorageNBT.java deleted file mode 100755 index 261be027c..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/storage/fluid/FluidStorageNBT.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.raoulvdberge.refinedstorage.apiimpl.storage.fluid; - -import com.raoulvdberge.refinedstorage.RSUtils; -import com.raoulvdberge.refinedstorage.api.storage.AccessType; -import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorage; -import com.raoulvdberge.refinedstorage.apiimpl.API; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.NonNullList; -import net.minecraftforge.fluids.FluidStack; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -/** - * A implementation of {@link IFluidStorage} that stores storage fluids in NBT. - */ -public abstract class FluidStorageNBT implements IFluidStorage { - /** - * The current save protocol that is used. It's set to every {@link FluidStorageNBT} to allow for - * safe backwards compatibility breaks. - */ - private static final int PROTOCOL = 1; - - private static final String NBT_PROTOCOL = "Protocol"; - - private static final String NBT_FLUIDS = "Fluids"; - private static final String NBT_STORED = "Stored"; - - private NBTTagCompound tag; - private int capacity; - private TileEntity tile; - - private NonNullList stacks = NonNullList.create(); - - /** - * @param tag The NBT tag we are reading from and writing the amount stored to, has to be initialized with {@link FluidStorageNBT#createNBT()} if it doesn't exist yet - * @param capacity The capacity of this storage, -1 for infinite capacity - * @param tile A {@link TileEntity} that the NBT storage is in, will be marked dirty when the storage changes - */ - public FluidStorageNBT(NBTTagCompound tag, int capacity, @Nullable TileEntity tile) { - this.tag = tag; - this.capacity = capacity; - this.tile = tile; - - readFromNBT(); - } - - private void readFromNBT() { - NBTTagList list = (NBTTagList) tag.getTag(NBT_FLUIDS); - - for (int i = 0; i < list.tagCount(); ++i) { - FluidStack stack = FluidStack.loadFluidStackFromNBT(list.getCompoundTagAt(i)); - - if (stack != null) { - stacks.add(stack); - } - } - } - - /** - * Writes the items to the NBT tag. - */ - public void writeToNBT() { - NBTTagList list = new NBTTagList(); - - for (FluidStack stack : stacks) { - list.appendTag(stack.writeToNBT(new NBTTagCompound())); - } - - tag.setTag(NBT_FLUIDS, list); - tag.setInteger(NBT_PROTOCOL, PROTOCOL); - } - - @Override - public NonNullList getStacks() { - return stacks; - } - - @Override - public synchronized FluidStack insertFluid(@Nonnull FluidStack stack, int size, boolean simulate) { - for (FluidStack otherStack : stacks) { - if (otherStack.isFluidEqual(stack)) { - if (getCapacity() != -1 && getStored() + size > getCapacity()) { - int remainingSpace = getCapacity() - getStored(); - - if (remainingSpace <= 0) { - if (isVoiding()) { - return null; - } - - return RSUtils.copyStackWithSize(stack, size); - } - - if (!simulate) { - tag.setInteger(NBT_STORED, getStored() + remainingSpace); - - otherStack.amount += remainingSpace; - - onStorageChanged(); - } - - return isVoiding() ? null : RSUtils.copyStackWithSize(otherStack, size - remainingSpace); - } else { - if (!simulate) { - tag.setInteger(NBT_STORED, getStored() + size); - - otherStack.amount += size; - - onStorageChanged(); - } - - return null; - } - } - } - - if (getCapacity() != -1 && getStored() + size > getCapacity()) { - int remainingSpace = getCapacity() - getStored(); - - if (remainingSpace <= 0) { - if (isVoiding()) { - return null; - } - - return RSUtils.copyStackWithSize(stack, size); - } - - if (!simulate) { - tag.setInteger(NBT_STORED, getStored() + remainingSpace); - - stacks.add(RSUtils.copyStackWithSize(stack, remainingSpace)); - - onStorageChanged(); - } - - return isVoiding() ? null : RSUtils.copyStackWithSize(stack, size - remainingSpace); - } else { - if (!simulate) { - tag.setInteger(NBT_STORED, getStored() + size); - - stacks.add(RSUtils.copyStackWithSize(stack, size)); - - onStorageChanged(); - } - - return null; - } - } - - @Override - public synchronized FluidStack extractFluid(@Nonnull FluidStack stack, int size, int flags, boolean simulate) { - for (FluidStack otherStack : stacks) { - if (API.instance().getComparer().isEqual(otherStack, stack, flags)) { - if (size > otherStack.amount) { - size = otherStack.amount; - } - - if (!simulate) { - if (otherStack.amount - size == 0) { - stacks.remove(otherStack); - } else { - otherStack.amount -= size; - } - - tag.setInteger(NBT_STORED, getStored() - size); - - onStorageChanged(); - } - - return RSUtils.copyStackWithSize(otherStack, size); - } - } - - return null; - } - - public void onStorageChanged() { - if (tile != null) { - tile.markDirty(); - } - } - - @Override - public int getStored() { - return getStoredFromNBT(tag); - } - - public int getCapacity() { - return capacity; - } - - protected boolean isVoiding() { - return false; - } - - @Override - public int getCacheDelta(int storedPreInsertion, int size, @Nullable FluidStack remainder) { - if (getAccessType() == AccessType.INSERT) { - return 0; - } - - int inserted = remainder == null ? size : (size - remainder.amount); - - if (isVoiding() && storedPreInsertion + inserted > getCapacity()) { - inserted = getCapacity() - storedPreInsertion; - } - - return inserted; - } - - public NBTTagCompound getTag() { - return tag; - } - - public static int getStoredFromNBT(NBTTagCompound tag) { - return tag.getInteger(NBT_STORED); - } - - public static NBTTagCompound getNBTShareTag(NBTTagCompound tag) { - NBTTagCompound otherTag = new NBTTagCompound(); - - otherTag.setInteger(NBT_STORED, getStoredFromNBT(tag)); - otherTag.setTag(NBT_FLUIDS, new NBTTagList()); // To circumvent not being able to insert disks in Disk Drives (see FluidStorageNBT#isValid(ItemStack)). - - return otherTag; - } - - /* - * @return A NBT tag initialized with the fields that {@link NBTStorage} uses - */ - public static NBTTagCompound createNBT() { - NBTTagCompound tag = new NBTTagCompound(); - - tag.setTag(NBT_FLUIDS, new NBTTagList()); - tag.setInteger(NBT_STORED, 0); - tag.setInteger(NBT_PROTOCOL, PROTOCOL); - - return tag; - } - - public static boolean isValid(ItemStack stack) { - return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_FLUIDS) && stack.getTagCompound().hasKey(NBT_STORED); - } - - /** - * @param stack The {@link ItemStack} to populate with the NBT tags from {@link FluidStorageNBT#createNBT()} - * @return The provided {@link ItemStack} with NBT tags from {@link FluidStorageNBT#createNBT()} - */ - public static ItemStack createStackWithNBT(ItemStack stack) { - stack.setTagCompound(createNBT()); - - return stack; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java index cd2fc646f..afa95998c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockCable.java @@ -1,7 +1,7 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RSUtils; -import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNode; import com.raoulvdberge.refinedstorage.tile.TileCable; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockStateContainer; @@ -93,7 +93,7 @@ public class BlockCable extends BlockNode { TileEntity otherTile = world.getTileEntity(pos.offset(direction)); EnumFacing otherTileSide = direction.getOpposite(); - return API.instance().getConnectableConditions().stream().anyMatch(p -> p.test(otherTile, otherTileSide)); + return otherTile.hasCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, otherTileSide); } private boolean isInAABB(AxisAlignedBB aabb, float hitX, float hitY, float hitZ) { @@ -158,6 +158,7 @@ public class BlockCable extends BlockNode { } @Override + @SuppressWarnings("deprecation") public void addCollisionBoxToList(IBlockState state, World world, BlockPos pos, AxisAlignedBB entityBox, List collidingBoxes, Entity entityIn) { for (AxisAlignedBB aabb : getCollisionBoxes(this.getActualState(state, world, pos))) { addCollisionBoxToList(pos, entityBox, collidingBoxes, aabb); @@ -165,6 +166,7 @@ public class BlockCable extends BlockNode { } @Override + @SuppressWarnings("deprecation") public RayTraceResult collisionRayTrace(IBlockState state, World world, BlockPos pos, Vec3d start, Vec3d end) { RSUtils.AdvancedRayTraceResult result = RSUtils.collisionRayTrace(pos, start, end, getCollisionBoxes(this.getActualState(state, world, pos))); @@ -172,11 +174,13 @@ public class BlockCable extends BlockNode { } @Override + @SuppressWarnings("deprecation") public boolean isOpaqueCube(IBlockState state) { return false; } @Override + @SuppressWarnings("deprecation") public boolean isFullCube(IBlockState state) { return false; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java index 49cdcd234..1dec26d85 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockExternalStorage.java @@ -81,6 +81,7 @@ public class BlockExternalStorage extends BlockCable { } @Override + @SuppressWarnings("deprecation") public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos) { super.neighborChanged(state, world, pos, block, fromPos); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java index 328721fea..d4f6b0f9f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java @@ -61,6 +61,7 @@ public class BlockWriter extends BlockCable { } @Override + @SuppressWarnings("deprecation") public boolean canProvidePower(IBlockState state) { return true; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/CapabilityNetworkNode.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/CapabilityNetworkNode.java old mode 100644 new mode 100755 index fc372669b..c80569762 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/CapabilityNetworkNode.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/CapabilityNetworkNode.java @@ -24,7 +24,7 @@ public class CapabilityNetworkNode { } public void readNBT(Capability capability, INetworkNode instance, EnumFacing side, NBTBase base) { - // no-op + // NO OP } }, () -> new INetworkNode() { private INetworkMaster network; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 71771431e..2601dec87 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSUtils; -import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.*; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack; @@ -89,9 +88,6 @@ public class ProxyCommon { API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerRedstone.ID, tag -> new ReaderWriterHandlerRedstone()); API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerForgeEnergy.ID, ReaderWriterHandlerForgeEnergy::new); - API.instance().getConnectableConditions().add((tile, side) -> tile != null && - (tile instanceof INetworkMaster || tile.hasCapability(CapabilityNetworkNode.NETWORK_NODE_CAPABILITY, side))); - if (IntegrationTesla.isLoaded()) { API.instance().getReaderWriterHandlerRegistry().add(ReaderWriterHandlerTesla.ID, ReaderWriterHandlerTesla::new); }