Remove network node equals/hashCode requirement.
This commit is contained in:
@@ -10,7 +10,6 @@ import com.refinedmods.refinedstorage.api.autocrafting.task.ICraftingTaskRegistr
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkManager;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.ICraftingGridBehavior;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.IGridManager;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeRegistry;
|
||||
import com.refinedmods.refinedstorage.api.storage.StorageType;
|
||||
@@ -218,17 +217,4 @@ public interface IRSAPI {
|
||||
* @return a hashcode for the given stack
|
||||
*/
|
||||
int getFluidStackHashCode(FluidStack stack);
|
||||
|
||||
/**
|
||||
* @param node the node
|
||||
* @return the hashcode
|
||||
*/
|
||||
int getNetworkNodeHashCode(INetworkNode node);
|
||||
|
||||
/**
|
||||
* @param left the first network node
|
||||
* @param right the second network node
|
||||
* @return true if the two network nodes are equal, false otherwise
|
||||
*/
|
||||
boolean isNetworkNodeEqual(INetworkNode left, Object right);
|
||||
}
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package com.refinedmods.refinedstorage.api.network;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.util.Action;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
@@ -30,9 +29,9 @@ public interface INetworkNodeGraph {
|
||||
void runActionWhenPossible(Consumer<INetwork> handler);
|
||||
|
||||
/**
|
||||
* @return a collection of all connected nodes
|
||||
* @return a collection of all connected entries
|
||||
*/
|
||||
Collection<INetworkNode> all();
|
||||
Collection<INetworkNodeGraphEntry> all();
|
||||
|
||||
/**
|
||||
* @param listener the listener
|
||||
|
@@ -0,0 +1,11 @@
|
||||
package com.refinedmods.refinedstorage.api.network;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
|
||||
/**
|
||||
* An entry in the network graph.
|
||||
* Implementors MUST implement equals and hashCode.
|
||||
*/
|
||||
public interface INetworkNodeGraphEntry {
|
||||
INetworkNode getNode();
|
||||
}
|
@@ -12,7 +12,6 @@ import com.refinedmods.refinedstorage.api.autocrafting.task.ICraftingTaskRegistr
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkManager;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.ICraftingGridBehavior;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.IGridManager;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeRegistry;
|
||||
import com.refinedmods.refinedstorage.api.storage.StorageType;
|
||||
@@ -312,31 +311,4 @@ public class API implements IRSAPI {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNetworkNodeHashCode(INetworkNode node) {
|
||||
int result = node.getPos().hashCode();
|
||||
result = 31 * result + node.getWorld().func_234923_W_().hashCode();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNetworkNodeEqual(INetworkNode left, Object right) {
|
||||
if (!(right instanceof INetworkNode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (left == right) {
|
||||
return true;
|
||||
}
|
||||
|
||||
INetworkNode rightNode = (INetworkNode) right;
|
||||
|
||||
if (left.getWorld().func_234923_W_() != rightNode.getWorld().func_234923_W_()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return left.getPos().equals(rightNode.getPos());
|
||||
}
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPatternContainer
|
||||
import com.refinedmods.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorListener;
|
||||
import com.refinedmods.refinedstorage.api.autocrafting.task.*;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.util.IComparer;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.autocrafting.task.v6.calculator.CalculationResult;
|
||||
@@ -393,9 +393,9 @@ public class CraftingManager implements ICraftingManager {
|
||||
private List<ICraftingPatternContainer> getContainers() {
|
||||
List<ICraftingPatternContainer> containers = new ArrayList<>();
|
||||
|
||||
for (INetworkNode node : network.getNodeGraph().all()) {
|
||||
if (node instanceof ICraftingPatternContainer && node.isActive()) {
|
||||
containers.add((ICraftingPatternContainer) node);
|
||||
for (INetworkNodeGraphEntry entry : network.getNodeGraph().all()) {
|
||||
if (entry.getNode() instanceof ICraftingPatternContainer && entry.getNode().isActive()) {
|
||||
containers.add((ICraftingPatternContainer) entry.getNode());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -50,41 +50,41 @@ public class InvalidCraftingPattern implements ICraftingPattern {
|
||||
|
||||
@Override
|
||||
public List<NonNullList<ItemStack>> getInputs() {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NonNullList<ItemStack> getOutputs() {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getOutput(NonNullList<ItemStack> took) {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NonNullList<ItemStack> getByproducts() {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NonNullList<ItemStack> getByproducts(NonNullList<ItemStack> took) {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NonNullList<FluidStack>> getFluidInputs() {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NonNullList<FluidStack> getFluidOutputs() {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getCraftingTaskFactoryId() {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
throw new UnsupportedOperationException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
@@ -5,11 +5,11 @@ import com.refinedmods.refinedstorage.api.autocrafting.ICraftingManager;
|
||||
import com.refinedmods.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraph;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.network.NetworkType;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.handler.IFluidGridHandler;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.handler.IItemGridHandler;
|
||||
import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.security.ISecurityManager;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.api.storage.IStorage;
|
||||
@@ -564,9 +564,9 @@ public class Network implements INetwork, IRedstoneConfigurable {
|
||||
|
||||
int usage = RS.SERVER_CONFIG.getController().getBaseUsage();
|
||||
|
||||
for (INetworkNode node : nodeGraph.all()) {
|
||||
if (node.isActive()) {
|
||||
usage += node.getEnergyUsage();
|
||||
for (INetworkNodeGraphEntry entry : nodeGraph.all()) {
|
||||
if (entry.getNode().isActive()) {
|
||||
usage += entry.getNode().getEnergyUsage();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,10 +1,7 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.network;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraph;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphListener;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeVisitor;
|
||||
import com.refinedmods.refinedstorage.api.network.*;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.util.Action;
|
||||
import com.refinedmods.refinedstorage.util.NetworkUtils;
|
||||
@@ -20,7 +17,7 @@ import java.util.function.Consumer;
|
||||
|
||||
public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
private final INetwork network;
|
||||
private Set<INetworkNode> nodes = Sets.newConcurrentHashSet();
|
||||
private Set<INetworkNodeGraphEntry> entries = Sets.newConcurrentHashSet();
|
||||
private final List<INetworkNodeGraphListener> listeners = new LinkedList<>();
|
||||
|
||||
private final Set<Consumer<INetwork>> actions = new HashSet<>();
|
||||
@@ -47,21 +44,21 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
currentVisitor.visit(operator);
|
||||
}
|
||||
|
||||
this.nodes = operator.foundNodes;
|
||||
this.entries = operator.foundNodes;
|
||||
|
||||
if (action == Action.PERFORM) {
|
||||
for (INetworkNode node : operator.newNodes) {
|
||||
node.onConnected(network);
|
||||
for (INetworkNodeGraphEntry entry : operator.newEntries) {
|
||||
entry.getNode().onConnected(network);
|
||||
}
|
||||
|
||||
for (INetworkNode node : operator.previousNodes) {
|
||||
node.onDisconnected(network);
|
||||
for (INetworkNodeGraphEntry entry : operator.previousEntries) {
|
||||
entry.getNode().onDisconnected(network);
|
||||
}
|
||||
|
||||
actions.forEach(h -> h.accept(network));
|
||||
actions.clear();
|
||||
|
||||
if (!operator.newNodes.isEmpty() || !operator.previousNodes.isEmpty()) {
|
||||
if (!operator.newEntries.isEmpty() || !operator.previousEntries.isEmpty()) {
|
||||
listeners.forEach(INetworkNodeGraphListener::onChanged);
|
||||
}
|
||||
}
|
||||
@@ -79,8 +76,8 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<INetworkNode> all() {
|
||||
return nodes;
|
||||
public Collection<INetworkNodeGraphEntry> all() {
|
||||
return entries;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -90,8 +87,8 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
|
||||
@Override
|
||||
public void disconnectAll() {
|
||||
nodes.forEach(n -> n.onDisconnected(network));
|
||||
nodes.clear();
|
||||
entries.forEach(entry -> entry.getNode().onDisconnected(network));
|
||||
entries.clear();
|
||||
|
||||
listeners.forEach(INetworkNodeGraphListener::onChanged);
|
||||
}
|
||||
@@ -101,10 +98,10 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
}
|
||||
|
||||
private class Operator implements INetworkNodeVisitor.Operator {
|
||||
private final Set<INetworkNode> foundNodes = Sets.newConcurrentHashSet(); // All scanned nodes
|
||||
private final Set<INetworkNodeGraphEntry> foundNodes = Sets.newConcurrentHashSet(); // All scanned entries
|
||||
|
||||
private final Set<INetworkNode> newNodes = Sets.newConcurrentHashSet(); // All scanned new nodes, that didn't appear in the list before
|
||||
private final Set<INetworkNode> previousNodes = Sets.newConcurrentHashSet(nodes); // All unscanned nodes (nodes that were in the previous list, but not in the new list)
|
||||
private final Set<INetworkNodeGraphEntry> newEntries = Sets.newConcurrentHashSet(); // All scanned new entries, that didn't appear in the list before
|
||||
private final Set<INetworkNodeGraphEntry> previousEntries = Sets.newConcurrentHashSet(entries); // All unscanned entries (entries that were in the previous list, but not in the new list)
|
||||
|
||||
private final Queue<Visitor> toCheck = new ArrayDeque<>();
|
||||
|
||||
@@ -119,8 +116,9 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
TileEntity tile = world.getTileEntity(pos);
|
||||
|
||||
INetworkNode otherNode = NetworkUtils.getNodeFromTile(tile);
|
||||
|
||||
if (otherNode != null) {
|
||||
NetworkNodeGraphEntry otherNodeItem = new NetworkNodeGraphEntry(otherNode);
|
||||
|
||||
if (otherNode.getNetwork() != null && !otherNode.getNetwork().equals(network)) {
|
||||
if (action == Action.PERFORM) {
|
||||
dropConflictingBlock(world, pos);
|
||||
@@ -129,15 +127,15 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||
return;
|
||||
}
|
||||
|
||||
if (foundNodes.add(otherNode)) {
|
||||
if (!nodes.contains(otherNode)) {
|
||||
if (foundNodes.add(otherNodeItem)) {
|
||||
if (!entries.contains(otherNodeItem)) {
|
||||
// We can't let the node connect immediately
|
||||
// We can only let the node connect AFTER the nodes list has changed in the graph
|
||||
// This is so that storage nodes can refresh the item/fluid cache, and the item/fluid cache will notice it then (otherwise not)
|
||||
newNodes.add(otherNode);
|
||||
newEntries.add(otherNodeItem);
|
||||
}
|
||||
|
||||
previousNodes.remove(otherNode);
|
||||
previousEntries.remove(otherNodeItem);
|
||||
|
||||
toCheck.add(new Visitor(otherNode, world, pos, side, tile));
|
||||
}
|
||||
|
@@ -0,0 +1,42 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.network;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
|
||||
public class NetworkNodeGraphEntry implements INetworkNodeGraphEntry {
|
||||
private final INetworkNode node;
|
||||
|
||||
public NetworkNodeGraphEntry(INetworkNode node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public INetworkNode getNode() {
|
||||
return node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (!(other instanceof NetworkNodeGraphEntry)) {
|
||||
return false;
|
||||
}
|
||||
if (this == other) {
|
||||
return true;
|
||||
}
|
||||
|
||||
NetworkNodeGraphEntry otherItem = (NetworkNodeGraphEntry) other;
|
||||
|
||||
if (node.getWorld().func_234923_W_() != otherItem.node.getWorld().func_234923_W_()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return node.getPos().equals(otherItem.node.getPos());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = node.getPos().hashCode();
|
||||
result = 31 * result + node.getWorld().func_234923_W_().hashCode();
|
||||
return result;
|
||||
}
|
||||
}
|
@@ -1,6 +1,7 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.network.item;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.network.IWirelessTransmitter;
|
||||
import com.refinedmods.refinedstorage.api.network.item.INetworkItem;
|
||||
import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager;
|
||||
@@ -26,7 +27,9 @@ public class NetworkItemManager implements INetworkItemManager {
|
||||
public void open(PlayerEntity player, ItemStack stack, int slotId) {
|
||||
boolean inRange = false;
|
||||
|
||||
for (INetworkNode node : network.getNodeGraph().all()) {
|
||||
for (INetworkNodeGraphEntry entry : network.getNodeGraph().all()) {
|
||||
INetworkNode node = entry.getNode();
|
||||
|
||||
if (node instanceof IWirelessTransmitter &&
|
||||
network.canRun() &&
|
||||
node.isActive() &&
|
||||
|
@@ -279,14 +279,4 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
public UUID getOwner() {
|
||||
return owner;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
return API.instance().isNetworkNodeEqual(this, o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return API.instance().getNetworkNodeHashCode(this);
|
||||
}
|
||||
}
|
||||
|
@@ -3,7 +3,6 @@ package com.refinedmods.refinedstorage.apiimpl.network.node;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeVisitor;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -109,14 +108,4 @@ public class RootNetworkNode implements INetworkNode, INetworkNodeVisitor {
|
||||
operator.apply(world, pos.offset(facing), facing.getOpposite());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
return API.instance().isNetworkNodeEqual(this, o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return API.instance().getNetworkNodeHashCode(this);
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.network.security;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.network.security.ISecurityCard;
|
||||
import com.refinedmods.refinedstorage.api.network.security.ISecurityCardContainer;
|
||||
import com.refinedmods.refinedstorage.api.network.security.ISecurityManager;
|
||||
@@ -48,9 +48,9 @@ public class SecurityManager implements ISecurityManager {
|
||||
this.cards.clear();
|
||||
this.globalCard = null;
|
||||
|
||||
for (INetworkNode node : network.getNodeGraph().all()) {
|
||||
if (node instanceof ISecurityCardContainer && node.isActive()) {
|
||||
ISecurityCardContainer container = (ISecurityCardContainer) node;
|
||||
for (INetworkNodeGraphEntry entry : network.getNodeGraph().all()) {
|
||||
if (entry.getNode() instanceof ISecurityCardContainer && entry.getNode().isActive()) {
|
||||
ISecurityCardContainer container = (ISecurityCardContainer) entry.getNode();
|
||||
|
||||
for (ISecurityCard card : container.getCards()) {
|
||||
if (card.getOwner() == null) {
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.storage.cache;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.api.storage.IStorage;
|
||||
import com.refinedmods.refinedstorage.api.storage.IStorageProvider;
|
||||
@@ -44,7 +45,10 @@ public class FluidStorageCache implements IStorageCache<FluidStack> {
|
||||
|
||||
storages.clear();
|
||||
|
||||
network.getNodeGraph().all().stream()
|
||||
network.getNodeGraph()
|
||||
.all()
|
||||
.stream()
|
||||
.map(INetworkNodeGraphEntry::getNode)
|
||||
.filter(node -> node.isActive() && node instanceof IStorageProvider)
|
||||
.forEach(node -> ((IStorageProvider) node).addFluidStorages(storages));
|
||||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package com.refinedmods.refinedstorage.apiimpl.storage.cache;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.api.storage.IStorage;
|
||||
import com.refinedmods.refinedstorage.api.storage.IStorageProvider;
|
||||
@@ -44,7 +45,10 @@ public class ItemStorageCache implements IStorageCache<ItemStack> {
|
||||
|
||||
storages.clear();
|
||||
|
||||
network.getNodeGraph().all().stream()
|
||||
network.getNodeGraph()
|
||||
.all()
|
||||
.stream()
|
||||
.map(INetworkNodeGraphEntry::getNode)
|
||||
.filter(node -> node.isActive() && node instanceof IStorageProvider)
|
||||
.forEach(node -> ((IStorageProvider) node).addItemStorages(storages));
|
||||
|
||||
|
@@ -3,8 +3,8 @@ package com.refinedmods.refinedstorage.tile;
|
||||
import com.refinedmods.refinedstorage.RSTiles;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkManager;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkNodeGraphEntry;
|
||||
import com.refinedmods.refinedstorage.api.network.NetworkType;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.Network;
|
||||
@@ -165,15 +165,15 @@ public class ControllerTile extends BaseTile implements INetworkNodeProxy<RootNe
|
||||
private static List<ClientNode> collectClientNodes(ControllerTile tile) {
|
||||
List<ClientNode> nodes = new ArrayList<>();
|
||||
|
||||
for (INetworkNode node : tile.getNetwork().getNodeGraph().all()) {
|
||||
if (node.isActive()) {
|
||||
ItemStack stack = node.getItemStack();
|
||||
for (INetworkNodeGraphEntry entry : tile.getNetwork().getNodeGraph().all()) {
|
||||
if (entry.getNode().isActive()) {
|
||||
ItemStack stack = entry.getNode().getItemStack();
|
||||
|
||||
if (stack.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ClientNode clientNode = new ClientNode(stack, 1, node.getEnergyUsage());
|
||||
ClientNode clientNode = new ClientNode(stack, 1, entry.getNode().getEnergyUsage());
|
||||
|
||||
if (nodes.contains(clientNode)) {
|
||||
ClientNode other = nodes.get(nodes.indexOf(clientNode));
|
||||
|
@@ -19,6 +19,9 @@ import javax.annotation.Nullable;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class NetworkUtils {
|
||||
private NetworkUtils() {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static INetworkNode getNodeFromTile(@Nullable TileEntity tile) {
|
||||
if (tile != null) {
|
||||
|
Reference in New Issue
Block a user