Rename INetworkNeighborhoodAware to INetworkNodeVisitor
This commit is contained in:
@@ -7,8 +7,8 @@ import net.minecraft.world.World;
|
|||||||
/**
|
/**
|
||||||
* Allows the network nodes to implement more optimal or non-regular discovery of neighbor nodes.
|
* Allows the network nodes to implement more optimal or non-regular discovery of neighbor nodes.
|
||||||
*/
|
*/
|
||||||
public interface INetworkNeighborhoodAware {
|
public interface INetworkNodeVisitor {
|
||||||
void walkNeighborhood(Operator operator);
|
void visit(Operator operator);
|
||||||
|
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
interface Operator {
|
interface Operator {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network;
|
package com.raoulvdberge.refinedstorage.apiimpl.network;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNeighborhoodAware;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
|
||||||
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.item.ItemBlockController;
|
import com.raoulvdberge.refinedstorage.item.ItemBlockController;
|
||||||
@@ -21,7 +21,6 @@ import static com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNodeProxy.N
|
|||||||
|
|
||||||
public class NetworkNodeGraph implements INetworkNodeGraph {
|
public class NetworkNodeGraph implements INetworkNodeGraph {
|
||||||
private TileController controller;
|
private TileController controller;
|
||||||
|
|
||||||
private Set<INetworkNode> nodes = new HashSet<>();
|
private Set<INetworkNode> nodes = new HashSet<>();
|
||||||
|
|
||||||
public NetworkNodeGraph(TileController controller) {
|
public NetworkNodeGraph(TileController controller) {
|
||||||
@@ -48,9 +47,9 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
|||||||
operator.apply(controllerWorld, pos, facing.getOpposite());
|
operator.apply(controllerWorld, pos, facing.getOpposite());
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeToCheck currentNodeToCheck;
|
Visitor currentVisitor;
|
||||||
while ((currentNodeToCheck = operator.toCheck.poll()) != null) {
|
while ((currentVisitor = operator.toCheck.poll()) != null) {
|
||||||
currentNodeToCheck.walkNeighborhood(operator);
|
currentVisitor.visit(operator);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.nodes = operator.newNodes;
|
this.nodes = operator.newNodes;
|
||||||
@@ -101,13 +100,13 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Operator implements INetworkNeighborhoodAware.Operator {
|
private class Operator implements INetworkNodeVisitor.Operator {
|
||||||
private Set<INetworkNode> newNodes = new HashSet<>();
|
private Set<INetworkNode> newNodes = new HashSet<>();
|
||||||
private Set<INetworkNode> previousNodes = new HashSet<>(nodes);
|
private Set<INetworkNode> previousNodes = new HashSet<>(nodes);
|
||||||
|
|
||||||
private boolean changed;
|
private boolean changed;
|
||||||
|
|
||||||
private Queue<NodeToCheck> toCheck = new ArrayDeque<>();
|
private Queue<Visitor> toCheck = new ArrayDeque<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(World world, BlockPos pos, EnumFacing side) {
|
public void apply(World world, BlockPos pos, EnumFacing side) {
|
||||||
@@ -129,21 +128,21 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
|||||||
|
|
||||||
previousNodes.remove(otherNode);
|
previousNodes.remove(otherNode);
|
||||||
|
|
||||||
toCheck.add(new NodeToCheck(otherNode, world, pos, side, tile));
|
toCheck.add(new Visitor(otherNode, world, pos, side, tile));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class NodeToCheck implements INetworkNeighborhoodAware {
|
private class Visitor implements INetworkNodeVisitor {
|
||||||
private final INetworkNode node;
|
private final INetworkNode node;
|
||||||
private final World world;
|
private final World world;
|
||||||
private final BlockPos pos;
|
private final BlockPos pos;
|
||||||
private final EnumFacing side;
|
private final EnumFacing side;
|
||||||
private final TileEntity tile;
|
private final TileEntity tile;
|
||||||
|
|
||||||
NodeToCheck(INetworkNode node, World world, BlockPos pos, EnumFacing side, TileEntity tile) {
|
Visitor(INetworkNode node, World world, BlockPos pos, EnumFacing side, TileEntity tile) {
|
||||||
this.node = node;
|
this.node = node;
|
||||||
this.world = world;
|
this.world = world;
|
||||||
this.pos = pos;
|
this.pos = pos;
|
||||||
@@ -152,9 +151,9 @@ public class NetworkNodeGraph implements INetworkNodeGraph {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void walkNeighborhood(Operator operator) {
|
public void visit(Operator operator) {
|
||||||
if (node instanceof INetworkNeighborhoodAware) {
|
if (node instanceof INetworkNodeVisitor) {
|
||||||
((INetworkNeighborhoodAware) node).walkNeighborhood(operator);
|
((INetworkNodeVisitor) node).visit(operator);
|
||||||
} else {
|
} else {
|
||||||
for (EnumFacing checkSide : EnumFacing.VALUES) {
|
for (EnumFacing checkSide : EnumFacing.VALUES) {
|
||||||
if (checkSide != side) { // Avoid going backward
|
if (checkSide != side) { // Avoid going backward
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RSUtils;
|
import com.raoulvdberge.refinedstorage.RSUtils;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNeighborhoodAware;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IWrenchable;
|
import com.raoulvdberge.refinedstorage.api.util.IWrenchable;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
@@ -21,7 +21,7 @@ import net.minecraftforge.items.IItemHandler;
|
|||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodAware, IWrenchable {
|
public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor, IWrenchable {
|
||||||
@Nullable
|
@Nullable
|
||||||
protected INetwork network;
|
protected INetwork network;
|
||||||
protected World world;
|
protected World world;
|
||||||
@@ -154,7 +154,7 @@ public abstract class NetworkNode implements INetworkNode, INetworkNeighborhoodA
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void walkNeighborhood(Operator operator) {
|
public void visit(Operator operator) {
|
||||||
for (EnumFacing facing : EnumFacing.VALUES) {
|
for (EnumFacing facing : EnumFacing.VALUES) {
|
||||||
if (canConduct(facing)) {
|
if (canConduct(facing)) {
|
||||||
operator.apply(world, pos.offset(facing), facing.getOpposite());
|
operator.apply(world, pos.offset(facing), facing.getOpposite());
|
||||||
|
|||||||
@@ -144,8 +144,8 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void walkNeighborhood(Operator operator) {
|
public void visit(Operator operator) {
|
||||||
super.walkNeighborhood(operator);
|
super.visit(operator);
|
||||||
|
|
||||||
if (canTransmit()) {
|
if (canTransmit()) {
|
||||||
if (!isSameDimension()) {
|
if (!isSameDimension()) {
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWire
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void walkNeighborhood(Operator operator) {
|
public void visit(Operator operator) {
|
||||||
operator.apply(world, pos.offset(EnumFacing.DOWN), EnumFacing.UP);
|
operator.apply(world, pos.offset(EnumFacing.DOWN), EnumFacing.UP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user