This commit is contained in:
Raoul Van den Berge
2016-06-20 22:12:27 +02:00
parent 6464166ac5
commit 16fd43c955
7 changed files with 40 additions and 51 deletions

View File

@@ -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();

View File

@@ -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) {

View File

@@ -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()));

View File

@@ -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;
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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) {