Adding / removing reader writer channels
This commit is contained in:
@@ -21,6 +21,8 @@ public class BlockReader extends BlockNode {
|
|||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
player.openGui(RS.INSTANCE, RSGui.READER_WRITER, world, pos.getX(), pos.getY(), pos.getZ());
|
player.openGui(RS.INSTANCE, RSGui.READER_WRITER, world, pos.getX(), pos.getY(), pos.getZ());
|
||||||
|
|
||||||
|
((TileReader) world.getTileEntity(pos)).onOpened(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,12 +1,21 @@
|
|||||||
package com.raoulvdberge.refinedstorage.container;
|
package com.raoulvdberge.refinedstorage.container;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.IReaderWriter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class ContainerReaderWriter extends ContainerBase {
|
public class ContainerReaderWriter extends ContainerBase {
|
||||||
public ContainerReaderWriter(TileBase tile, EntityPlayer player) {
|
private IReaderWriter readerWriter;
|
||||||
super(tile, player);
|
|
||||||
|
public ContainerReaderWriter(IReaderWriter readerWriter, EntityPlayer player) {
|
||||||
|
super((TileBase) readerWriter, player);
|
||||||
|
|
||||||
|
this.readerWriter = readerWriter;
|
||||||
|
|
||||||
addPlayerInventory(8, 127);
|
addPlayerInventory(8, 127);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IReaderWriter getReaderWriter() {
|
||||||
|
return readerWriter;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
case RSGui.DISK_MANIPULATOR:
|
case RSGui.DISK_MANIPULATOR:
|
||||||
return new ContainerDiskManipulator((TileDiskManipulator) tile, player);
|
return new ContainerDiskManipulator((TileDiskManipulator) tile, player);
|
||||||
case RSGui.READER_WRITER:
|
case RSGui.READER_WRITER:
|
||||||
return new ContainerReaderWriter((TileBase) tile, player);
|
return new ContainerReaderWriter((IReaderWriter) tile, player);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -136,7 +136,7 @@ public class GuiHandler implements IGuiHandler {
|
|||||||
case RSGui.WIRELESS_CRAFTING_MONITOR:
|
case RSGui.WIRELESS_CRAFTING_MONITOR:
|
||||||
return getWirelessCraftingMonitorGui(player, x, y);
|
return getWirelessCraftingMonitorGui(player, x, y);
|
||||||
case RSGui.READER_WRITER:
|
case RSGui.READER_WRITER:
|
||||||
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriterGui) tile);
|
return new GuiReaderWriter((ContainerReaderWriter) getContainer(ID, player, tile), (IReaderWriter) tile);
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
package com.raoulvdberge.refinedstorage.gui;
|
package com.raoulvdberge.refinedstorage.gui;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
|
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.IReaderWriterGui;
|
import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelAdd;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.MessageReaderWriterChannelRemove;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.IReaderWriter;
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.client.gui.GuiTextField;
|
import net.minecraft.client.gui.GuiTextField;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GuiReaderWriter extends GuiBase {
|
public class GuiReaderWriter extends GuiBase {
|
||||||
|
public static List<String> CHANNELS = Collections.emptyList();
|
||||||
|
|
||||||
private static final int VISIBLE_ROWS = 4;
|
private static final int VISIBLE_ROWS = 4;
|
||||||
|
|
||||||
private static final int ITEM_WIDTH = 143;
|
private static final int ITEM_WIDTH = 143;
|
||||||
@@ -19,14 +24,14 @@ public class GuiReaderWriter extends GuiBase {
|
|||||||
private GuiButton add;
|
private GuiButton add;
|
||||||
private GuiButton remove;
|
private GuiButton remove;
|
||||||
private GuiTextField name;
|
private GuiTextField name;
|
||||||
private IReaderWriterGui readerWriter;
|
private IReaderWriter readerWriter;
|
||||||
|
|
||||||
private int itemSelected = -1;
|
private int itemSelected = -1;
|
||||||
|
|
||||||
private int itemSelectedX = -1;
|
private int itemSelectedX = -1;
|
||||||
private int itemSelectedY = -1;
|
private int itemSelectedY = -1;
|
||||||
|
|
||||||
public GuiReaderWriter(ContainerReaderWriter container, IReaderWriterGui readerWriter) {
|
public GuiReaderWriter(ContainerReaderWriter container, IReaderWriter readerWriter) {
|
||||||
super(container, 176, 209);
|
super(container, 176, 209);
|
||||||
|
|
||||||
this.readerWriter = readerWriter;
|
this.readerWriter = readerWriter;
|
||||||
@@ -125,6 +130,8 @@ public class GuiReaderWriter extends GuiBase {
|
|||||||
|
|
||||||
if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getChannels().size()) {
|
if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getChannels().size()) {
|
||||||
itemSelected = item + i;
|
itemSelected = item + i;
|
||||||
|
|
||||||
|
name.setText(getChannels().get(itemSelected));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,24 +151,18 @@ public class GuiReaderWriter extends GuiBase {
|
|||||||
protected void actionPerformed(GuiButton button) throws IOException {
|
protected void actionPerformed(GuiButton button) throws IOException {
|
||||||
super.actionPerformed(button);
|
super.actionPerformed(button);
|
||||||
|
|
||||||
if (button == add) {
|
String name = this.name.getText().trim();
|
||||||
|
|
||||||
} else if (button == remove) {
|
if (!name.isEmpty()) {
|
||||||
|
if (button == add) {
|
||||||
}
|
RS.INSTANCE.network.sendToServer(new MessageReaderWriterChannelAdd(name));
|
||||||
}
|
} else if (button == remove) {
|
||||||
|
RS.INSTANCE.network.sendToServer(new MessageReaderWriterChannelRemove(name));
|
||||||
private List<String> tempChannels;
|
|
||||||
|
|
||||||
private List<String> getChannels() {
|
|
||||||
if (tempChannels == null) {
|
|
||||||
tempChannels = new ArrayList<>();
|
|
||||||
|
|
||||||
for (int i = 0; i < 40; ++i) {
|
|
||||||
tempChannels.add("Item " + i);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return tempChannels;
|
private List<String> getChannels() {
|
||||||
|
return readerWriter.isConnected() ? CHANNELS : Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||||
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
|
|
||||||
|
public class MessageReaderWriterChannelAdd extends MessageHandlerPlayerToServer<MessageReaderWriterChannelAdd> implements IMessage {
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public MessageReaderWriterChannelAdd() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageReaderWriterChannelAdd(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
name = ByteBufUtils.readUTF8String(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
ByteBufUtils.writeUTF8String(buf, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(MessageReaderWriterChannelAdd message, EntityPlayerMP player) {
|
||||||
|
if (player.openContainer instanceof ContainerReaderWriter) {
|
||||||
|
((ContainerReaderWriter) player.openContainer).getReaderWriter().onAdd(message.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||||
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
|
|
||||||
|
public class MessageReaderWriterChannelRemove extends MessageHandlerPlayerToServer<MessageReaderWriterChannelRemove> implements IMessage {
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public MessageReaderWriterChannelRemove() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageReaderWriterChannelRemove(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
name = ByteBufUtils.readUTF8String(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
ByteBufUtils.writeUTF8String(buf, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(MessageReaderWriterChannelRemove message, EntityPlayerMP player) {
|
||||||
|
if (player.openContainer instanceof ContainerReaderWriter) {
|
||||||
|
((ContainerReaderWriter) player.openContainer).getReaderWriter().onRemove(message.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.network;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.gui.GuiReaderWriter;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||||
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
|
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
|
||||||
|
public class MessageReaderWriterUpdate implements IMessage, IMessageHandler<MessageReaderWriterUpdate, IMessage> {
|
||||||
|
private Collection<String> channels;
|
||||||
|
|
||||||
|
public MessageReaderWriterUpdate() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageReaderWriterUpdate(Collection<String> channels) {
|
||||||
|
this.channels = channels;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
this.channels = new ArrayList<>();
|
||||||
|
|
||||||
|
int size = buf.readInt();
|
||||||
|
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
channels.add(ByteBufUtils.readUTF8String(buf));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeInt(channels.size());
|
||||||
|
|
||||||
|
for (String channel : channels) {
|
||||||
|
ByteBufUtils.writeUTF8String(buf, channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IMessage onMessage(MessageReaderWriterUpdate message, MessageContext ctx) {
|
||||||
|
GuiReaderWriter.CHANNELS = (ArrayList<String>) message.channels;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -100,6 +100,9 @@ public class ProxyCommon {
|
|||||||
RS.INSTANCE.network.registerMessage(MessageGridCraftingPreview.class, MessageGridCraftingPreview.class, id++, Side.SERVER);
|
RS.INSTANCE.network.registerMessage(MessageGridCraftingPreview.class, MessageGridCraftingPreview.class, id++, Side.SERVER);
|
||||||
RS.INSTANCE.network.registerMessage(MessageGridCraftingPreviewResponse.class, MessageGridCraftingPreviewResponse.class, id++, Side.CLIENT);
|
RS.INSTANCE.network.registerMessage(MessageGridCraftingPreviewResponse.class, MessageGridCraftingPreviewResponse.class, id++, Side.CLIENT);
|
||||||
RS.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderTransfer.class, MessageProcessingPatternEncoderTransfer.class, id++, Side.SERVER);
|
RS.INSTANCE.network.registerMessage(MessageProcessingPatternEncoderTransfer.class, MessageProcessingPatternEncoderTransfer.class, id++, Side.SERVER);
|
||||||
|
RS.INSTANCE.network.registerMessage(MessageReaderWriterUpdate.class, MessageReaderWriterUpdate.class, id++, Side.CLIENT);
|
||||||
|
RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelAdd.class, MessageReaderWriterChannelAdd.class, id++, Side.SERVER);
|
||||||
|
RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelRemove.class, MessageReaderWriterChannelRemove.class, id++, Side.SERVER);
|
||||||
|
|
||||||
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
|
NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler());
|
||||||
|
|
||||||
|
|||||||
15
src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java
Executable file
15
src/main/java/com/raoulvdberge/refinedstorage/tile/IReaderWriter.java
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.tile;
|
||||||
|
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
public interface IReaderWriter {
|
||||||
|
String getTitle();
|
||||||
|
|
||||||
|
void onAdd(String name);
|
||||||
|
|
||||||
|
void onRemove(String name);
|
||||||
|
|
||||||
|
BlockPos getNetworkPosition();
|
||||||
|
|
||||||
|
boolean isConnected();
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile;
|
|
||||||
|
|
||||||
public interface IReaderWriterGui {
|
|
||||||
String getTitle();
|
|
||||||
|
|
||||||
void onAdd(String name);
|
|
||||||
|
|
||||||
void onRemove(String name);
|
|
||||||
}
|
|
||||||
@@ -40,6 +40,7 @@ import com.raoulvdberge.refinedstorage.block.EnumControllerType;
|
|||||||
import com.raoulvdberge.refinedstorage.block.EnumGridType;
|
import com.raoulvdberge.refinedstorage.block.EnumGridType;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerGrid;
|
import com.raoulvdberge.refinedstorage.container.ContainerGrid;
|
||||||
|
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
|
||||||
import com.raoulvdberge.refinedstorage.integration.forgeenergy.ControllerEnergyForge;
|
import com.raoulvdberge.refinedstorage.integration.forgeenergy.ControllerEnergyForge;
|
||||||
import com.raoulvdberge.refinedstorage.integration.ic2.ControllerEnergyIC2;
|
import com.raoulvdberge.refinedstorage.integration.ic2.ControllerEnergyIC2;
|
||||||
import com.raoulvdberge.refinedstorage.integration.ic2.ControllerEnergyIC2None;
|
import com.raoulvdberge.refinedstorage.integration.ic2.ControllerEnergyIC2None;
|
||||||
@@ -580,12 +581,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendReaderWriterChannelUpdate() {
|
public void sendReaderWriterChannelUpdate() {
|
||||||
// @TODO
|
worldObj.getMinecraftServer().getPlayerList().getPlayerList().stream()
|
||||||
|
.filter(player -> player.openContainer instanceof ContainerReaderWriter && pos.equals(((ContainerReaderWriter) player.openContainer).getReaderWriter().getNetworkPosition()))
|
||||||
|
.forEach(this::sendReaderWriterChannelUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendReaderWriterChannelUpdate(EntityPlayerMP player) {
|
public void sendReaderWriterChannelUpdate(EntityPlayerMP player) {
|
||||||
// @TODO
|
RS.INSTANCE.network.sendTo(new MessageReaderWriterUpdate(readerWriterChannels.keySet()), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ICraftingMonitorElement> getElements() {
|
private List<ICraftingMonitorElement> getElements() {
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package com.raoulvdberge.refinedstorage.tile;
|
package com.raoulvdberge.refinedstorage.tile;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
public class TileReader extends TileNode implements IReader, IReaderWriterGui {
|
public class TileReader extends TileNode implements IReader, IReaderWriter {
|
||||||
@Override
|
@Override
|
||||||
public int getEnergyUsage() {
|
public int getEnergyUsage() {
|
||||||
return 0; // @TODO
|
return 0; // @TODO
|
||||||
@@ -24,11 +27,35 @@ public class TileReader extends TileNode implements IReader, IReaderWriterGui {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAdd(String name) {
|
public void onAdd(String name) {
|
||||||
// @TODO
|
if (network != null && !name.isEmpty()) {
|
||||||
|
network.addReaderWriterChannel(name);
|
||||||
|
|
||||||
|
network.sendReaderWriterChannelUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRemove(String name) {
|
public void onRemove(String name) {
|
||||||
// @TODO
|
if (network != null && !name.isEmpty()) {
|
||||||
|
network.removeReaderWriterChannel(name);
|
||||||
|
|
||||||
|
network.sendReaderWriterChannelUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockPos getNetworkPosition() {
|
||||||
|
return network != null ? network.getPosition() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnectivityState() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onOpened(EntityPlayer entity) {
|
||||||
|
if (isConnected()) {
|
||||||
|
network.sendReaderWriterChannelUpdate((EntityPlayerMP) entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user