Remove IReaderWriter interface, use seperate IReader/IWriter

This commit is contained in:
raoulvdberge
2017-02-03 15:23:06 +01:00
parent 30eea50826
commit 21917db0f9
24 changed files with 252 additions and 115 deletions

View File

@@ -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);
}

View File

@@ -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 reader the reader
* @param capability the capability
* @return whether we have the given capability for the reader writer
* @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 reader the reader
* @param capability the capability
* @return the capability for the given reader writer
* @return the capability for the given reader
*/
<T> T getCapability(IReaderWriter readerWriter, Capability<T> capability);
<T> T getCapabilityReader(IReader reader, Capability<T> 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> T getCapabilityWriter(IWriter writer, Capability<T> capability);
/**
* Writes this reader writer handler to NBT.
@@ -53,9 +66,16 @@ public interface IReaderWriterHandler {
String getId();
/**
* @param readerWriter the reader writer
* @param reader the reader
* @param channel the channel
* @return status line(s) displayed when right clicking a reader or writer
* @return status line(s) displayed when right clicking a reader
*/
List<ITextComponent> getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel);
List<ITextComponent> getStatusReader(IReader reader, IReaderWriterChannel channel);
/**
* @param writer the writer
* @param channel the channel
* @return status line(s) displayed when right clicking a writer
*/
List<ITextComponent> getStatusWriter(IWriter writer, IReaderWriterChannel channel);
}

View File

@@ -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);
}

View File

@@ -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<Integer> getRedstoneModeParameter();
INetworkMaster getNetwork();
boolean canUpdate();
default void onAdd(String name) {
INetworkMaster network = getNetwork();

View File

@@ -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<Integer> getTypeParameter();

View File

@@ -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 {

View File

@@ -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";

View File

@@ -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 {

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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> T getCapability(IReaderWriter readerWriter, Capability<T> capability) {
public <T> T getCapabilityReader(IReader reader, Capability<T> 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 null;
}
@Override
public boolean hasCapabilityWriter(IWriter writer, Capability<?> capability) {
return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY;
}
@Override
public <T> T getCapabilityWriter(IWriter writer, Capability<T> 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<ITextComponent> getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) {
FluidStack stack = readerWriter instanceof IReader ? tankReader.getFluid() : tankWriter.getFluid();
public List<ITextComponent> getStatusReader(IReader reader, IReaderWriterChannel channel) {
return getStatus(tankReader);
}
@Override
public List<ITextComponent> getStatusWriter(IWriter writer, IReaderWriterChannel channel) {
return getStatus(tankWriter);
}
private List<ITextComponent> getStatus(IFluidTank tank) {
FluidStack stack = tank.getFluid();
if (stack == null) {
return Collections.emptyList();

View File

@@ -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> T getCapability(IReaderWriter readerWriter, Capability<T> capability) {
public <T> T getCapabilityReader(IReader reader, Capability<T> 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 null;
}
@Override
public boolean hasCapabilityWriter(IWriter writer, Capability<?> capability) {
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY;
}
@Override
public <T> T getCapabilityWriter(IWriter writer, Capability<T> 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<ITextComponent> getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) {
List<ITextComponent> components = new ArrayList<>();
public List<ITextComponent> getStatusReader(IReader reader, IReaderWriterChannel channel) {
return getStatus(itemsReader);
}
IItemHandler handler = readerWriter instanceof IReader ? itemsReader : itemsWriter;
@Override
public List<ITextComponent> getStatusWriter(IWriter writer, IReaderWriterChannel channel) {
return getStatus(itemsWriter);
}
private List<ITextComponent> getStatus(IItemHandler handler) {
List<ITextComponent> components = new ArrayList<>();
for (int i = 0; i < handler.getSlots(); ++i) {
ItemStack stack = handler.getStackInSlot(i);

View File

@@ -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> T getCapability(IReaderWriter readerWriter, Capability<T> capability) {
public <T> T getCapabilityReader(IReader reader, Capability<T> capability) {
return null;
}
@Override
public boolean hasCapabilityWriter(IWriter writer, Capability<?> capability) {
return false;
}
@Override
public <T> T getCapabilityWriter(IWriter writer, Capability<T> capability) {
return null;
}
@@ -61,7 +70,16 @@ public class ReaderWriterHandlerRedstone implements IReaderWriterHandler {
}
@Override
public List<ITextComponent> getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) {
public List<ITextComponent> getStatusReader(IReader reader, IReaderWriterChannel channel) {
return getStatus(channel);
}
@Override
public List<ITextComponent> getStatusWriter(IWriter writer, IReaderWriterChannel channel) {
return getStatus(channel);
}
private List<ITextComponent> getStatus(IReaderWriterChannel channel) {
int strength = getStrength(channel);
if (strength == 0) {

View File

@@ -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)) {

View File

@@ -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)) {

View File

@@ -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;
}
}

View File

@@ -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:

View File

@@ -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;

View File

@@ -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");
}

View File

@@ -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> T getCapability(IReaderWriter readerWriter, Capability<T> capability) {
public <T> T getCapabilityReader(IReader reader, Capability<T> 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 null;
}
@Override
public boolean hasCapabilityWriter(IWriter writer, Capability<?> capability) {
return capability == CapabilityEnergy.ENERGY;
}
@Override
public <T> T getCapabilityWriter(IWriter writer, Capability<T> capability) {
if (capability == CapabilityEnergy.ENERGY) {
return CapabilityEnergy.ENERGY.cast(storageWriter);
}
return null;
@@ -76,9 +85,16 @@ public class ReaderWriterHandlerForgeEnergy implements IReaderWriterHandler {
}
@Override
public List<ITextComponent> getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) {
IEnergyStorage storage = readerWriter instanceof IReader ? storageReader : storageWriter;
public List<ITextComponent> getStatusReader(IReader reader, IReaderWriterChannel channel) {
return getStatus(storageReader);
}
@Override
public List<ITextComponent> getStatusWriter(IWriter writer, IReaderWriterChannel channel) {
return getStatus(storageWriter);
}
private List<ITextComponent> getStatus(IEnergyStorage storage) {
if (storage.getEnergyStored() == 0) {
return Collections.emptyList();
}

View File

@@ -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) {
public boolean hasCapabilityReader(IReader reader, Capability<?> capability) {
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;
}
@Override
public <T> T getCapability(IReaderWriter readerWriter, Capability<T> capability) {
if (readerWriter instanceof IReader || readerWriter instanceof IWriter) {
public <T> T getCapabilityReader(IReader reader, Capability<T> capability) {
if (capability == TeslaCapabilities.CAPABILITY_HOLDER) {
return TeslaCapabilities.CAPABILITY_HOLDER.cast(container);
} else if (capability == TeslaCapabilities.CAPABILITY_CONSUMER && readerWriter instanceof IReader) {
} else if (capability == TeslaCapabilities.CAPABILITY_CONSUMER) {
return TeslaCapabilities.CAPABILITY_CONSUMER.cast(containerReader);
} else if (capability == TeslaCapabilities.CAPABILITY_PRODUCER && readerWriter instanceof IWriter) {
return TeslaCapabilities.CAPABILITY_PRODUCER.cast(containerWriter);
}
return null;
}
@Override
public boolean hasCapabilityWriter(IWriter writer, Capability<?> capability) {
return capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_PRODUCER;
}
@Override
public <T> T getCapabilityWriter(IWriter writer, Capability<T> 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<ITextComponent> getStatus(IReaderWriter readerWriter, IReaderWriterChannel channel) {
ITeslaHolder holder = readerWriter instanceof IReader ? containerReader : containerWriter;
public List<ITextComponent> getStatusReader(IReader reader, IReaderWriterChannel channel) {
return getStatus(containerReader);
}
@Override
public List<ITextComponent> getStatusWriter(IWriter writer, IReaderWriterChannel channel) {
return getStatus(containerWriter);
}
private List<ITextComponent> getStatus(ITeslaHolder holder) {
if (holder.getStoredPower() == 0) {
return Collections.emptyList();
}

View File

@@ -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<NetworkNodeReader> {
return new TileDataParameter<>(DataSerializers.STRING, "", new ITileDataProducer<String, T>() {
@Override
public String getValue(T tile) {
return ((IReaderWriter) tile.getNode()).getChannel();
return ((IGuiReaderWriter) tile.getNode()).getChannel();
}
}, new ITileDataConsumer<String, T>() {
@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<NetworkNodeReader> {
dataManager.addWatchedParameter(CHANNEL);
}
public static <T> T getDummyCapabilityForClient(IReaderWriter readerWriter, Capability<T> capability) {
private <T> T getDummyCapabilityForClient(IReader reader, Capability<T> 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<NetworkNodeReader> {
}
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<NetworkNodeReader> {
}
for (IReaderWriterHandler handler : channel.getHandlers()) {
foundCapability = handler.getCapability(reader, capability);
foundCapability = handler.getCapabilityReader(reader, capability);
if (foundCapability != null) {
return foundCapability;

View File

@@ -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<NetworkNodeWriter> {
dataManager.addWatchedParameter(CHANNEL);
}
private <T> T getDummyCapabilityForClient(IWriter writer, Capability<T> 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<NetworkNodeWriter> {
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<NetworkNodeWriter> {
}
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<NetworkNodeWriter> {
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<NetworkNodeWriter> {
}
for (IReaderWriterHandler handler : channel.getHandlers()) {
foundCapability = handler.getCapability(writer, capability);
foundCapability = handler.getCapabilityWriter(writer, capability);
if (foundCapability != null) {
return foundCapability;