WIP
This commit is contained in:
@@ -110,7 +110,7 @@ public class NetworkMaster {
|
||||
return energyUsage;
|
||||
}
|
||||
|
||||
public BlockPos getPos() {
|
||||
public BlockPos getPosition() {
|
||||
return pos;
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ public class NetworkMaster {
|
||||
markDirty();
|
||||
}
|
||||
|
||||
public void removeMachine(INetworkSlave slave) {
|
||||
public void removeSlave(INetworkSlave slave) {
|
||||
slavesToRemove.add(slave);
|
||||
|
||||
markDirty();
|
||||
|
@@ -13,7 +13,7 @@ public class NetworkMasterRegistry {
|
||||
NETWORKS.put(dimension, new HashMap<BlockPos, NetworkMaster>());
|
||||
}
|
||||
|
||||
NETWORKS.get(dimension).put(network.getPos(), network);
|
||||
NETWORKS.get(dimension).put(network.getPosition(), network);
|
||||
}
|
||||
|
||||
public static void remove(BlockPos pos, int dimension) {
|
||||
|
@@ -45,9 +45,9 @@ public class NetworkMasterSavedData extends WorldSavedData {
|
||||
for (NetworkMaster network : entry.getValue().values()) {
|
||||
NBTTagCompound networkTag = new NBTTagCompound();
|
||||
|
||||
networkTag.setInteger(NBT_NETWORK_X, network.getPos().getX());
|
||||
networkTag.setInteger(NBT_NETWORK_Y, network.getPos().getY());
|
||||
networkTag.setInteger(NBT_NETWORK_Z, network.getPos().getZ());
|
||||
networkTag.setInteger(NBT_NETWORK_X, network.getPosition().getX());
|
||||
networkTag.setInteger(NBT_NETWORK_Y, network.getPosition().getY());
|
||||
networkTag.setInteger(NBT_NETWORK_Z, network.getPosition().getZ());
|
||||
networkTag.setInteger(NBT_NETWORK_DIM, entry.getKey());
|
||||
|
||||
networkTag.setTag(NBT_NETWORK_DATA, network.writeToNBT(new NBTTagCompound()));
|
||||
|
@@ -2,6 +2,8 @@ package refinedstorage.tile;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
@@ -10,7 +12,6 @@ import refinedstorage.api.network.NetworkMaster;
|
||||
import refinedstorage.api.network.NetworkMasterRegistry;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
import refinedstorage.tile.controller.ControllerSearcher;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -67,7 +68,7 @@ public abstract class TileSlave extends TileBase implements ISynchronizedContain
|
||||
this.connected = false;
|
||||
|
||||
if (this.network != null) {
|
||||
this.network.removeMachine(this);
|
||||
this.network.removeSlave(this);
|
||||
this.network = null;
|
||||
}
|
||||
|
||||
@@ -78,7 +79,7 @@ public abstract class TileSlave extends TileBase implements ISynchronizedContain
|
||||
public void onNeighborChanged(World world) {
|
||||
visited.clear();
|
||||
|
||||
TileController controller = ControllerSearcher.search(world, pos, visited);
|
||||
TileController controller = searchController(world, pos, visited);
|
||||
|
||||
if (network == null) {
|
||||
if (controller != null) {
|
||||
@@ -91,6 +92,34 @@ public abstract class TileSlave extends TileBase implements ISynchronizedContain
|
||||
}
|
||||
}
|
||||
|
||||
private TileController searchController(World world, BlockPos current, Set<String> visited) {
|
||||
if (visited.contains(current.getX() + "," + current.getY() + "," + current.getZ())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
visited.add(current.getX() + "," + current.getY() + "," + current.getZ());
|
||||
|
||||
TileEntity tile = world.getTileEntity(current);
|
||||
|
||||
if (tile instanceof TileController) {
|
||||
return (TileController) tile;
|
||||
} else if (tile instanceof TileSlave) {
|
||||
if (visited.size() > 1 && tile instanceof TileRelay && !((TileRelay) tile).canUpdate()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (EnumFacing dir : EnumFacing.VALUES) {
|
||||
TileController controller = searchController(world, current.offset(dir), visited);
|
||||
|
||||
if (controller != null) {
|
||||
return controller;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public NetworkMaster getNetwork() {
|
||||
return network;
|
||||
}
|
||||
|
@@ -1,40 +0,0 @@
|
||||
package refinedstorage.tile.controller;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.tile.TileRelay;
|
||||
import refinedstorage.tile.TileSlave;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public final class ControllerSearcher {
|
||||
public static TileController search(World world, BlockPos current, Set<String> visited) {
|
||||
if (visited.contains(current.getX() + "," + current.getY() + "," + current.getZ())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
visited.add(current.getX() + "," + current.getY() + "," + current.getZ());
|
||||
|
||||
TileEntity tile = world.getTileEntity(current);
|
||||
|
||||
if (tile instanceof TileController) {
|
||||
return (TileController) tile;
|
||||
} else if (tile instanceof TileSlave) {
|
||||
if (visited.size() > 1 && tile instanceof TileRelay && !((TileRelay) tile).canUpdate()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (EnumFacing dir : EnumFacing.VALUES) {
|
||||
TileController controller = search(world, current.offset(dir), visited);
|
||||
|
||||
if (controller != null) {
|
||||
return controller;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -42,7 +42,7 @@ public class WirelessGridHandler {
|
||||
}
|
||||
|
||||
public boolean handleOpen(EntityPlayer player, EnumHand hand) {
|
||||
int distance = (int) Math.sqrt(Math.pow(network.getPos().getX() - player.posX, 2) + Math.pow(network.getPos().getY() - player.posY, 2) + Math.pow(network.getPos().getZ() - player.posZ, 2));
|
||||
int distance = (int) Math.sqrt(Math.pow(network.getPosition().getX() - player.posX, 2) + Math.pow(network.getPosition().getY() - player.posY, 2) + Math.pow(network.getPosition().getZ() - player.posZ, 2));
|
||||
|
||||
if (distance > network.getWirelessGridRange()) {
|
||||
return false;
|
||||
|
@@ -109,7 +109,7 @@ public class TileGrid extends TileSlave implements IGrid {
|
||||
|
||||
@Override
|
||||
public BlockPos getControllerPos() {
|
||||
return network != null ? network.getPos() : null;
|
||||
return network != null ? network.getPosition() : null;
|
||||
}
|
||||
|
||||
public void onGridOpened(EntityPlayer player) {
|
||||
|
Reference in New Issue
Block a user