Fix bugs
This commit is contained in:
@@ -35,14 +35,10 @@ public interface INetworkNode {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when this node is disconnected from a network.
|
* Called when this node is disconnected from a network.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
void onDisconnected();
|
void onDisconnected();
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Whether the block is removed from the world
|
|
||||||
*/
|
|
||||||
boolean isRemoved();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the connection state of this node changes.
|
* Called when the connection state of this node changes.
|
||||||
* This is also called when redstone mode is updated, as opposed to {@link INetworkNode#onConnected(INetworkMaster)} and {@link INetworkNode#onDisconnected()}.
|
* This is also called when redstone mode is updated, as opposed to {@link INetworkNode#onConnected(INetworkMaster)} and {@link INetworkNode#onDisconnected()}.
|
||||||
|
|||||||
@@ -30,4 +30,11 @@ public class BlockDiskDrive extends BlockNode {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void breakBlock(World world, BlockPos pos, IBlockState state) {
|
||||||
|
((TileDiskDrive) world.getTileEntity(pos)).onBreak();
|
||||||
|
|
||||||
|
super.breakBlock(world, pos, state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import net.minecraft.util.EnumFacing;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
import refinedstorage.tile.TileNode;
|
import refinedstorage.tile.TileNode;
|
||||||
|
|
||||||
public abstract class BlockNode extends BlockBase {
|
public abstract class BlockNode extends BlockBase {
|
||||||
@@ -58,14 +59,20 @@ public abstract class BlockNode extends BlockBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void breakBlock(World world, BlockPos pos, IBlockState state) {
|
public void breakBlock(World world, BlockPos pos, IBlockState state) {
|
||||||
|
INetworkMaster network = null;
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
TileEntity tile = world.getTileEntity(pos);
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
|
|
||||||
if (tile instanceof TileNode && ((TileNode) tile).isConnected()) {
|
if (tile instanceof TileNode) {
|
||||||
(((TileNode) tile).getNetwork()).rebuildNodes();
|
network = ((TileNode) tile).getNetwork();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
super.breakBlock(world, pos, state);
|
super.breakBlock(world, pos, state);
|
||||||
|
|
||||||
|
if (network != null) {
|
||||||
|
network.rebuildNodes();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,6 +81,13 @@ public class BlockStorage extends BlockNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void breakBlock(World world, BlockPos pos, IBlockState state) {
|
||||||
|
((TileStorage) world.getTileEntity(pos)).onBreak();
|
||||||
|
|
||||||
|
super.breakBlock(world, pos, state);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
|
public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
|
||||||
TileStorage storage = (TileStorage) world.getTileEntity(pos);
|
TileStorage storage = (TileStorage) world.getTileEntity(pos);
|
||||||
|
|||||||
@@ -102,10 +102,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
|
|||||||
public void updateNode() {
|
public void updateNode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void onBreak() {
|
||||||
public void onDisconnected() {
|
|
||||||
super.onDisconnected();
|
|
||||||
|
|
||||||
for (Storage storage : this.storages) {
|
for (Storage storage : this.storages) {
|
||||||
if (storage != null) {
|
if (storage != null) {
|
||||||
storage.writeToNBT();
|
storage.writeToNBT();
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.api.network.INetworkMaster;
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
import refinedstorage.api.network.INetworkNode;
|
import refinedstorage.api.network.INetworkNode;
|
||||||
import refinedstorage.block.BlockNode;
|
|
||||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||||
import refinedstorage.tile.config.RedstoneMode;
|
import refinedstorage.tile.config.RedstoneMode;
|
||||||
|
|
||||||
@@ -59,10 +58,10 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnected(INetworkMaster network) {
|
public void onConnected(INetworkMaster network) {
|
||||||
onConnectionChange(network, true);
|
|
||||||
|
|
||||||
this.connected = true;
|
this.connected = true;
|
||||||
this.network = network;
|
this.network = network;
|
||||||
|
|
||||||
|
onConnectionChange(network, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -73,11 +72,6 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
|
|||||||
this.network = null;
|
this.network = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isRemoved() {
|
|
||||||
return !(worldObj.getBlockState(pos).getBlock() instanceof BlockNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnectionChange(INetworkMaster network, boolean state) {
|
public void onConnectionChange(INetworkMaster network, boolean state) {
|
||||||
// NO OP
|
// NO OP
|
||||||
@@ -160,14 +154,4 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
|
|||||||
|
|
||||||
connected = tag.getBoolean(NBT_CONNECTED);
|
connected = tag.getBoolean(NBT_CONNECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return pos.hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object other) {
|
|
||||||
return other instanceof TileNode && ((TileNode) other).getPosition().equals(getPosition());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,10 +84,7 @@ public class TileStorage extends TileNode implements IStorageProvider, IStorageG
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void onBreak() {
|
||||||
public void onDisconnected() {
|
|
||||||
super.onDisconnected();
|
|
||||||
|
|
||||||
if (storage != null) {
|
if (storage != null) {
|
||||||
storage.writeToNBT();
|
storage.writeToNBT();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -219,7 +219,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
|
|
||||||
public void disconnectAll() {
|
public void disconnectAll() {
|
||||||
for (INetworkNode node : nodes) {
|
for (INetworkNode node : nodes) {
|
||||||
node.onDisconnected();
|
if (node.isConnected()) {
|
||||||
|
node.onDisconnected();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nodes.clear();
|
nodes.clear();
|
||||||
@@ -408,10 +410,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
|
|
||||||
INetworkNode node = (INetworkNode) tile;
|
INetworkNode node = (INetworkNode) tile;
|
||||||
|
|
||||||
if (node.isRemoved()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
newNodes.add(node);
|
newNodes.add(node);
|
||||||
newNodesPos.add(node.getPosition());
|
newNodesPos.add(node.getPosition());
|
||||||
|
|
||||||
|
|||||||
@@ -191,6 +191,10 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I
|
|||||||
storages.add(new ItemHandlerStorage(this, handler));
|
storages.add(new ItemHandlerStorage(this, handler));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (network != null) {
|
||||||
|
network.getStorage().rebuild();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user