From 2f691814f40f305aeef27569b2cae6a541e9bd00 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Tue, 19 Jun 2018 15:59:30 +0200 Subject: [PATCH] Reader and writer always return a dummy cap now. --- .../readerwriter/IReaderWriterChannel.java | 2 +- .../readerwriter/IReaderWriterHandler.java | 5 +++ .../readerwriter/ReaderWriterChannel.java | 2 +- .../ReaderWriterHandlerFluids.java | 29 ++++++++++++ .../ReaderWriterHandlerItems.java | 35 +++++++++++++++ .../ReaderWriterHandlerRedstone.java | 5 +++ .../readerwriter/ReaderWriterManager.java | 2 +- .../ReaderWriterHandlerForgeEnergy.java | 37 +++++++++++++++ .../refinedstorage/tile/TileReader.java | 45 +++++-------------- .../refinedstorage/tile/TileWriter.java | 45 +++++-------------- 10 files changed, 134 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterChannel.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterChannel.java index aa3ac190e..39b850912 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterChannel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterChannel.java @@ -36,5 +36,5 @@ public interface IReaderWriterChannel { * * @param tag the tag to read from */ - void readFromNBT(NBTTagCompound tag); + void readFromNbt(NBTTagCompound tag); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandler.java index 393de1e0c..eecb6a19f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReaderWriterHandler.java @@ -53,6 +53,11 @@ public interface IReaderWriterHandler { */ T getCapabilityWriter(IWriter writer, Capability capability); + /** + * @return a dummy capability that does nothing, for use client side + */ + Object getNullCapability(); + /** * Writes this reader writer handler to NBT. * diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java index d8e19559e..d8afb8a3c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterChannel.java @@ -54,7 +54,7 @@ public class ReaderWriterChannel implements IReaderWriterChannel { } @Override - public void readFromNBT(NBTTagCompound tag) { + public void readFromNbt(NBTTagCompound tag) { for (IReaderWriterHandler handler : handlers) { String id = String.format(NBT_HANDLER, handler.getId()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerFluids.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerFluids.java index a958adb36..f6218b1d0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerFluids.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerFluids.java @@ -22,6 +22,30 @@ import java.util.List; public class ReaderWriterHandlerFluids implements IReaderWriterHandler { public static final String ID = "fluids"; + private static final IFluidHandler NULL_CAP = new IFluidHandler() { + @Override + public IFluidTankProperties[] getTankProperties() { + return new IFluidTankProperties[0]; + } + + @Override + public int fill(FluidStack resource, boolean doFill) { + return 0; + } + + @Nullable + @Override + public FluidStack drain(FluidStack resource, boolean doDrain) { + return null; + } + + @Nullable + @Override + public FluidStack drain(int maxDrain, boolean doDrain) { + return null; + } + }; + private FluidTank tank; private FluidTankReaderWriter tankReader, tankWriter; @@ -73,6 +97,11 @@ public class ReaderWriterHandlerFluids implements IReaderWriterHandler { return null; } + @Override + public Object getNullCapability() { + return NULL_CAP; + } + @Override public NBTTagCompound writeToNbt(NBTTagCompound tag) { tank.writeToNBT(tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerItems.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerItems.java index f1b4b9b20..2f6631a10 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerItems.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerItems.java @@ -23,6 +23,36 @@ import java.util.List; public class ReaderWriterHandlerItems implements IReaderWriterHandler { public static final String ID = "items"; + private static final IItemHandler NULL_CAP = new IItemHandler() { + @Override + public int getSlots() { + return 0; + } + + @Nonnull + @Override + public ItemStack getStackInSlot(int slot) { + return ItemStack.EMPTY; + } + + @Nonnull + @Override + public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { + return stack; + } + + @Nonnull + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + return ItemStack.EMPTY; + } + + @Override + public int getSlotLimit(int slot) { + return 0; + } + }; + private ItemStackHandler items; private ItemHandlerReaderWriter itemsReader, itemsWriter; @@ -74,6 +104,11 @@ public class ReaderWriterHandlerItems implements IReaderWriterHandler { return null; } + @Override + public Object getNullCapability() { + return NULL_CAP; + } + @Override public NBTTagCompound writeToNbt(NBTTagCompound tag) { StackUtils.writeItems(items, 0, tag); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRedstone.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRedstone.java index 1e7eca6a3..c42f18e42 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRedstone.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterHandlerRedstone.java @@ -59,6 +59,11 @@ public class ReaderWriterHandlerRedstone implements IReaderWriterHandler { return null; } + @Override + public Object getNullCapability() { + return null; + } + @Override public NBTTagCompound writeToNbt(NBTTagCompound tag) { return tag; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterManager.java index ba524663f..c8a21b807 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/readerwriter/ReaderWriterManager.java @@ -105,7 +105,7 @@ public class ReaderWriterManager implements IReaderWriterManager { IReaderWriterChannel channel = API.instance().createReaderWriterChannel(name, network); - channel.readFromNBT(channelTag); + channel.readFromNbt(channelTag); channels.put(name, channel); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ReaderWriterHandlerForgeEnergy.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ReaderWriterHandlerForgeEnergy.java index 48413b2e0..ddea0710a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ReaderWriterHandlerForgeEnergy.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ReaderWriterHandlerForgeEnergy.java @@ -20,6 +20,38 @@ import java.util.List; public class ReaderWriterHandlerForgeEnergy implements IReaderWriterHandler { public static final String ID = "forgeenergy"; + private static final IEnergyStorage NULL_CAP = new IEnergyStorage() { + @Override + public int receiveEnergy(int maxReceive, boolean simulate) { + return 0; + } + + @Override + public int extractEnergy(int maxExtract, boolean simulate) { + return 0; + } + + @Override + public int getEnergyStored() { + return 0; + } + + @Override + public int getMaxEnergyStored() { + return 0; + } + + @Override + public boolean canExtract() { + return false; + } + + @Override + public boolean canReceive() { + return false; + } + }; + private static final String NBT_ENERGY_STORED = "EnergyStored"; private EnergyStorage storage; @@ -89,6 +121,11 @@ public class ReaderWriterHandlerForgeEnergy implements IReaderWriterHandler { return null; } + @Override + public Object getNullCapability() { + return NULL_CAP; + } + @Override public NBTTagCompound writeToNbt(NBTTagCompound tag) { tag.setInteger(NBT_ENERGY_STORED, storage.getEnergyStored()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java index f64708e21..5fa2e3966 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java @@ -15,8 +15,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.relauncher.Side; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -36,18 +34,6 @@ public class TileReader extends TileNode { dataManager.addWatchedParameter(CHANNEL); } - private T getDummyCapabilityForClient(IReader reader, Capability capability) { - for (IReaderWriterHandlerFactory factory : API.instance().getReaderWriterHandlerRegistry().all()) { - T dummy = factory.create(null).getCapabilityReader(reader, capability); - - if (dummy != null) { - return dummy; - } - } - - return null; - } - @Override public boolean hasCapability(@Nonnull Capability capability, @Nullable EnumFacing facing) { if (super.hasCapability(capability, facing)) { @@ -60,22 +46,8 @@ public class TileReader extends TileNode { return false; } - if (reader.getNetwork() == null || !reader.canUpdate()) { - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { - return getDummyCapabilityForClient(reader, capability) != null; - } - - return false; - } - - IReaderWriterChannel channel = reader.getNetwork().getReaderWriterManager().getChannel(reader.getChannel()); - - if (channel == null) { - return false; - } - - for (IReaderWriterHandler handler : channel.getHandlers()) { - if (handler.hasCapabilityReader(reader, capability)) { + for (IReaderWriterHandlerFactory handlerFactory : API.instance().getReaderWriterHandlerRegistry().all()) { + if (handlerFactory.create(null).hasCapabilityReader(reader, capability)) { return true; } } @@ -94,18 +66,21 @@ public class TileReader extends TileNode { return null; } - if (reader.getNetwork() == null || !reader.canUpdate()) { - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { - return getDummyCapabilityForClient(reader, capability); + Object dummyCap = null; + for (IReaderWriterHandlerFactory handlerFactory : API.instance().getReaderWriterHandlerRegistry().all()) { + if (handlerFactory.create(null).hasCapabilityReader(reader, capability)) { + dummyCap = handlerFactory.create(null).getNullCapability(); } + } - return null; + if (reader.getNetwork() == null || !reader.canUpdate()) { + return (T) dummyCap; } IReaderWriterChannel channel = reader.getNetwork().getReaderWriterManager().getChannel(reader.getChannel()); if (channel == null) { - return null; + return (T) dummyCap; } for (IReaderWriterHandler handler : channel.getHandlers()) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java index fc29242a3..2e710bbd4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java @@ -11,8 +11,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.relauncher.Side; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -24,18 +22,6 @@ public class TileWriter extends TileNode { dataManager.addWatchedParameter(CHANNEL); } - private T getDummyCapabilityForClient(IWriter writer, Capability capability) { - for (IReaderWriterHandlerFactory factory : API.instance().getReaderWriterHandlerRegistry().all()) { - T dummy = factory.create(null).getCapabilityWriter(writer, capability); - - if (dummy != null) { - return dummy; - } - } - - return null; - } - @Override public boolean hasCapability(@Nonnull Capability capability, @Nullable EnumFacing facing) { if (super.hasCapability(capability, facing)) { @@ -48,22 +34,8 @@ public class TileWriter extends TileNode { return false; } - if (writer.getNetwork() == null || !writer.canUpdate()) { - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { - return getDummyCapabilityForClient(writer, capability) != null; - } - - return false; - } - - IReaderWriterChannel channel = writer.getNetwork().getReaderWriterManager().getChannel(writer.getChannel()); - - if (channel == null) { - return false; - } - - for (IReaderWriterHandler handler : channel.getHandlers()) { - if (handler.hasCapabilityWriter(writer, capability)) { + for (IReaderWriterHandlerFactory handlerFactory : API.instance().getReaderWriterHandlerRegistry().all()) { + if (handlerFactory.create(null).hasCapabilityWriter(writer, capability)) { return true; } } @@ -82,18 +54,21 @@ public class TileWriter extends TileNode { return null; } - if (writer.getNetwork() == null || !writer.canUpdate()) { - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { - return getDummyCapabilityForClient(writer, capability); + Object dummyCap = null; + for (IReaderWriterHandlerFactory handlerFactory : API.instance().getReaderWriterHandlerRegistry().all()) { + if (handlerFactory.create(null).hasCapabilityWriter(writer, capability)) { + dummyCap = handlerFactory.create(null).getNullCapability(); } + } - return null; + if (writer.getNetwork() == null || !writer.canUpdate()) { + return (T) dummyCap; } IReaderWriterChannel channel = writer.getNetwork().getReaderWriterManager().getChannel(writer.getChannel()); if (channel == null) { - return null; + return (T) dummyCap; } for (IReaderWriterHandler handler : channel.getHandlers()) {