Move reader writer updating to a listener based system.
This commit is contained in:
@@ -29,7 +29,7 @@ public interface IReaderWriterChannel {
|
|||||||
* @param tag the tag to write to
|
* @param tag the tag to write to
|
||||||
* @return the written tag
|
* @return the written tag
|
||||||
*/
|
*/
|
||||||
NBTTagCompound writeToNBT(NBTTagCompound tag);
|
NBTTagCompound writeToNbt(NBTTagCompound tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads this channel from NBT.
|
* Reads this channel from NBT.
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public interface IReaderWriterHandler {
|
|||||||
* @param tag the tag to write to
|
* @param tag the tag to write to
|
||||||
* @return the written tag
|
* @return the written tag
|
||||||
*/
|
*/
|
||||||
NBTTagCompound writeToNBT(NBTTagCompound tag);
|
NBTTagCompound writeToNbt(NBTTagCompound tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the id of this writer, as assigned to the {@link IReaderWriterHandlerRegistry}
|
* @return the id of this writer, as assigned to the {@link IReaderWriterHandlerRegistry}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A listener for reader writers.
|
||||||
|
*/
|
||||||
|
public interface IReaderWriterListener {
|
||||||
|
/**
|
||||||
|
* Called when the listener is attached.
|
||||||
|
*/
|
||||||
|
void onAttached();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a reader writer channel has changed.
|
||||||
|
*/
|
||||||
|
void onChanged();
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A manager for the reader writer.
|
* A manager for the reader writer.
|
||||||
@@ -36,24 +36,31 @@ public interface IReaderWriterManager {
|
|||||||
void removeChannel(String name);
|
void removeChannel(String name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a channel update to all players watching a reader or writer.
|
* @return a collection of channels
|
||||||
*/
|
*/
|
||||||
void sendUpdate();
|
Collection<String> getChannels();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a channel update to a specific player.
|
* Adds a listener.
|
||||||
*
|
*
|
||||||
* @param player the player to send to
|
* @param listener the listener
|
||||||
*/
|
*/
|
||||||
void sendUpdateTo(EntityPlayerMP player);
|
void addListener(IReaderWriterListener listener);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a listener.
|
||||||
|
*
|
||||||
|
* @param listener the listener
|
||||||
|
*/
|
||||||
|
void removeListener(IReaderWriterListener listener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param tag the tag to write to
|
* @param tag the tag to write to
|
||||||
*/
|
*/
|
||||||
void writeToNBT(NBTTagCompound tag);
|
void writeToNbt(NBTTagCompound tag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param tag the tag to read from
|
* @param tag the tag to read from
|
||||||
*/
|
*/
|
||||||
void readFromNBT(NBTTagCompound tag);
|
void readFromNbt(NBTTagCompound tag);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ import com.raoulvdberge.refinedstorage.RS;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReader;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileReader;
|
import com.raoulvdberge.refinedstorage.tile.TileReader;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -83,10 +81,4 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade
|
|||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onOpened(EntityPlayer entity) {
|
|
||||||
if (network != null) {
|
|
||||||
network.getReaderWriterManager().sendUpdateTo((EntityPlayerMP) entity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,6 @@ import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHan
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileWriter;
|
import com.raoulvdberge.refinedstorage.tile.TileWriter;
|
||||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@@ -115,10 +113,4 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
|
|||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onOpened(EntityPlayer entity) {
|
|
||||||
if (network != null) {
|
|
||||||
network.getReaderWriterManager().sendUpdateTo((EntityPlayerMP) entity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,9 @@ public class ReaderWriterChannel implements IReaderWriterChannel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
public NBTTagCompound writeToNbt(NBTTagCompound tag) {
|
||||||
for (IReaderWriterHandler handler : handlers) {
|
for (IReaderWriterHandler handler : handlers) {
|
||||||
tag.setTag(String.format(NBT_HANDLER, handler.getId()), handler.writeToNBT(new NBTTagCompound()));
|
tag.setTag(String.format(NBT_HANDLER, handler.getId()), handler.writeToNbt(new NBTTagCompound()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class ReaderWriterHandlerFluids implements IReaderWriterHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
public NBTTagCompound writeToNbt(NBTTagCompound tag) {
|
||||||
tank.writeToNBT(tag);
|
tank.writeToNBT(tag);
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class ReaderWriterHandlerItems implements IReaderWriterHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
public NBTTagCompound writeToNbt(NBTTagCompound tag) {
|
||||||
StackUtils.writeItems(items, 0, tag);
|
StackUtils.writeItems(items, 0, tag);
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class ReaderWriterHandlerRedstone implements IReaderWriterHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
public NBTTagCompound writeToNbt(NBTTagCompound tag) {
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +1,28 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter;
|
package com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
|
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageReaderWriterUpdate;
|
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class ReaderWriterManager implements IReaderWriterManager {
|
public class ReaderWriterManager implements IReaderWriterManager {
|
||||||
private static final String NBT_CHANNELS = "ReaderWriterChannels";
|
private static final String NBT_CHANNELS = "ReaderWriterChannels";
|
||||||
private static final String NBT_NAME = "Name";
|
private static final String NBT_NAME = "Name";
|
||||||
|
|
||||||
private INetwork network;
|
private INetwork network;
|
||||||
private Runnable listener;
|
|
||||||
private Map<String, IReaderWriterChannel> channels = new HashMap<>();
|
private Map<String, IReaderWriterChannel> channels = new HashMap<>();
|
||||||
|
private Set<IReaderWriterListener> listeners = new HashSet<>();
|
||||||
|
|
||||||
public ReaderWriterManager(INetwork network, Runnable listener) {
|
public ReaderWriterManager(INetwork network) {
|
||||||
this.network = network;
|
this.network = network;
|
||||||
this.listener = listener;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -50,9 +44,7 @@ public class ReaderWriterManager implements IReaderWriterManager {
|
|||||||
public void addChannel(String name) {
|
public void addChannel(String name) {
|
||||||
channels.put(name, API.instance().createReaderWriterChannel(name, network));
|
channels.put(name, API.instance().createReaderWriterChannel(name, network));
|
||||||
|
|
||||||
listener.run();
|
listeners.forEach(IReaderWriterListener::onChanged);
|
||||||
|
|
||||||
sendUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -65,33 +57,33 @@ public class ReaderWriterManager implements IReaderWriterManager {
|
|||||||
|
|
||||||
channels.remove(name);
|
channels.remove(name);
|
||||||
|
|
||||||
listener.run();
|
listeners.forEach(IReaderWriterListener::onChanged);
|
||||||
|
|
||||||
sendUpdate();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendUpdate() {
|
public Collection<String> getChannels() {
|
||||||
// @todo: Move to a listener system
|
return channels.keySet();
|
||||||
network.world().getMinecraftServer().getPlayerList().getPlayers().stream()
|
|
||||||
.filter(player -> player.openContainer instanceof ContainerReaderWriter &&
|
|
||||||
((ContainerReaderWriter) player.openContainer).getReaderWriter().getNetwork() != null &&
|
|
||||||
network.getPosition().equals(((ContainerReaderWriter) player.openContainer).getReaderWriter().getNetwork().getPosition()))
|
|
||||||
.forEach(this::sendUpdateTo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendUpdateTo(EntityPlayerMP player) {
|
public void addListener(IReaderWriterListener listener) {
|
||||||
RS.INSTANCE.network.sendTo(new MessageReaderWriterUpdate(new ArrayList<>(channels.keySet())), player);
|
listeners.add(listener);
|
||||||
|
|
||||||
|
listener.onAttached();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToNBT(NBTTagCompound tag) {
|
public void removeListener(IReaderWriterListener listener) {
|
||||||
|
listeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNbt(NBTTagCompound tag) {
|
||||||
NBTTagList readerWriterChannelsList = new NBTTagList();
|
NBTTagList readerWriterChannelsList = new NBTTagList();
|
||||||
|
|
||||||
for (Map.Entry<String, IReaderWriterChannel> entry : channels.entrySet()) {
|
for (Map.Entry<String, IReaderWriterChannel> entry : channels.entrySet()) {
|
||||||
NBTTagCompound channelTag = entry.getValue().writeToNBT(new NBTTagCompound());
|
NBTTagCompound channelTag = entry.getValue().writeToNbt(new NBTTagCompound());
|
||||||
|
|
||||||
channelTag.setString(NBT_NAME, entry.getKey());
|
channelTag.setString(NBT_NAME, entry.getKey());
|
||||||
|
|
||||||
@@ -102,7 +94,7 @@ public class ReaderWriterManager implements IReaderWriterManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound tag) {
|
public void readFromNbt(NBTTagCompound tag) {
|
||||||
if (tag.hasKey(NBT_CHANNELS)) {
|
if (tag.hasKey(NBT_CHANNELS)) {
|
||||||
NBTTagList readerWriterChannelsList = tag.getTagList(NBT_CHANNELS, Constants.NBT.TAG_COMPOUND);
|
NBTTagList readerWriterChannelsList = tag.getTagList(NBT_CHANNELS, Constants.NBT.TAG_COMPOUND);
|
||||||
|
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ public class BlockReader extends BlockCable {
|
|||||||
channel.getHandlers().stream().map(h -> h.getStatusReader(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)) {
|
} else {
|
||||||
reader.onOpened(player);
|
tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ public class BlockWriter extends BlockCable {
|
|||||||
channel.getHandlers().stream().map(h -> h.getStatusWriter(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)) {
|
} else {
|
||||||
writer.onOpened(player);
|
tryOpenNetworkGui(RSGui.READER_WRITER, player, world, pos, side);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,17 @@
|
|||||||
package com.raoulvdberge.refinedstorage.container;
|
package com.raoulvdberge.refinedstorage.container;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterListener;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiReaderWriter;
|
||||||
|
import com.raoulvdberge.refinedstorage.network.MessageReaderWriterUpdate;
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
|
||||||
public class ContainerReaderWriter extends ContainerBase {
|
public class ContainerReaderWriter extends ContainerBase implements IReaderWriterListener {
|
||||||
private IGuiReaderWriter readerWriter;
|
private IGuiReaderWriter readerWriter;
|
||||||
|
private boolean addedListener;
|
||||||
|
|
||||||
public ContainerReaderWriter(IGuiReaderWriter readerWriter, TileBase tile, EntityPlayer player) {
|
public ContainerReaderWriter(IGuiReaderWriter readerWriter, TileBase tile, EntityPlayer player) {
|
||||||
super(tile, player);
|
super(tile, player);
|
||||||
@@ -18,4 +24,40 @@ public class ContainerReaderWriter extends ContainerBase {
|
|||||||
public IGuiReaderWriter getReaderWriter() {
|
public IGuiReaderWriter getReaderWriter() {
|
||||||
return readerWriter;
|
return readerWriter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void detectAndSendChanges() {
|
||||||
|
super.detectAndSendChanges();
|
||||||
|
|
||||||
|
IReaderWriterManager manager = readerWriter.getNetwork() == null ? null : readerWriter.getNetwork().getReaderWriterManager();
|
||||||
|
if (!getPlayer().world.isRemote) {
|
||||||
|
if (manager != null && !addedListener) {
|
||||||
|
manager.addListener(this);
|
||||||
|
|
||||||
|
this.addedListener = true;
|
||||||
|
} else if (manager == null && addedListener) {
|
||||||
|
this.addedListener = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onContainerClosed(EntityPlayer player) {
|
||||||
|
super.onContainerClosed(player);
|
||||||
|
|
||||||
|
IReaderWriterManager manager = readerWriter.getNetwork() == null ? null : readerWriter.getNetwork().getReaderWriterManager();
|
||||||
|
if (!player.getEntityWorld().isRemote && manager != null && addedListener) {
|
||||||
|
manager.removeListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttached() {
|
||||||
|
onChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChanged() {
|
||||||
|
RS.INSTANCE.network.sendTo(new MessageReaderWriterUpdate(readerWriter.getNetwork().getReaderWriterManager().getChannels()), (EntityPlayerMP) getPlayer());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public class GuiReaderWriter extends GuiBase {
|
|||||||
private static final int ITEM_HEIGHT = 18;
|
private static final int ITEM_HEIGHT = 18;
|
||||||
|
|
||||||
private List<String> channels = Collections.emptyList();
|
private List<String> channels = Collections.emptyList();
|
||||||
|
private String currentChannelToSet;
|
||||||
|
|
||||||
private GuiButton add;
|
private GuiButton add;
|
||||||
private GuiButton remove;
|
private GuiButton remove;
|
||||||
@@ -54,8 +55,6 @@ public class GuiReaderWriter extends GuiBase {
|
|||||||
name.setTextColor(16777215);
|
name.setTextColor(16777215);
|
||||||
name.setCanLoseFocus(true);
|
name.setCanLoseFocus(true);
|
||||||
name.setFocused(false);
|
name.setFocused(false);
|
||||||
|
|
||||||
updateSelection(readerWriter.getChannelParameter().getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> getChannels() {
|
private List<String> getChannels() {
|
||||||
@@ -64,6 +63,11 @@ public class GuiReaderWriter extends GuiBase {
|
|||||||
|
|
||||||
public void setChannels(List<String> channels) {
|
public void setChannels(List<String> channels) {
|
||||||
this.channels = channels;
|
this.channels = channels;
|
||||||
|
|
||||||
|
// In case we get the current channel packet earlier than our channel list.
|
||||||
|
if (currentChannelToSet != null) {
|
||||||
|
setCurrentChannel(currentChannelToSet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -197,8 +201,9 @@ public class GuiReaderWriter extends GuiBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateSelection(String channel) {
|
public void setCurrentChannel(String channel) {
|
||||||
this.itemSelected = getChannels().indexOf(channel);
|
this.itemSelected = getChannels().indexOf(channel);
|
||||||
this.name.setText(itemSelected != -1 ? getChannels().get(itemSelected) : "");
|
this.name.setText(itemSelected != -1 ? getChannels().get(itemSelected) : "");
|
||||||
|
this.currentChannelToSet = channel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public class ReaderWriterHandlerForgeEnergy implements IReaderWriterHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
public NBTTagCompound writeToNbt(NBTTagCompound tag) {
|
||||||
tag.setInteger(NBT_ENERGY_STORED, storage.getEnergyStored());
|
tag.setInteger(NBT_ENERGY_STORED, storage.getEnergyStored());
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
|||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MessageReaderWriterUpdate implements IMessage, IMessageHandler<MessageReaderWriterUpdate, IMessage> {
|
public class MessageReaderWriterUpdate implements IMessage, IMessageHandler<MessageReaderWriterUpdate, IMessage> {
|
||||||
@@ -17,8 +18,8 @@ public class MessageReaderWriterUpdate implements IMessage, IMessageHandler<Mess
|
|||||||
public MessageReaderWriterUpdate() {
|
public MessageReaderWriterUpdate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageReaderWriterUpdate(List<String> channels) {
|
public MessageReaderWriterUpdate(Collection<String> channels) {
|
||||||
this.channels = channels;
|
this.channels = new ArrayList<>(channels);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
|
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterListener;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.security.ISecurityManager;
|
import com.raoulvdberge.refinedstorage.api.network.security.ISecurityManager;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||||
@@ -131,7 +132,7 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
|||||||
private IStorageCache<FluidStack> fluidStorage = new StorageCacheFluid(this);
|
private IStorageCache<FluidStack> fluidStorage = new StorageCacheFluid(this);
|
||||||
private StorageTrackerFluid fluidStorageTracker = new StorageTrackerFluid(this::markDirty);
|
private StorageTrackerFluid fluidStorageTracker = new StorageTrackerFluid(this::markDirty);
|
||||||
|
|
||||||
private IReaderWriterManager readerWriterManager = new ReaderWriterManager(this, this::markDirty);
|
private IReaderWriterManager readerWriterManager = new ReaderWriterManager(this);
|
||||||
|
|
||||||
private EnergyForge energy = new EnergyForge(RS.INSTANCE.config.controllerCapacity);
|
private EnergyForge energy = new EnergyForge(RS.INSTANCE.config.controllerCapacity);
|
||||||
|
|
||||||
@@ -150,6 +151,17 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
|||||||
dataManager.addWatchedParameter(ENERGY_STORED);
|
dataManager.addWatchedParameter(ENERGY_STORED);
|
||||||
dataManager.addParameter(ENERGY_CAPACITY);
|
dataManager.addParameter(ENERGY_CAPACITY);
|
||||||
dataManager.addParameter(NODES);
|
dataManager.addParameter(NODES);
|
||||||
|
|
||||||
|
readerWriterManager.addListener(new IReaderWriterListener() {
|
||||||
|
@Override
|
||||||
|
public void onAttached() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChanged() {
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnergyForge getEnergy() {
|
public EnergyForge getEnergy() {
|
||||||
@@ -484,7 +496,7 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
|||||||
|
|
||||||
craftingManager.readFromNbt(tag);
|
craftingManager.readFromNbt(tag);
|
||||||
|
|
||||||
readerWriterManager.readFromNBT(tag);
|
readerWriterManager.readFromNbt(tag);
|
||||||
|
|
||||||
if (tag.hasKey(NBT_ITEM_STORAGE_TRACKER)) {
|
if (tag.hasKey(NBT_ITEM_STORAGE_TRACKER)) {
|
||||||
itemStorageTracker.readFromNBT(tag.getTagList(NBT_ITEM_STORAGE_TRACKER, Constants.NBT.TAG_COMPOUND));
|
itemStorageTracker.readFromNBT(tag.getTagList(NBT_ITEM_STORAGE_TRACKER, Constants.NBT.TAG_COMPOUND));
|
||||||
@@ -505,7 +517,7 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
|||||||
|
|
||||||
craftingManager.writeToNBT(tag);
|
craftingManager.writeToNBT(tag);
|
||||||
|
|
||||||
readerWriterManager.writeToNBT(tag);
|
readerWriterManager.writeToNbt(tag);
|
||||||
|
|
||||||
tag.setTag(NBT_ITEM_STORAGE_TRACKER, itemStorageTracker.serializeNBT());
|
tag.setTag(NBT_ITEM_STORAGE_TRACKER, itemStorageTracker.serializeNBT());
|
||||||
tag.setTag(NBT_FLUID_STORAGE_TRACKER, fluidStorageTracker.serializeNBT());
|
tag.setTag(NBT_FLUID_STORAGE_TRACKER, fluidStorageTracker.serializeNBT());
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class TileReader extends TileNode<NetworkNodeReader> {
|
|||||||
((IGuiReaderWriter) t.getNode()).setChannel(v);
|
((IGuiReaderWriter) t.getNode()).setChannel(v);
|
||||||
|
|
||||||
t.getNode().markDirty();
|
t.getNode().markDirty();
|
||||||
}, (initial, p) -> GuiBase.executeLater(GuiReaderWriter.class, readerWriter -> readerWriter.updateSelection(p)));
|
}, (initial, p) -> GuiBase.executeLater(GuiReaderWriter.class, readerWriter -> readerWriter.setCurrentChannel(p)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final TileDataParameter<String, TileReader> CHANNEL = createChannelParameter();
|
public static final TileDataParameter<String, TileReader> CHANNEL = createChannelParameter();
|
||||||
|
|||||||
Reference in New Issue
Block a user