Move reader writer logic to another class, crafting monitor update to crafting manager and use GuiBase.executeLater more
This commit is contained in:
@@ -96,6 +96,8 @@ public interface IRSAPI {
|
||||
IReaderWriterHandlerRegistry getReaderWriterHandlerRegistry();
|
||||
|
||||
/**
|
||||
* @param name the name of the channel
|
||||
* @param network the network
|
||||
* @return a new reader writer channel
|
||||
*/
|
||||
@Nonnull
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.api.autocrafting;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
@@ -216,4 +217,23 @@ public interface ICraftingManager {
|
||||
* @return the written tag
|
||||
*/
|
||||
NBTTagCompound writeToNBT(NBTTagCompound tag);
|
||||
|
||||
/**
|
||||
* Makes the network send a crafting monitor update to all players as soon as it can.
|
||||
*/
|
||||
void markCraftingMonitorForUpdate();
|
||||
|
||||
/**
|
||||
* Sends a crafting monitor update to all players that are watching a crafting monitor.
|
||||
* <p>
|
||||
* WARNING: In most cases, you should just use {@link ICraftingManager#markCraftingMonitorForUpdate()}, if not, you can get high bandwidth usage.
|
||||
*/
|
||||
void sendCraftingMonitorUpdate();
|
||||
|
||||
/**
|
||||
* Sends a crafting monitor update to a specific player.
|
||||
*
|
||||
* @param player the player
|
||||
*/
|
||||
void sendCraftingMonitorUpdate(EntityPlayerMP player);
|
||||
}
|
||||
|
||||
@@ -4,13 +4,12 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
||||
import com.raoulvdberge.refinedstorage.api.network.security.ISecurityManager;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorage;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
@@ -80,57 +79,9 @@ public interface INetwork {
|
||||
IStorageCache<FluidStack> getFluidStorageCache();
|
||||
|
||||
/**
|
||||
* Makes the network send a crafting monitor update to all players as soon as it can.
|
||||
* @return the {@link IReaderWriterManager} of this network
|
||||
*/
|
||||
void markCraftingMonitorForUpdate();
|
||||
|
||||
/**
|
||||
* Sends a crafting monitor update to all players that are watching a crafting monitor.
|
||||
* <p>
|
||||
* WARNING: In most cases, you should just use {@link INetwork#markCraftingMonitorForUpdate()}, if not,
|
||||
* you can get high bandwidth usage.
|
||||
*/
|
||||
void sendCraftingMonitorUpdate();
|
||||
|
||||
/**
|
||||
* Sends a crafting monitor update to a specific player.
|
||||
*
|
||||
* @param player the player
|
||||
*/
|
||||
void sendCraftingMonitorUpdate(EntityPlayerMP player);
|
||||
|
||||
/**
|
||||
* @param name the name of the reader writer channel
|
||||
* @return the reader writer channel, or null if nothing was found
|
||||
*/
|
||||
@Nullable
|
||||
IReaderWriterChannel getReaderWriterChannel(String name);
|
||||
|
||||
/**
|
||||
* Adds a new reader writer channel.
|
||||
*
|
||||
* @param name the name of this channel
|
||||
*/
|
||||
void addReaderWriterChannel(String name);
|
||||
|
||||
/**
|
||||
* Removes a reader writer channel.
|
||||
*
|
||||
* @param name the name of the channel to remove
|
||||
*/
|
||||
void removeReaderWriterChannel(String name);
|
||||
|
||||
/**
|
||||
* Sends a reader writer channel update to all players watching a reader or writer.
|
||||
*/
|
||||
void sendReaderWriterChannelUpdate();
|
||||
|
||||
/**
|
||||
* Sends a reader writer channel update to a specific player.
|
||||
*
|
||||
* @param player the player to send to
|
||||
*/
|
||||
void sendReaderWriterChannelUpdate(EntityPlayerMP player);
|
||||
IReaderWriterManager getReaderWriterManager();
|
||||
|
||||
/**
|
||||
* Inserts an item in this network.
|
||||
|
||||
@@ -50,6 +50,7 @@ public interface IGrid {
|
||||
GridType getType();
|
||||
|
||||
/**
|
||||
* @param player the player to create a listener for
|
||||
* @return a listener for this grid, will be attached to the storage cache in {@link #getStorageCache()}
|
||||
*/
|
||||
IStorageCacheListener createListener(EntityPlayerMP player);
|
||||
|
||||
@@ -23,6 +23,7 @@ public interface IFluidGridHandler {
|
||||
/**
|
||||
* Called when a player tries to insert fluids in the grid.
|
||||
*
|
||||
* @param player the player
|
||||
* @param container a stack with a fluid container we're trying to insert
|
||||
* @return the remainder, or null if there is no remainder
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network.readerwriter;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* A manager for the reader writer.
|
||||
*/
|
||||
public interface IReaderWriterManager {
|
||||
/**
|
||||
* Updates the channels.
|
||||
*/
|
||||
void update();
|
||||
|
||||
/**
|
||||
* @param name the name of the channel
|
||||
* @return the channel, or null if nothing was found
|
||||
*/
|
||||
@Nullable
|
||||
IReaderWriterChannel getChannel(String name);
|
||||
|
||||
/**
|
||||
* Adds a new channel.
|
||||
*
|
||||
* @param name the name of this channel
|
||||
*/
|
||||
void addChannel(String name);
|
||||
|
||||
/**
|
||||
* Removes a channel.
|
||||
*
|
||||
* @param name the name of the channel to remove
|
||||
*/
|
||||
void removeChannel(String name);
|
||||
|
||||
/**
|
||||
* Sends a channel update to all players watching a reader or writer.
|
||||
*/
|
||||
void sendUpdate();
|
||||
|
||||
/**
|
||||
* Sends a channel update to a specific player.
|
||||
*
|
||||
* @param player the player to send to
|
||||
*/
|
||||
void sendUpdateTo(EntityPlayerMP player);
|
||||
|
||||
/**
|
||||
* @param tag the tag to write to
|
||||
*/
|
||||
void writeToNBT(NBTTagCompound tag);
|
||||
|
||||
/**
|
||||
* @param tag the tag to read from
|
||||
*/
|
||||
void readFromNBT(NBTTagCompound tag);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.*;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.registry.ICraftingTaskFactory;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingStep;
|
||||
@@ -10,7 +11,10 @@ import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorElements;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileController;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
@@ -37,6 +41,8 @@ public class CraftingManager implements ICraftingManager {
|
||||
private List<NBTTagCompound> craftingTasksToRead = new ArrayList<>();
|
||||
private List<ICraftingStep> runningSteps = new ArrayList<>();
|
||||
|
||||
private boolean craftingMonitorUpdateRequested;
|
||||
|
||||
private int ticks;
|
||||
|
||||
public CraftingManager(TileController network) {
|
||||
@@ -195,10 +201,16 @@ public class CraftingManager implements ICraftingManager {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (craftingTasksChanged) {
|
||||
network.getNetwork().markCraftingMonitorForUpdate();
|
||||
markCraftingMonitorForUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (craftingMonitorUpdateRequested) {
|
||||
craftingMonitorUpdateRequested = false;
|
||||
|
||||
sendCraftingMonitorUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -246,7 +258,7 @@ public class CraftingManager implements ICraftingManager {
|
||||
|
||||
add(task);
|
||||
|
||||
network.markCraftingMonitorForUpdate();
|
||||
markCraftingMonitorForUpdate();
|
||||
|
||||
return task;
|
||||
}
|
||||
@@ -280,6 +292,23 @@ public class CraftingManager implements ICraftingManager {
|
||||
craftingTasks.forEach(t -> t.getMissing().clear());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markCraftingMonitorForUpdate() {
|
||||
craftingMonitorUpdateRequested = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendCraftingMonitorUpdate() {
|
||||
network.world().getMinecraftServer().getPlayerList().getPlayers().stream()
|
||||
.filter(player -> player.openContainer instanceof ContainerCraftingMonitor && network.getPosition().equals(((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor().getNetworkPosition()))
|
||||
.forEach(player -> RS.INSTANCE.network.sendTo(new MessageCraftingMonitorElements(((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor()), player));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendCraftingMonitorUpdate(EntityPlayerMP player) {
|
||||
RS.INSTANCE.network.sendTo(new MessageCraftingMonitorElements(((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor()), player);
|
||||
}
|
||||
|
||||
private static ICraftingTask readCraftingTask(INetwork network, NBTTagCompound tag) {
|
||||
ItemStack stack = new ItemStack(tag.getCompoundTag(ICraftingTask.NBT_PATTERN_STACK));
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ public abstract class CraftingStep implements ICraftingStep {
|
||||
|
||||
stack.shrink(toReceive);
|
||||
|
||||
network.markCraftingMonitorForUpdate();
|
||||
network.getCraftingManager().markCraftingMonitorForUpdate();
|
||||
|
||||
if (stack.isEmpty()) {
|
||||
return true;
|
||||
|
||||
@@ -408,7 +408,7 @@ public class CraftingTask implements ICraftingTask {
|
||||
}
|
||||
}
|
||||
|
||||
network.markCraftingMonitorForUpdate();
|
||||
network.getCraftingManager().markCraftingMonitorForUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -493,7 +493,7 @@ public class CraftingTask implements ICraftingTask {
|
||||
|
||||
usedContainers.put(container, timesUsed);
|
||||
|
||||
network.markCraftingMonitorForUpdate();
|
||||
network.getCraftingManager().markCraftingMonitorForUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -542,7 +542,7 @@ public class CraftingTask implements ICraftingTask {
|
||||
calculate();
|
||||
}
|
||||
|
||||
network.markCraftingMonitorForUpdate();
|
||||
network.getCraftingManager().markCraftingMonitorForUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
|
||||
|
||||
player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), hand.ordinal(), network.world().provider.getDimension(), 0);
|
||||
|
||||
network.sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
||||
network.getCraftingManager().sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
||||
|
||||
drainEnergy(RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage);
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ public interface IGuiReaderWriter {
|
||||
INetwork network = getNetwork();
|
||||
|
||||
if (network != null && !name.isEmpty()) {
|
||||
network.addReaderWriterChannel(name);
|
||||
network.getReaderWriterManager().addChannel(name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public interface IGuiReaderWriter {
|
||||
INetwork network = getNetwork();
|
||||
|
||||
if (network != null && !name.isEmpty()) {
|
||||
network.removeReaderWriterChannel(name);
|
||||
network.getReaderWriterManager().removeChannel(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
filterListener.accept(slot);
|
||||
|
||||
if (network != null) {
|
||||
network.sendCraftingMonitorUpdate();
|
||||
network.getCraftingManager().sendCraftingMonitorUpdate();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -92,7 +92,7 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
|
||||
public void onOpened(EntityPlayer player) {
|
||||
if (network != null) {
|
||||
network.sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
||||
network.getCraftingManager().sendCraftingMonitorUpdate((EntityPlayerMP) player);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ public class NetworkNodeReader extends NetworkNode implements IReader, IGuiReade
|
||||
|
||||
public void onOpened(EntityPlayer entity) {
|
||||
if (network != null) {
|
||||
network.sendReaderWriterChannelUpdate((EntityPlayerMP) entity);
|
||||
network.getReaderWriterManager().sendUpdateTo((EntityPlayerMP) entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
|
||||
@Override
|
||||
public void setChannel(String channel) {
|
||||
if (network != null && channel.equals("")) {
|
||||
IReaderWriterChannel networkChannel = network.getReaderWriterChannel(this.channel);
|
||||
IReaderWriterChannel networkChannel = network.getReaderWriterManager().getChannel(this.channel);
|
||||
|
||||
if (networkChannel != null) {
|
||||
for (IReaderWriterHandler handler : networkChannel.getHandlers()) {
|
||||
@@ -118,7 +118,7 @@ public class NetworkNodeWriter extends NetworkNode implements IWriter, IGuiReade
|
||||
|
||||
public void onOpened(EntityPlayer entity) {
|
||||
if (network != null) {
|
||||
network.sendReaderWriterChannelUpdate((EntityPlayerMP) entity);
|
||||
network.getReaderWriterManager().sendUpdateTo((EntityPlayerMP) entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
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.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
||||
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.NBTTagList;
|
||||
import net.minecraftforge.common.util.Constants;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ReaderWriterManager implements IReaderWriterManager {
|
||||
private static final String NBT_CHANNELS = "ReaderWriterChannels";
|
||||
private static final String NBT_NAME = "Name";
|
||||
|
||||
private INetwork network;
|
||||
private Runnable listener;
|
||||
private Map<String, IReaderWriterChannel> channels = new HashMap<>();
|
||||
|
||||
public ReaderWriterManager(INetwork network, Runnable listener) {
|
||||
this.network = network;
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
for (IReaderWriterChannel channel : channels.values()) {
|
||||
for (IReaderWriterHandler handler : channel.getHandlers()) {
|
||||
handler.update(channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public IReaderWriterChannel getChannel(String name) {
|
||||
return channels.get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChannel(String name) {
|
||||
channels.put(name, API.instance().createReaderWriterChannel(name, network));
|
||||
|
||||
listener.run();
|
||||
|
||||
sendUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChannel(String name) {
|
||||
IReaderWriterChannel channel = getChannel(name);
|
||||
|
||||
if (channel != null) {
|
||||
channel.getReaders().forEach(reader -> reader.setChannel(""));
|
||||
channel.getWriters().forEach(writer -> writer.setChannel(""));
|
||||
|
||||
channels.remove(name);
|
||||
|
||||
listener.run();
|
||||
|
||||
sendUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendUpdate() {
|
||||
// @todo: Move to a listener system
|
||||
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
|
||||
public void sendUpdateTo(EntityPlayerMP player) {
|
||||
RS.INSTANCE.network.sendTo(new MessageReaderWriterUpdate(new ArrayList<>(channels.keySet())), player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound tag) {
|
||||
NBTTagList readerWriterChannelsList = new NBTTagList();
|
||||
|
||||
for (Map.Entry<String, IReaderWriterChannel> entry : channels.entrySet()) {
|
||||
NBTTagCompound channelTag = entry.getValue().writeToNBT(new NBTTagCompound());
|
||||
|
||||
channelTag.setString(NBT_NAME, entry.getKey());
|
||||
|
||||
readerWriterChannelsList.appendTag(channelTag);
|
||||
}
|
||||
|
||||
tag.setTag(NBT_CHANNELS, readerWriterChannelsList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound tag) {
|
||||
if (tag.hasKey(NBT_CHANNELS)) {
|
||||
NBTTagList readerWriterChannelsList = tag.getTagList(NBT_CHANNELS, Constants.NBT.TAG_COMPOUND);
|
||||
|
||||
for (int i = 0; i < readerWriterChannelsList.tagCount(); ++i) {
|
||||
NBTTagCompound channelTag = readerWriterChannelsList.getCompoundTagAt(i);
|
||||
|
||||
String name = channelTag.getString(NBT_NAME);
|
||||
|
||||
IReaderWriterChannel channel = API.instance().createReaderWriterChannel(name, network);
|
||||
|
||||
channel.readFromNBT(channelTag);
|
||||
|
||||
channels.put(name, channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ public class BlockReader extends BlockCable {
|
||||
|
||||
if (player.isSneaking()) {
|
||||
if (reader.getNetwork() != null) {
|
||||
IReaderWriterChannel channel = reader.getNetwork().getReaderWriterChannel(reader.getChannel());
|
||||
IReaderWriterChannel channel = reader.getNetwork().getReaderWriterManager().getChannel(reader.getChannel());
|
||||
|
||||
if (channel != null) {
|
||||
channel.getHandlers().stream().map(h -> h.getStatusReader(reader, channel)).flatMap(List::stream).forEach(player::sendMessage);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class BlockWriter extends BlockCable {
|
||||
|
||||
if (player.isSneaking()) {
|
||||
if (writer.getNetwork() != null) {
|
||||
IReaderWriterChannel channel = writer.getNetwork().getReaderWriterChannel(writer.getChannel());
|
||||
IReaderWriterChannel channel = writer.getNetwork().getReaderWriterManager().getChannel(writer.getChannel());
|
||||
|
||||
if (channel != null) {
|
||||
channel.getHandlers().stream().map(h -> h.getStatusWriter(writer, channel)).flatMap(List::stream).forEach(player::sendMessage);
|
||||
|
||||
@@ -19,13 +19,11 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiCraftingMonitor extends GuiBase {
|
||||
public static List<ICraftingMonitorElement> ELEMENTS = Collections.emptyList();
|
||||
|
||||
public class CraftingMonitorElementDrawers extends ElementDrawers {
|
||||
private IElementDrawer<Integer> overlayDrawer = (x, y, colour) -> {
|
||||
private IElementDrawer<Integer> overlayDrawer = (x, y, color) -> {
|
||||
GlStateManager.color(1, 1, 1, 1);
|
||||
GlStateManager.disableLighting();
|
||||
drawRect(x, y, x + ITEM_WIDTH, y + ITEM_HEIGHT - 1, colour);
|
||||
drawRect(x, y, x + ITEM_WIDTH, y + ITEM_HEIGHT - 1, color);
|
||||
};
|
||||
|
||||
@Override
|
||||
@@ -43,11 +41,11 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
private GuiButton cancelAllButton;
|
||||
|
||||
private ICraftingMonitor craftingMonitor;
|
||||
private List<ICraftingMonitorElement> elements = Collections.emptyList();
|
||||
|
||||
private IElementDrawers drawers = new CraftingMonitorElementDrawers();
|
||||
|
||||
private int itemSelected = -1;
|
||||
|
||||
private int itemSelectedX = -1;
|
||||
private int itemSelectedY = -1;
|
||||
|
||||
@@ -58,8 +56,12 @@ public class GuiCraftingMonitor extends GuiBase {
|
||||
this.scrollbar = new Scrollbar(157, 20, 12, 89);
|
||||
}
|
||||
|
||||
public void setElements(List<ICraftingMonitorElement> elements) {
|
||||
this.elements = elements;
|
||||
}
|
||||
|
||||
private List<ICraftingMonitorElement> getElements() {
|
||||
return craftingMonitor.isActive() ? ELEMENTS : Collections.emptyList();
|
||||
return craftingMonitor.isActive() ? elements : Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,7 +13,7 @@ import net.minecraft.client.gui.GuiTextField;
|
||||
import java.io.IOException;
|
||||
|
||||
public class GuiDetector extends GuiBase {
|
||||
public static GuiTextField AMOUNT;
|
||||
private GuiTextField amount;
|
||||
|
||||
public GuiDetector(ContainerDetector container) {
|
||||
super(container, 176, 137);
|
||||
@@ -29,13 +29,13 @@ public class GuiDetector extends GuiBase {
|
||||
addSideButton(new SideButtonCompare(this, TileDetector.COMPARE, IComparer.COMPARE_NBT));
|
||||
addSideButton(new SideButtonCompare(this, TileDetector.COMPARE, IComparer.COMPARE_OREDICT));
|
||||
|
||||
AMOUNT = new GuiTextField(0, fontRenderer, x + 41 + 1, y + 23 + 1, 50, fontRenderer.FONT_HEIGHT);
|
||||
AMOUNT.setText(String.valueOf(TileDetector.AMOUNT.getValue()));
|
||||
AMOUNT.setEnableBackgroundDrawing(false);
|
||||
AMOUNT.setVisible(true);
|
||||
AMOUNT.setTextColor(16777215);
|
||||
AMOUNT.setCanLoseFocus(true);
|
||||
AMOUNT.setFocused(false);
|
||||
amount = new GuiTextField(0, fontRenderer, x + 41 + 1, y + 23 + 1, 50, fontRenderer.FONT_HEIGHT);
|
||||
amount.setText(String.valueOf(TileDetector.AMOUNT.getValue()));
|
||||
amount.setEnableBackgroundDrawing(false);
|
||||
amount.setVisible(true);
|
||||
amount.setTextColor(16777215);
|
||||
amount.setCanLoseFocus(true);
|
||||
amount.setFocused(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,7 +48,7 @@ public class GuiDetector extends GuiBase {
|
||||
|
||||
drawTexture(x, y, 0, 0, screenWidth, screenHeight);
|
||||
|
||||
AMOUNT.drawTextBox();
|
||||
amount.drawTextBox();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,8 +59,8 @@ public class GuiDetector extends GuiBase {
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char character, int keyCode) throws IOException {
|
||||
if (!checkHotbarKeys(keyCode) && AMOUNT.textboxKeyTyped(character, keyCode)) {
|
||||
Integer result = Ints.tryParse(AMOUNT.getText());
|
||||
if (!checkHotbarKeys(keyCode) && amount.textboxKeyTyped(character, keyCode)) {
|
||||
Integer result = Ints.tryParse(amount.getText());
|
||||
|
||||
if (result != null) {
|
||||
TileDataManager.setParameter(TileDetector.AMOUNT, result);
|
||||
@@ -74,6 +74,10 @@ public class GuiDetector extends GuiBase {
|
||||
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
|
||||
super.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
|
||||
AMOUNT.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
amount.mouseClicked(mouseX, mouseY, mouseButton);
|
||||
}
|
||||
|
||||
public GuiTextField getAmount() {
|
||||
return amount;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,20 +18,19 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiReaderWriter extends GuiBase {
|
||||
public static List<String> CHANNELS = Collections.emptyList();
|
||||
|
||||
private static final int VISIBLE_ROWS = 4;
|
||||
|
||||
private static final int ITEM_WIDTH = 143;
|
||||
private static final int ITEM_HEIGHT = 18;
|
||||
|
||||
private List<String> channels = Collections.emptyList();
|
||||
|
||||
private GuiButton add;
|
||||
private GuiButton remove;
|
||||
private GuiTextField name;
|
||||
private IGuiReaderWriter readerWriter;
|
||||
|
||||
private int itemSelected = -1;
|
||||
|
||||
private int itemSelectedX = -1;
|
||||
private int itemSelectedY = -1;
|
||||
|
||||
@@ -58,6 +57,14 @@ public class GuiReaderWriter extends GuiBase {
|
||||
updateSelection(readerWriter.getChannelParameter().getValue());
|
||||
}
|
||||
|
||||
private List<String> getChannels() {
|
||||
return readerWriter.isActive() ? channels : Collections.emptyList();
|
||||
}
|
||||
|
||||
public void setChannels(List<String> channels) {
|
||||
this.channels = channels;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(int x, int y) {
|
||||
if (scrollbar != null) {
|
||||
@@ -152,9 +159,9 @@ public class GuiReaderWriter extends GuiBase {
|
||||
@Override
|
||||
protected void keyTyped(char character, int keyCode) throws IOException {
|
||||
if (keyCode == Keyboard.KEY_DELETE) {
|
||||
sendRemove();
|
||||
onRemove();
|
||||
} else if (name.isFocused() && keyCode == Keyboard.KEY_RETURN) {
|
||||
sendAdd();
|
||||
onAdd();
|
||||
} else if (!checkHotbarKeys(keyCode) && name.textboxKeyTyped(character, keyCode)) {
|
||||
// NO OP
|
||||
} else {
|
||||
@@ -167,13 +174,13 @@ public class GuiReaderWriter extends GuiBase {
|
||||
super.actionPerformed(button);
|
||||
|
||||
if (button == add) {
|
||||
sendAdd();
|
||||
onAdd();
|
||||
} else if (button == remove) {
|
||||
sendRemove();
|
||||
onRemove();
|
||||
}
|
||||
}
|
||||
|
||||
private void sendAdd() {
|
||||
private void onAdd() {
|
||||
String name = this.name.getText().trim();
|
||||
|
||||
if (!name.isEmpty()) {
|
||||
@@ -181,7 +188,7 @@ public class GuiReaderWriter extends GuiBase {
|
||||
}
|
||||
}
|
||||
|
||||
private void sendRemove() {
|
||||
private void onRemove() {
|
||||
String name = this.name.getText().trim();
|
||||
|
||||
if (!name.isEmpty()) {
|
||||
@@ -193,8 +200,4 @@ public class GuiReaderWriter extends GuiBase {
|
||||
this.itemSelected = getChannels().indexOf(channel);
|
||||
this.name.setText(itemSelected != -1 ? getChannels().get(itemSelected) : "");
|
||||
}
|
||||
|
||||
private List<String> getChannels() {
|
||||
return readerWriter.isActive() ? CHANNELS : Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.network;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.gui.grid.filtering.GridFilterFilter;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||
@@ -70,7 +71,9 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(MessageCraftingMonitorElements message, MessageContext ctx) {
|
||||
GuiCraftingMonitor.ELEMENTS = message.elements;
|
||||
GuiBase.executeLater(GuiCraftingMonitor.class, craftingMonitor -> {
|
||||
craftingMonitor.setElements(message.elements);
|
||||
});
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiReaderWriter;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||
@@ -8,22 +9,20 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class MessageReaderWriterUpdate implements IMessage, IMessageHandler<MessageReaderWriterUpdate, IMessage> {
|
||||
private Collection<String> channels;
|
||||
private List<String> channels = new ArrayList<>();
|
||||
|
||||
public MessageReaderWriterUpdate() {
|
||||
}
|
||||
|
||||
public MessageReaderWriterUpdate(Collection<String> channels) {
|
||||
public MessageReaderWriterUpdate(List<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) {
|
||||
@@ -42,7 +41,7 @@ public class MessageReaderWriterUpdate implements IMessage, IMessageHandler<Mess
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(MessageReaderWriterUpdate message, MessageContext ctx) {
|
||||
GuiReaderWriter.CHANNELS = (ArrayList<String>) message.channels;
|
||||
GuiBase.executeLater(GuiReaderWriter.class, readerWriter -> readerWriter.setChannels(message.channels));
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -11,14 +11,12 @@ import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler
|
||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterChannel;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.readerwriter.IReaderWriterManager;
|
||||
import com.raoulvdberge.refinedstorage.api.network.security.ISecurityManager;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorage;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.IStorageTracker;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingManager;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandler;
|
||||
@@ -26,6 +24,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHand
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.externalstorage.StorageFluidExternal;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.externalstorage.StorageItemExternal;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.readerwriter.ReaderWriterManager;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.security.SecurityManager;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheFluid;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageCacheItem;
|
||||
@@ -35,11 +34,7 @@ import com.raoulvdberge.refinedstorage.block.BlockController;
|
||||
import com.raoulvdberge.refinedstorage.block.ControllerEnergyType;
|
||||
import com.raoulvdberge.refinedstorage.block.ControllerType;
|
||||
import com.raoulvdberge.refinedstorage.capability.CapabilityNetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.container.ContainerReaderWriter;
|
||||
import com.raoulvdberge.refinedstorage.integration.forgeenergy.EnergyForge;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorElements;
|
||||
import com.raoulvdberge.refinedstorage.network.MessageReaderWriterUpdate;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||
@@ -47,11 +42,9 @@ import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.ITickable;
|
||||
@@ -65,7 +58,9 @@ import net.minecraftforge.items.ItemHandlerHelper;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class TileController extends TileBase implements ITickable, INetwork, IRedstoneConfigurable, INetworkNode, INetworkNodeProxy<TileController> {
|
||||
@@ -116,9 +111,6 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity";
|
||||
public static final String NBT_ENERGY_TYPE = "EnergyType";
|
||||
|
||||
private static final String NBT_READER_WRITER_CHANNELS = "ReaderWriterChannels";
|
||||
private static final String NBT_READER_WRITER_NAME = "Name";
|
||||
|
||||
private static final String NBT_ITEM_STORAGE_TRACKER = "ItemStorageTracker";
|
||||
private static final String NBT_FLUID_STORAGE_TRACKER = "FluidStorageTracker";
|
||||
|
||||
@@ -139,7 +131,7 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
private IStorageCache<FluidStack> fluidStorage = new StorageCacheFluid(this);
|
||||
private StorageTrackerFluid fluidStorageTracker = new StorageTrackerFluid(this::markDirty);
|
||||
|
||||
private Map<String, IReaderWriterChannel> readerWriterChannels = new HashMap<>();
|
||||
private IReaderWriterManager readerWriterManager = new ReaderWriterManager(this, this::markDirty);
|
||||
|
||||
private EnergyForge energy = new EnergyForge(RS.INSTANCE.config.controllerCapacity);
|
||||
|
||||
@@ -147,8 +139,6 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
private boolean couldRun;
|
||||
private int ticksSinceUpdateChanged;
|
||||
|
||||
private boolean craftingMonitorUpdateRequested;
|
||||
|
||||
private ControllerType type;
|
||||
private ControllerEnergyType energyType = ControllerEnergyType.OFF;
|
||||
|
||||
@@ -197,21 +187,11 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
if (canRun()) {
|
||||
craftingManager.update();
|
||||
|
||||
for (IReaderWriterChannel channel : readerWriterChannels.values()) {
|
||||
for (IReaderWriterHandler handler : channel.getHandlers()) {
|
||||
handler.update(channel);
|
||||
}
|
||||
}
|
||||
readerWriterManager.update();
|
||||
|
||||
if (!craftingManager.getTasks().isEmpty() || !readerWriterChannels.isEmpty()) {
|
||||
if (!craftingManager.getTasks().isEmpty()) {
|
||||
markDirty();
|
||||
}
|
||||
|
||||
if (craftingMonitorUpdateRequested) {
|
||||
craftingMonitorUpdateRequested = false;
|
||||
|
||||
sendCraftingMonitorUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
if (getType() == ControllerType.NORMAL) {
|
||||
@@ -293,61 +273,8 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markCraftingMonitorForUpdate() {
|
||||
craftingMonitorUpdateRequested = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendCraftingMonitorUpdate() {
|
||||
world.getMinecraftServer().getPlayerList().getPlayers().stream()
|
||||
.filter(player -> player.openContainer instanceof ContainerCraftingMonitor && pos.equals(((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor().getNetworkPosition()))
|
||||
.forEach(player -> RS.INSTANCE.network.sendTo(new MessageCraftingMonitorElements(((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor()), player));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendCraftingMonitorUpdate(EntityPlayerMP player) {
|
||||
RS.INSTANCE.network.sendTo(new MessageCraftingMonitorElements(((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor()), player);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public IReaderWriterChannel getReaderWriterChannel(String name) {
|
||||
return readerWriterChannels.get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addReaderWriterChannel(String name) {
|
||||
readerWriterChannels.put(name, API.instance().createReaderWriterChannel(name, this));
|
||||
|
||||
sendReaderWriterChannelUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeReaderWriterChannel(String name) {
|
||||
IReaderWriterChannel channel = getReaderWriterChannel(name);
|
||||
|
||||
if (channel != null) {
|
||||
channel.getReaders().forEach(reader -> reader.setChannel(""));
|
||||
channel.getWriters().forEach(writer -> writer.setChannel(""));
|
||||
|
||||
readerWriterChannels.remove(name);
|
||||
|
||||
sendReaderWriterChannelUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendReaderWriterChannelUpdate() {
|
||||
world.getMinecraftServer().getPlayerList().getPlayers().stream()
|
||||
.filter(player -> player.openContainer instanceof ContainerReaderWriter &&
|
||||
((ContainerReaderWriter) player.openContainer).getReaderWriter().getNetwork() != null &&
|
||||
pos.equals(((ContainerReaderWriter) player.openContainer).getReaderWriter().getNetwork().getPosition()))
|
||||
.forEach(this::sendReaderWriterChannelUpdate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendReaderWriterChannelUpdate(EntityPlayerMP player) {
|
||||
RS.INSTANCE.network.sendTo(new MessageReaderWriterUpdate(readerWriterChannels.keySet()), player);
|
||||
public IReaderWriterManager getReaderWriterManager() {
|
||||
return readerWriterManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -557,21 +484,7 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
|
||||
craftingManager.readFromNBT(tag);
|
||||
|
||||
if (tag.hasKey(NBT_READER_WRITER_CHANNELS)) {
|
||||
NBTTagList readerWriterChannelsList = tag.getTagList(NBT_READER_WRITER_CHANNELS, Constants.NBT.TAG_COMPOUND);
|
||||
|
||||
for (int i = 0; i < readerWriterChannelsList.tagCount(); ++i) {
|
||||
NBTTagCompound channelTag = readerWriterChannelsList.getCompoundTagAt(i);
|
||||
|
||||
String name = channelTag.getString(NBT_READER_WRITER_NAME);
|
||||
|
||||
IReaderWriterChannel channel = API.instance().createReaderWriterChannel(name, this);
|
||||
|
||||
channel.readFromNBT(channelTag);
|
||||
|
||||
readerWriterChannels.put(name, channel);
|
||||
}
|
||||
}
|
||||
readerWriterManager.readFromNBT(tag);
|
||||
|
||||
if (tag.hasKey(NBT_ITEM_STORAGE_TRACKER)) {
|
||||
itemStorageTracker.readFromNBT(tag.getTagList(NBT_ITEM_STORAGE_TRACKER, Constants.NBT.TAG_COMPOUND));
|
||||
@@ -592,17 +505,7 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
|
||||
craftingManager.writeToNBT(tag);
|
||||
|
||||
NBTTagList readerWriterChannelsList = new NBTTagList();
|
||||
|
||||
for (Map.Entry<String, IReaderWriterChannel> entry : readerWriterChannels.entrySet()) {
|
||||
NBTTagCompound channelTag = entry.getValue().writeToNBT(new NBTTagCompound());
|
||||
|
||||
channelTag.setString(NBT_READER_WRITER_NAME, entry.getKey());
|
||||
|
||||
readerWriterChannelsList.appendTag(channelTag);
|
||||
}
|
||||
|
||||
tag.setTag(NBT_READER_WRITER_CHANNELS, readerWriterChannelsList);
|
||||
readerWriterManager.writeToNBT(tag);
|
||||
|
||||
tag.setTag(NBT_ITEM_STORAGE_TRACKER, itemStorageTracker.serializeNBT());
|
||||
tag.setTag(NBT_FLUID_STORAGE_TRACKER, fluidStorageTracker.serializeNBT());
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
package com.raoulvdberge.refinedstorage.tile;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeDetector;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiDetector;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
@@ -30,15 +27,7 @@ public class TileDetector extends TileNode<NetworkNodeDetector> {
|
||||
public static final TileDataParameter<Integer, TileDetector> AMOUNT = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getAmount(), (t, v) -> {
|
||||
t.getNode().setAmount(v);
|
||||
t.getNode().markDirty();
|
||||
}, p -> {
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
|
||||
GuiScreen gui = Minecraft.getMinecraft().currentScreen;
|
||||
|
||||
if (gui instanceof GuiDetector) {
|
||||
GuiDetector.AMOUNT.setText(String.valueOf(p));
|
||||
}
|
||||
}
|
||||
});
|
||||
}, p -> GuiBase.executeLater(GuiDetector.class, detector -> detector.getAmount().setText(String.valueOf(p))));
|
||||
|
||||
public TileDetector() {
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
|
||||
@@ -72,7 +72,7 @@ public class TileReader extends TileNode<NetworkNodeReader> {
|
||||
return false;
|
||||
}
|
||||
|
||||
IReaderWriterChannel channel = reader.getNetwork().getReaderWriterChannel(reader.getChannel());
|
||||
IReaderWriterChannel channel = reader.getNetwork().getReaderWriterManager().getChannel(reader.getChannel());
|
||||
|
||||
if (channel == null) {
|
||||
return false;
|
||||
@@ -106,7 +106,7 @@ public class TileReader extends TileNode<NetworkNodeReader> {
|
||||
return null;
|
||||
}
|
||||
|
||||
IReaderWriterChannel channel = reader.getNetwork().getReaderWriterChannel(reader.getChannel());
|
||||
IReaderWriterChannel channel = reader.getNetwork().getReaderWriterManager().getChannel(reader.getChannel());
|
||||
|
||||
if (channel == null) {
|
||||
return null;
|
||||
|
||||
@@ -56,7 +56,7 @@ public class TileWriter extends TileNode<NetworkNodeWriter> {
|
||||
return false;
|
||||
}
|
||||
|
||||
IReaderWriterChannel channel = writer.getNetwork().getReaderWriterChannel(writer.getChannel());
|
||||
IReaderWriterChannel channel = writer.getNetwork().getReaderWriterManager().getChannel(writer.getChannel());
|
||||
|
||||
if (channel == null) {
|
||||
return false;
|
||||
@@ -90,7 +90,7 @@ public class TileWriter extends TileNode<NetworkNodeWriter> {
|
||||
return null;
|
||||
}
|
||||
|
||||
IReaderWriterChannel channel = writer.getNetwork().getReaderWriterChannel(writer.getChannel());
|
||||
IReaderWriterChannel channel = writer.getNetwork().getReaderWriterManager().getChannel(writer.getChannel());
|
||||
|
||||
if (channel == null) {
|
||||
return null;
|
||||
|
||||
@@ -18,7 +18,7 @@ public class TileCraftingMonitor extends TileNode<NetworkNodeCraftingMonitor> {
|
||||
INetwork network = t.getNode().getNetwork();
|
||||
|
||||
if (network != null) {
|
||||
network.sendCraftingMonitorUpdate();
|
||||
network.getCraftingManager().sendCraftingMonitorUpdate();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
||||
INetwork network = getNetwork();
|
||||
|
||||
if (network != null) {
|
||||
network.sendCraftingMonitorUpdate();
|
||||
network.getCraftingManager().sendCraftingMonitorUpdate();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -78,11 +78,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
|
||||
t.setSearchBoxMode(v);
|
||||
t.markDirty();
|
||||
}
|
||||
}, p -> {
|
||||
if (Minecraft.getMinecraft().currentScreen instanceof GuiGrid) {
|
||||
((GuiGrid) Minecraft.getMinecraft().currentScreen).updateSearchFieldFocus(p);
|
||||
}
|
||||
});
|
||||
}, p -> GuiBase.executeLater(GuiGrid.class, grid -> grid.updateSearchFieldFocus(p)));
|
||||
public static final TileDataParameter<Integer, TilePortableGrid> SIZE = new TileDataParameter<>(DataSerializers.VARINT, 0, TilePortableGrid::getSize, (t, v) -> {
|
||||
if (IGrid.isValidSize(v)) {
|
||||
t.setSize(v);
|
||||
|
||||
Reference in New Issue
Block a user