diff --git a/src/main/java/resonantinduction/mechanical/gear/PartGear.java b/src/main/java/resonantinduction/mechanical/gear/PartGear.java index 48320c2d..d9dc938f 100644 --- a/src/main/java/resonantinduction/mechanical/gear/PartGear.java +++ b/src/main/java/resonantinduction/mechanical/gear/PartGear.java @@ -30,7 +30,7 @@ public class PartGear extends PartMechanical implements IMechanical { if (manualCrankTime > 0) { - getNetwork().onReceiveEnergy(this, 20, 0.2f); + getNetwork().onReceiveEnergy(this, 20, 0.4f); manualCrankTime--; } } @@ -62,7 +62,7 @@ public class PartGear extends PartMechanical implements IMechanical else { - this.manualCrankTime = 20; + this.manualCrankTime = 10; } } diff --git a/src/main/java/resonantinduction/mechanical/network/IMechanicalNetwork.java b/src/main/java/resonantinduction/mechanical/network/IMechanicalNetwork.java index 10468ced..3dc1b45d 100644 --- a/src/main/java/resonantinduction/mechanical/network/IMechanicalNetwork.java +++ b/src/main/java/resonantinduction/mechanical/network/IMechanicalNetwork.java @@ -38,4 +38,9 @@ public interface IMechanicalNetwork extends INetwork private Set prevGenerators = new LinkedHashSet(); private Set generators = new LinkedHashSet(); + private boolean disabled; @Override public void addConnector(IMechanical connector) @@ -117,7 +118,7 @@ public class MechanicalNetwork extends Network @Override public boolean canUpdate() { - return true; + return !disabled; } @Override @@ -133,9 +134,10 @@ public class MechanicalNetwork extends Network { for (IMechanical connector : this.getConnectors()) { - if (connector instanceof TileEntity) + int[] location = connector.getLocation(); + + if (location != null) { - int[] location = connector.getLocation(); PacketDispatcher.sendPacketToAllPlayers(Mechanical.PACKET_NETWORK.getPacket(location[0], location[1], location[2], location[3], (byte) 0, torque, angularVelocity)); break; } @@ -145,7 +147,9 @@ public class MechanicalNetwork extends Network public void sendRotationUpdatePacket(IMechanical connector) { int[] location = connector.getLocation(); - PacketDispatcher.sendPacketToAllPlayers(Mechanical.PACKET_NETWORK.getPacket(location[0], location[1], location[2], location[3], (byte) 1, connector.isClockwise())); + + if (location != null) + PacketDispatcher.sendPacketToAllPlayers(Mechanical.PACKET_NETWORK.getPacket(location[0], location[1], location[2], location[3], (byte) 1, connector.isClockwise())); } @Override @@ -163,7 +167,6 @@ public class MechanicalNetwork extends Network updateNode.setClockwise(data.readBoolean()); PathfinderUpdateRotation rotationPathfinder = new PathfinderUpdateRotation(updateNode, this, null); rotationPathfinder.findNodes(updateNode); - System.out.println("UPDATE"); break; } } @@ -229,6 +232,7 @@ public class MechanicalNetwork extends Network @Override public void reconstruct() { + disabled = false; // Reset prevTorque = torque = 0; prevAngularVelocity = angularVelocity = 0; @@ -277,6 +281,13 @@ public class MechanicalNetwork extends Network return rotation; } + @Override + public void setDisabled() + { + System.out.println("NETWORK DISABLED"); + disabled = true; + } + @Override public IMechanicalNetwork newInstance() { @@ -294,4 +305,5 @@ public class MechanicalNetwork extends Network { return this.getClass().getSimpleName() + "[" + this.hashCode() + ", Handlers: " + getConnectors().size() + ", Connectors: " + getConnectors().size() + ", Power:" + getPower() + "]"; } + } diff --git a/src/main/java/resonantinduction/mechanical/network/PartMechanical.java b/src/main/java/resonantinduction/mechanical/network/PartMechanical.java index 60a7dd24..840b5af8 100644 --- a/src/main/java/resonantinduction/mechanical/network/PartMechanical.java +++ b/src/main/java/resonantinduction/mechanical/network/PartMechanical.java @@ -49,7 +49,7 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu protected Object[] connections = new Object[6]; /** Side of the block this is placed on */ - public ForgeDirection placementSide; + public ForgeDirection placementSide = ForgeDirection.UNKNOWN; /** The size of the gear */ private float radius = 0.5f; @@ -318,6 +318,8 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu @Override public int[] getLocation() { - return new int[] { x(), y(), z(), placementSide.ordinal() }; + if (tile() != null) + return new int[] { x(), y(), z(), placementSide.ordinal() }; + return null; } } \ No newline at end of file diff --git a/src/main/java/resonantinduction/mechanical/network/PathfinderUpdateRotation.java b/src/main/java/resonantinduction/mechanical/network/PathfinderUpdateRotation.java index 4c86767d..87251b3d 100644 --- a/src/main/java/resonantinduction/mechanical/network/PathfinderUpdateRotation.java +++ b/src/main/java/resonantinduction/mechanical/network/PathfinderUpdateRotation.java @@ -48,7 +48,7 @@ public class PathfinderUpdateRotation extends ConnectionPathfinder if ((prevClosedSet != null && prevClosedSet.contains(node)) && (node.isClockwise() != currentRotationFlag)) { // We have conflicting rotations. Network is now stuck. - network.setPower(0, 0); + network.setDisabled(); } findNodes(node); diff --git a/src/main/java/resonantinduction/mechanical/network/TileMechanical.java b/src/main/java/resonantinduction/mechanical/network/TileMechanical.java index 7eb161ce..be727971 100644 --- a/src/main/java/resonantinduction/mechanical/network/TileMechanical.java +++ b/src/main/java/resonantinduction/mechanical/network/TileMechanical.java @@ -62,7 +62,7 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical @Override public boolean isRotationInversed() { - return false; + return true; } @Override