From 21917db0f9222a4a896b8829ed7a73e66b4d2c6e Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Fri, 3 Feb 2017 15:23:06 +0100 Subject: [PATCH] Remove IReaderWriter interface, use seperate IReader/IWriter --- .../api/network/readerwriter/IReader.java | 14 ++++- .../readerwriter/IReaderWriterHandler.java | 46 +++++++++++----- .../api/network/readerwriter/IWriter.java | 14 ++++- .../network/node/IGuiReaderWriter.java} | 9 ++-- .../network/node/IGuiStorage.java} | 4 +- .../network/node/NetworkNodeFluidStorage.java | 3 +- .../network/node/NetworkNodeReader.java | 2 +- .../network/node/NetworkNodeStorage.java | 3 +- .../network/node/NetworkNodeWriter.java | 2 +- .../node/diskdrive/NetworkNodeDiskDrive.java | 4 +- .../NetworkNodeExternalStorage.java | 4 +- .../ReaderWriterHandlerFluids.java | 40 ++++++++++---- .../ReaderWriterHandlerItems.java | 40 +++++++++----- .../ReaderWriterHandlerRedstone.java | 26 ++++++++-- .../refinedstorage/block/BlockReader.java | 2 +- .../refinedstorage/block/BlockWriter.java | 2 +- .../container/ContainerReaderWriter.java | 8 +-- .../refinedstorage/gui/GuiHandler.java | 5 +- .../refinedstorage/gui/GuiReaderWriter.java | 6 +-- .../refinedstorage/gui/GuiStorage.java | 8 +-- .../ReaderWriterHandlerForgeEnergy.java | 38 ++++++++++---- .../tesla/ReaderWriterHandlerTesla.java | 52 ++++++++++++------- .../refinedstorage/tile/TileReader.java | 13 ++--- .../refinedstorage/tile/TileWriter.java | 22 ++++++-- 24 files changed, 252 insertions(+), 115 deletions(-) rename src/main/java/com/raoulvdberge/refinedstorage/{tile/IReaderWriter.java => apiimpl/network/node/IGuiReaderWriter.java} (81%) mode change 100755 => 100644 rename src/main/java/com/raoulvdberge/refinedstorage/{tile/IStorageGui.java => apiimpl/network/node/IGuiStorage.java} (87%) mode change 100755 => 100644 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReader.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReader.java index bf14298f1..539bd1383 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IReader.java @@ -1,13 +1,23 @@ package com.raoulvdberge.refinedstorage.api.network.readerwriter; -import com.raoulvdberge.refinedstorage.tile.IReaderWriter; +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; /** * Represents a reader block in the world. */ -public interface IReader extends IReaderWriter { +public interface IReader extends INetworkNode { /** * @return the redstone strength this reader is receiving */ int getRedstoneStrength(); + + /** + * @return the channel + */ + String getChannel(); + + /** + * @param channel the channel + */ + void setChannel(String channel); } 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 d05cd4e39..7531e1394 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 @@ -1,6 +1,5 @@ package com.raoulvdberge.refinedstorage.api.network.readerwriter; -import com.raoulvdberge.refinedstorage.tile.IReaderWriter; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.common.capabilities.Capability; @@ -26,18 +25,32 @@ public interface IReaderWriterHandler { void onWriterDisabled(IWriter writer); /** - * @param readerWriter the reader writer - * @param capability the capability - * @return whether we have the given capability for the reader writer + * @param reader the reader + * @param capability the capability + * @return whether we have the given capability for the reader */ - boolean hasCapability(IReaderWriter readerWriter, Capability capability); + boolean hasCapabilityReader(IReader reader, Capability capability); /** - * @param readerWriter the reader writer - * @param capability the capability - * @return the capability for the given reader writer + * @param reader the reader + * @param capability the capability + * @return the capability for the given reader */ - T getCapability(IReaderWriter readerWriter, Capability capability); + T getCapabilityReader(IReader reader, Capability capability); + + /** + * @param writer the writer + * @param capability the capability + * @return whether we have the given capability for the writer + */ + boolean hasCapabilityWriter(IWriter writer, Capability capability); + + /** + * @param writer the writer + * @param capability the capability + * @return the capability for the given writer + */ + T getCapabilityWriter(IWriter writer, Capability capability); /** * Writes this reader writer handler to NBT. @@ -53,9 +66,16 @@ public interface IReaderWriterHandler { String getId(); /** - * @param readerWriter the reader writer - * @param channel the channel - * @return status line(s) displayed when right clicking a reader or writer + * @param reader the reader + * @param channel the channel + * @return status line(s) displayed when right clicking a reader */ - List getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel); + List getStatusReader(IReader reader, IReaderWriterChannel channel); + + /** + * @param writer the writer + * @param channel the channel + * @return status line(s) displayed when right clicking a writer + */ + List getStatusWriter(IWriter writer, IReaderWriterChannel channel); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IWriter.java index d35381e9d..8577ce2d8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/readerwriter/IWriter.java @@ -1,12 +1,12 @@ package com.raoulvdberge.refinedstorage.api.network.readerwriter; -import com.raoulvdberge.refinedstorage.tile.IReaderWriter; +import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import net.minecraft.util.EnumFacing; /** * Represents a writer block in the world. */ -public interface IWriter extends IReaderWriter { +public interface IWriter extends INetworkNode { /** * @return the redstone strength this writer block is emitting */ @@ -21,4 +21,14 @@ public interface IWriter extends IReaderWriter { * @return the direction of the writer */ EnumFacing getDirection(); + + /** + * @return the channel + */ + String getChannel(); + + /** + * @param channel the channel + */ + void setChannel(String channel); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiReaderWriter.java old mode 100755 new mode 100644 similarity index 81% rename from src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiReaderWriter.java index 16d95197f..f6867e9ed --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiReaderWriter.java @@ -1,10 +1,9 @@ -package com.raoulvdberge.refinedstorage.tile; +package com.raoulvdberge.refinedstorage.apiimpl.network.node; import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; -import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; -public interface IReaderWriter extends INetworkNode { +public interface IGuiReaderWriter { String getTitle(); String getChannel(); @@ -15,6 +14,10 @@ public interface IReaderWriter extends INetworkNode { TileDataParameter getRedstoneModeParameter(); + INetworkMaster getNetwork(); + + boolean canUpdate(); + default void onAdd(String name) { INetworkMaster network = getNetwork(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/IStorageGui.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiStorage.java old mode 100755 new mode 100644 similarity index 87% rename from src/main/java/com/raoulvdberge/refinedstorage/tile/IStorageGui.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiStorage.java index 7479c6082..d97011880 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/IStorageGui.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/IGuiStorage.java @@ -1,9 +1,9 @@ -package com.raoulvdberge.refinedstorage.tile; +package com.raoulvdberge.refinedstorage.apiimpl.network.node; import com.raoulvdberge.refinedstorage.api.storage.AccessType; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; -public interface IStorageGui { +public interface IGuiStorage { String getGuiTitle(); TileDataParameter getTypeParameter(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java index 632200cea..40117e2de 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeFluidStorage.java @@ -13,7 +13,6 @@ import com.raoulvdberge.refinedstorage.block.BlockFluidStorage; import com.raoulvdberge.refinedstorage.block.EnumFluidStorageType; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; -import com.raoulvdberge.refinedstorage.tile.IStorageGui; import com.raoulvdberge.refinedstorage.tile.TileFluidStorage; import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; @@ -25,7 +24,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; -public class NetworkNodeFluidStorage extends NetworkNode implements IStorageGui, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType { +public class NetworkNodeFluidStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType { public static final String ID = "fluid_storage"; class StorageFluid extends StorageDiskFluid { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java index 01231cd9e..82bc93b5d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeReader.java @@ -8,7 +8,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -public class NetworkNodeReader extends NetworkNode implements IReader { +public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReaderWriter { public static final String ID = "reader"; private static final String NBT_CHANNEL = "Channel"; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java index 5786f0b21..bfde86fd1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeStorage.java @@ -13,7 +13,6 @@ import com.raoulvdberge.refinedstorage.block.BlockStorage; import com.raoulvdberge.refinedstorage.block.EnumItemStorageType; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; -import com.raoulvdberge.refinedstorage.tile.IStorageGui; import com.raoulvdberge.refinedstorage.tile.TileStorage; import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; @@ -25,7 +24,7 @@ import net.minecraftforge.items.ItemHandlerHelper; import javax.annotation.Nonnull; import java.util.List; -public class NetworkNodeStorage extends NetworkNode implements IStorageGui, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType { +public class NetworkNodeStorage extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IExcessVoidable, IAccessType { public static final String ID = "storage"; class StorageItem extends StorageDiskItem { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java index d979dbd03..9fbe0340d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeWriter.java @@ -12,7 +12,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; -public class NetworkNodeWriter extends NetworkNode implements IWriter { +public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReaderWriter { public static final String ID = "writer"; private static final String NBT_CHANNEL = "Channel"; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java index 461e7b5c1..4adcd2389 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/diskdrive/NetworkNodeDiskDrive.java @@ -9,6 +9,7 @@ import com.raoulvdberge.refinedstorage.api.storage.IStorage; import com.raoulvdberge.refinedstorage.api.storage.IStorageDisk; import com.raoulvdberge.refinedstorage.api.storage.IStorageProvider; import com.raoulvdberge.refinedstorage.api.util.IComparer; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage; import com.raoulvdberge.refinedstorage.apiimpl.network.node.INetworkNodeHolder; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageDiskFluid; @@ -19,7 +20,6 @@ import com.raoulvdberge.refinedstorage.inventory.IItemValidator; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; -import com.raoulvdberge.refinedstorage.tile.IStorageGui; import com.raoulvdberge.refinedstorage.tile.TileDiskDrive; import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; @@ -32,7 +32,7 @@ import net.minecraftforge.items.IItemHandler; import java.util.List; -public class NetworkNodeDiskDrive extends NetworkNode implements IStorageGui, IStorageProvider, IComparable, IFilterable, IPrioritizable, IType, IExcessVoidable, IAccessType { +public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IStorageProvider, IComparable, IFilterable, IPrioritizable, IType, IExcessVoidable, IAccessType { public static final String ID = "disk_drive"; private static final String NBT_PRIORITY = "Priority"; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java index f87fa72e2..b481ecf1e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java @@ -9,13 +9,13 @@ import com.raoulvdberge.refinedstorage.api.storage.AccessType; import com.raoulvdberge.refinedstorage.api.storage.IStorage; import com.raoulvdberge.refinedstorage.api.storage.IStorageProvider; import com.raoulvdberge.refinedstorage.api.util.IComparer; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage; import com.raoulvdberge.refinedstorage.apiimpl.network.node.INetworkNodeHolder; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode; import com.raoulvdberge.refinedstorage.integration.cyclopscore.IntegrationCyclopsCore; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; -import com.raoulvdberge.refinedstorage.tile.IStorageGui; import com.raoulvdberge.refinedstorage.tile.TileExternalStorage; import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.tile.config.*; @@ -31,7 +31,7 @@ import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; import java.util.ArrayList; import java.util.List; -public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IType, IAccessType { +public class NetworkNodeExternalStorage extends NetworkNode implements IStorageProvider, IGuiStorage, IComparable, IFilterable, IPrioritizable, IType, IAccessType { public static final String ID = "external_storage"; private static final String NBT_PRIORITY = "Priority"; 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 4f523e040..4b3b050bf 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 @@ -5,7 +5,6 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader; 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.tile.IReaderWriter; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; @@ -47,18 +46,28 @@ public class ReaderWriterHandlerFluids implements IReaderWriterHandler { } @Override - public boolean hasCapability(IReaderWriter readerWriter, Capability capability) { - return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY && (readerWriter instanceof IReader || readerWriter instanceof IWriter); + public boolean hasCapabilityReader(IReader reader, Capability capability) { + return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY; } @Override - public T getCapability(IReaderWriter readerWriter, Capability capability) { + public T getCapabilityReader(IReader reader, Capability capability) { if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) { - if (readerWriter instanceof IReader) { - return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(tankReader); - } else if (readerWriter instanceof IWriter) { - return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(tankWriter); - } + return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(tankReader); + } + + return null; + } + + @Override + public boolean hasCapabilityWriter(IWriter writer, Capability capability) { + return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY; + } + + @Override + public T getCapabilityWriter(IWriter writer, Capability capability) { + if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) { + return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(tankWriter); } return null; @@ -77,8 +86,17 @@ public class ReaderWriterHandlerFluids implements IReaderWriterHandler { } @Override - public List getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) { - FluidStack stack = readerWriter instanceof IReader ? tankReader.getFluid() : tankWriter.getFluid(); + public List getStatusReader(IReader reader, IReaderWriterChannel channel) { + return getStatus(tankReader); + } + + @Override + public List getStatusWriter(IWriter writer, IReaderWriterChannel channel) { + return getStatus(tankWriter); + } + + private List getStatus(IFluidTank tank) { + FluidStack stack = tank.getFluid(); if (stack == null) { return Collections.emptyList(); 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 0ee7e09ec..dc2d34245 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 @@ -5,7 +5,6 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader; 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.tile.IReaderWriter; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.text.ITextComponent; @@ -48,18 +47,28 @@ public class ReaderWriterHandlerItems implements IReaderWriterHandler { } @Override - public boolean hasCapability(IReaderWriter readerWriter, Capability capability) { - return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && (readerWriter instanceof IReader || readerWriter instanceof IWriter); + public boolean hasCapabilityReader(IReader reader, Capability capability) { + return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY; } @Override - public T getCapability(IReaderWriter readerWriter, Capability capability) { + public T getCapabilityReader(IReader reader, Capability capability) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (readerWriter instanceof IReader) { - return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemsReader); - } else if (readerWriter instanceof IWriter) { - return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemsWriter); - } + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemsReader); + } + + return null; + } + + @Override + public boolean hasCapabilityWriter(IWriter writer, Capability capability) { + return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY; + } + + @Override + public T getCapabilityWriter(IWriter writer, Capability capability) { + if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemsWriter); } return null; @@ -78,10 +87,17 @@ public class ReaderWriterHandlerItems implements IReaderWriterHandler { } @Override - public List getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) { - List components = new ArrayList<>(); + public List getStatusReader(IReader reader, IReaderWriterChannel channel) { + return getStatus(itemsReader); + } - IItemHandler handler = readerWriter instanceof IReader ? itemsReader : itemsWriter; + @Override + public List getStatusWriter(IWriter writer, IReaderWriterChannel channel) { + return getStatus(itemsWriter); + } + + private List getStatus(IItemHandler handler) { + List components = new ArrayList<>(); for (int i = 0; i < handler.getSlots(); ++i) { ItemStack stack = handler.getStackInSlot(i); 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 0f08dc48e..3a32dbb80 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 @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader; 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.tile.IReaderWriter; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; @@ -41,12 +40,22 @@ public class ReaderWriterHandlerRedstone implements IReaderWriterHandler { } @Override - public boolean hasCapability(IReaderWriter readerWriter, Capability capability) { + public boolean hasCapabilityReader(IReader reader, Capability capability) { return false; } @Override - public T getCapability(IReaderWriter readerWriter, Capability capability) { + public T getCapabilityReader(IReader reader, Capability capability) { + return null; + } + + @Override + public boolean hasCapabilityWriter(IWriter writer, Capability capability) { + return false; + } + + @Override + public T getCapabilityWriter(IWriter writer, Capability capability) { return null; } @@ -61,7 +70,16 @@ public class ReaderWriterHandlerRedstone implements IReaderWriterHandler { } @Override - public List getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) { + public List getStatusReader(IReader reader, IReaderWriterChannel channel) { + return getStatus(channel); + } + + @Override + public List getStatusWriter(IWriter writer, IReaderWriterChannel channel) { + return getStatus(channel); + } + + private List getStatus(IReaderWriterChannel channel) { int strength = getStrength(channel); if (strength == 0) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java index d3cae1631..f37f87332 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockReader.java @@ -41,7 +41,7 @@ public class BlockReader extends BlockCable { IReaderWriterChannel channel = reader.getNetwork().getReaderWriterChannel(reader.getChannel()); if (channel != null) { - channel.getHandlers().stream().map(h -> h.getStatus(reader, channel)).flatMap(List::stream).forEach(player::sendMessage); + channel.getHandlers().stream().map(h -> h.getStatusReader(reader, channel)).flatMap(List::stream).forEach(player::sendMessage); } } } else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java index 9a1ecba96..7d6a0a254 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java @@ -42,7 +42,7 @@ public class BlockWriter extends BlockCable { IReaderWriterChannel channel = writer.getNetwork().getReaderWriterChannel(writer.getChannel()); if (channel != null) { - channel.getHandlers().stream().map(h -> h.getStatus(writer, channel)).flatMap(List::stream).forEach(player::sendMessage); + channel.getHandlers().stream().map(h -> h.getStatusWriter(writer, channel)).flatMap(List::stream).forEach(player::sendMessage); } } } else if (tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerReaderWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerReaderWriter.java index f4bcb5be7..3e3ed3118 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerReaderWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerReaderWriter.java @@ -1,13 +1,13 @@ package com.raoulvdberge.refinedstorage.container; -import com.raoulvdberge.refinedstorage.tile.IReaderWriter; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter; import com.raoulvdberge.refinedstorage.tile.TileBase; import net.minecraft.entity.player.EntityPlayer; public class ContainerReaderWriter extends ContainerBase { - private IReaderWriter readerWriter; + private IGuiReaderWriter readerWriter; - public ContainerReaderWriter(IReaderWriter readerWriter, TileBase tile, EntityPlayer player) { + public ContainerReaderWriter(IGuiReaderWriter readerWriter, TileBase tile, EntityPlayer player) { super(tile, player); this.readerWriter = readerWriter; @@ -15,7 +15,7 @@ public class ContainerReaderWriter extends ContainerBase { addPlayerInventory(8, 127); } - public IReaderWriter getReaderWriter() { + public IGuiReaderWriter getReaderWriter() { return readerWriter; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java index 9f670a835..248f65011 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java @@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.gui; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessFluidGrid; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessGrid; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter; import com.raoulvdberge.refinedstorage.container.*; import com.raoulvdberge.refinedstorage.gui.grid.GridDisplayDummy; import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; @@ -68,7 +69,7 @@ public class GuiHandler implements IGuiHandler { case RSGui.DISK_MANIPULATOR: return new ContainerDiskManipulator((TileDiskManipulator) tile, player); case RSGui.READER_WRITER: - return new ContainerReaderWriter((IReaderWriter) ((TileNode) tile).getNode(), (TileBase) tile, player); + return new ContainerReaderWriter((IGuiReaderWriter) ((TileNode) tile).getNode(), (TileBase) tile, player); case RSGui.SECURITY_MANAGER: return new ContainerSecurityManager((TileSecurityManager) tile, player); default: @@ -146,7 +147,7 @@ public class GuiHandler implements IGuiHandler { case RSGui.WIRELESS_CRAFTING_MONITOR: return getWirelessCraftingMonitorGui(player, x, y); case RSGui.READER_WRITER: - return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriter) ((TileNode) tile).getNode()); + return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IGuiReaderWriter) ((TileNode) tile).getNode()); case RSGui.SECURITY_MANAGER: return new GuiSecurityManager((ContainerSecurityManager) getContainer(ID, player, tile), (TileSecurityManager) tile); default: diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java index d27b4ba65..b1067d311 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiReaderWriter.java @@ -1,11 +1,11 @@ package com.raoulvdberge.refinedstorage.gui; import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter; import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter; import com.raoulvdberge.refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelAdd; import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelRemove; -import com.raoulvdberge.refinedstorage.tile.IReaderWriter; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiTextField; @@ -27,14 +27,14 @@ public class GuiReaderWriter extends GuiBase { private GuiButton add; private GuiButton remove; private GuiTextField name; - private IReaderWriter readerWriter; + private IGuiReaderWriter readerWriter; private int itemSelected = -1; private int itemSelectedX = -1; private int itemSelectedY = -1; - public GuiReaderWriter(ContainerReaderWriter container, IReaderWriter readerWriter) { + public GuiReaderWriter(ContainerReaderWriter container, IGuiReaderWriter readerWriter) { super(container, 176, 209); this.readerWriter = readerWriter; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiStorage.java index 62fa9a40c..46902d30a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiStorage.java @@ -2,16 +2,16 @@ package com.raoulvdberge.refinedstorage.gui; import com.raoulvdberge.refinedstorage.RSUtils; import com.raoulvdberge.refinedstorage.api.util.IComparer; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage; import com.raoulvdberge.refinedstorage.container.ContainerBase; import com.raoulvdberge.refinedstorage.gui.sidebutton.*; -import com.raoulvdberge.refinedstorage.tile.IStorageGui; import net.minecraft.client.gui.GuiButton; import net.minecraftforge.fml.common.FMLCommonHandler; import java.io.IOException; public class GuiStorage extends GuiBase { - private IStorageGui gui; + private IGuiStorage gui; private String texture; private GuiButton priorityButton; @@ -21,14 +21,14 @@ public class GuiStorage extends GuiBase { private int barWidth = 16; private int barHeight = 70; - public GuiStorage(ContainerBase container, IStorageGui gui, String texture) { + public GuiStorage(ContainerBase container, IGuiStorage gui, String texture) { super(container, 176, 223); this.gui = gui; this.texture = texture; } - public GuiStorage(ContainerBase container, IStorageGui gui) { + public GuiStorage(ContainerBase container, IGuiStorage gui) { this(container, gui, "gui/storage.png"); } 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 6d35b2a8b..33ed9b1a0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ReaderWriterHandlerForgeEnergy.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ReaderWriterHandlerForgeEnergy.java @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader; 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.tile.IReaderWriter; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; @@ -46,18 +45,28 @@ public class ReaderWriterHandlerForgeEnergy implements IReaderWriterHandler { } @Override - public boolean hasCapability(IReaderWriter readerWriter, Capability capability) { - return capability == CapabilityEnergy.ENERGY && (readerWriter instanceof IReader || readerWriter instanceof IWriter); + public boolean hasCapabilityReader(IReader reader, Capability capability) { + return capability == CapabilityEnergy.ENERGY; } @Override - public T getCapability(IReaderWriter readerWriter, Capability capability) { + public T getCapabilityReader(IReader reader, Capability capability) { if (capability == CapabilityEnergy.ENERGY) { - if (readerWriter instanceof IReader) { - return CapabilityEnergy.ENERGY.cast(storageReader); - } else if (readerWriter instanceof IWriter) { - return CapabilityEnergy.ENERGY.cast(storageWriter); - } + return CapabilityEnergy.ENERGY.cast(storageReader); + } + + return null; + } + + @Override + public boolean hasCapabilityWriter(IWriter writer, Capability capability) { + return capability == CapabilityEnergy.ENERGY; + } + + @Override + public T getCapabilityWriter(IWriter writer, Capability capability) { + if (capability == CapabilityEnergy.ENERGY) { + return CapabilityEnergy.ENERGY.cast(storageWriter); } return null; @@ -76,9 +85,16 @@ public class ReaderWriterHandlerForgeEnergy implements IReaderWriterHandler { } @Override - public List getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) { - IEnergyStorage storage = readerWriter instanceof IReader ? storageReader : storageWriter; + public List getStatusReader(IReader reader, IReaderWriterChannel channel) { + return getStatus(storageReader); + } + @Override + public List getStatusWriter(IWriter writer, IReaderWriterChannel channel) { + return getStatus(storageWriter); + } + + private List getStatus(IEnergyStorage storage) { if (storage.getEnergyStored() == 0) { return Collections.emptyList(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ReaderWriterHandlerTesla.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ReaderWriterHandlerTesla.java index 22c118412..13c561d20 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ReaderWriterHandlerTesla.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ReaderWriterHandlerTesla.java @@ -4,7 +4,6 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader; 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.tile.IReaderWriter; import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.api.ITeslaProducer; @@ -50,26 +49,32 @@ public class ReaderWriterHandlerTesla implements IReaderWriterHandler { } @Override - public boolean hasCapability(IReaderWriter readerWriter, Capability capability) { - if (readerWriter instanceof IReader) { - return capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER; - } else if (readerWriter instanceof IWriter) { - return capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_PRODUCER; - } - - return false; + public boolean hasCapabilityReader(IReader reader, Capability capability) { + return capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER; } @Override - public T getCapability(IReaderWriter readerWriter, Capability capability) { - if (readerWriter instanceof IReader || readerWriter instanceof IWriter) { - if (capability == TeslaCapabilities.CAPABILITY_HOLDER) { - return TeslaCapabilities.CAPABILITY_HOLDER.cast(container); - } else if (capability == TeslaCapabilities.CAPABILITY_CONSUMER && readerWriter instanceof IReader) { - return TeslaCapabilities.CAPABILITY_CONSUMER.cast(containerReader); - } else if (capability == TeslaCapabilities.CAPABILITY_PRODUCER && readerWriter instanceof IWriter) { - return TeslaCapabilities.CAPABILITY_PRODUCER.cast(containerWriter); - } + public T getCapabilityReader(IReader reader, Capability capability) { + if (capability == TeslaCapabilities.CAPABILITY_HOLDER) { + return TeslaCapabilities.CAPABILITY_HOLDER.cast(container); + } else if (capability == TeslaCapabilities.CAPABILITY_CONSUMER) { + return TeslaCapabilities.CAPABILITY_CONSUMER.cast(containerReader); + } + + return null; + } + + @Override + public boolean hasCapabilityWriter(IWriter writer, Capability capability) { + return capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_PRODUCER; + } + + @Override + public T getCapabilityWriter(IWriter writer, Capability capability) { + if (capability == TeslaCapabilities.CAPABILITY_HOLDER) { + return TeslaCapabilities.CAPABILITY_HOLDER.cast(container); + } else if (capability == TeslaCapabilities.CAPABILITY_PRODUCER) { + return TeslaCapabilities.CAPABILITY_PRODUCER.cast(containerWriter); } return null; @@ -88,9 +93,16 @@ public class ReaderWriterHandlerTesla implements IReaderWriterHandler { } @Override - public List getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) { - ITeslaHolder holder = readerWriter instanceof IReader ? containerReader : containerWriter; + public List getStatusReader(IReader reader, IReaderWriterChannel channel) { + return getStatus(containerReader); + } + @Override + public List getStatusWriter(IWriter writer, IReaderWriterChannel channel) { + return getStatus(containerWriter); + } + + private List getStatus(ITeslaHolder holder) { if (holder.getStoredPower() == 0) { return Collections.emptyList(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java index 32d123ae3..1dde43530 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileReader.java @@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterCha import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerFactory; import com.raoulvdberge.refinedstorage.apiimpl.API; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeReader; import com.raoulvdberge.refinedstorage.gui.GuiReaderWriter; import com.raoulvdberge.refinedstorage.tile.data.ITileDataConsumer; @@ -25,12 +26,12 @@ public class TileReader extends TileNode { return new TileDataParameter<>(DataSerializers.STRING, "", new ITileDataProducer() { @Override public String getValue(T tile) { - return ((IReaderWriter) tile.getNode()).getChannel(); + return ((IGuiReaderWriter) tile.getNode()).getChannel(); } }, new ITileDataConsumer() { @Override public void setValue(T tile, String value) { - ((IReaderWriter) tile.getNode()).setChannel(value); + ((IGuiReaderWriter) tile.getNode()).setChannel(value); tile.getNode().markDirty(); } @@ -47,9 +48,9 @@ public class TileReader extends TileNode { dataManager.addWatchedParameter(CHANNEL); } - public static T getDummyCapabilityForClient(IReaderWriter readerWriter, Capability capability) { + private T getDummyCapabilityForClient(IReader reader, Capability capability) { for (IReaderWriterHandlerFactory factory : API.instance().getReaderWriterHandlerRegistry().all()) { - T dummy = factory.create(null).getCapability(readerWriter, capability); + T dummy = factory.create(null).getCapabilityReader(reader, capability); if (dummy != null) { return dummy; @@ -86,7 +87,7 @@ public class TileReader extends TileNode { } for (IReaderWriterHandler handler : channel.getHandlers()) { - if (handler.hasCapability(reader, capability)) { + if (handler.hasCapabilityReader(reader, capability)) { return true; } } @@ -120,7 +121,7 @@ public class TileReader extends TileNode { } for (IReaderWriterHandler handler : channel.getHandlers()) { - foundCapability = handler.getCapability(reader, capability); + foundCapability = handler.getCapabilityReader(reader, capability); if (foundCapability != null) { return foundCapability; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java index f87cbcfd3..db4d81530 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java @@ -2,7 +2,9 @@ package com.raoulvdberge.refinedstorage.tile; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler; +import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandlerFactory; import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter; +import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeWriter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.util.EnumFacing; @@ -20,6 +22,18 @@ 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(Capability capability, @Nullable EnumFacing facing) { if (super.hasCapability(capability, facing)) { @@ -34,7 +48,7 @@ public class TileWriter extends TileNode { if (writer.getNetwork() == null || !writer.canUpdate()) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { - return TileReader.getDummyCapabilityForClient(writer, capability) != null; + return getDummyCapabilityForClient(writer, capability) != null; } return false; @@ -47,7 +61,7 @@ public class TileWriter extends TileNode { } for (IReaderWriterHandler handler : channel.getHandlers()) { - if (handler.hasCapability(writer, capability)) { + if (handler.hasCapabilityWriter(writer, capability)) { return true; } } @@ -68,7 +82,7 @@ public class TileWriter extends TileNode { if (writer.getNetwork() == null || !writer.canUpdate()) { if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { - return TileReader.getDummyCapabilityForClient(writer, capability); + return getDummyCapabilityForClient(writer, capability); } return null; @@ -81,7 +95,7 @@ public class TileWriter extends TileNode { } for (IReaderWriterHandler handler : channel.getHandlers()) { - foundCapability = handler.getCapability(writer, capability); + foundCapability = handler.getCapabilityWriter(writer, capability); if (foundCapability != null) { return foundCapability;