diff --git a/src/main/java/resonantinduction/core/ClientProxy.java b/src/main/java/resonantinduction/core/ClientProxy.java index b85daa0e..9d68bf9c 100644 --- a/src/main/java/resonantinduction/core/ClientProxy.java +++ b/src/main/java/resonantinduction/core/ClientProxy.java @@ -62,6 +62,7 @@ public class ClientProxy extends CommonProxy { EntityFX fx = new EntityDiggingFX(world, position.x, position.y, position.z, velocity.x, velocity.y, velocity.z, Block.blocksList[blockID], 0, 0); fx.multipleParticleScaleBy(scale); + fx.noClip = true; FMLClientHandler.instance().getClient().effectRenderer.addEffect(fx); } } diff --git a/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java b/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java index 8ffa5eb2..e491f45c 100644 --- a/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java +++ b/src/main/java/resonantinduction/mechanical/network/MechanicalNetwork.java @@ -49,7 +49,6 @@ public class MechanicalNetwork extends Network /** The current rotation of the network */ private float rotation = 0; private long lastRotateTime; - private boolean markPacketUpdate = true; /** The direction in which a conductor is placed relative to a specific conductor. */ protected final HashMap> handlerDirectionMap = new LinkedHashMap>(); @@ -58,11 +57,14 @@ public class MechanicalNetwork extends Network private Set generators = new LinkedHashSet(); private boolean disabled; + private boolean markUpdateRotation = true; + @Override public void addConnector(IMechanical connector) { - this.markPacketUpdate = true; super.addConnector(connector); + NetworkTickHandler.addNetwork(this); + markUpdateRotation = true; } /** @@ -74,7 +76,7 @@ public class MechanicalNetwork extends Network /** * Calculation rotations of all generators. */ - if (!(prevGenerators.equals(generators)) && generators.size() > 0) + if (markUpdateRotation || (!(prevGenerators.equals(generators)) && generators.size() > 0)) { Set closedSet = new LinkedHashSet(); @@ -89,7 +91,8 @@ public class MechanicalNetwork extends Network } } - prevGenerators = new LinkedHashSet<>(generators); + markUpdateRotation = false; + prevGenerators = new LinkedHashSet(generators); } generators.clear(); @@ -109,7 +112,6 @@ public class MechanicalNetwork extends Network if (getPrevTorque() != getTorque() || getPrevAngularVelocity() != getAngularVelocity()) { sendNetworkPacket(); - markPacketUpdate = false; } prevTorque = torque; @@ -121,7 +123,7 @@ public class MechanicalNetwork extends Network @Override public boolean canUpdate() { - return !disabled; + return !disabled && getConnectors().size() > 0; } @Override @@ -152,7 +154,10 @@ public class MechanicalNetwork extends Network int[] location = connector.getLocation(); if (location != null) + { + System.out.println("UPDATING!" + location[0] + "," + location[1] + "," + location[2]); PacketDispatcher.sendPacketToAllPlayers(Mechanical.PACKET_NETWORK.getPacket(location[0], location[1], location[2], location[3], (byte) 1, connector.isClockwise())); + } } @Override diff --git a/src/main/java/resonantinduction/mechanical/network/TileMechanical.java b/src/main/java/resonantinduction/mechanical/network/TileMechanical.java index be727971..f17bd5c7 100644 --- a/src/main/java/resonantinduction/mechanical/network/TileMechanical.java +++ b/src/main/java/resonantinduction/mechanical/network/TileMechanical.java @@ -1,6 +1,8 @@ package resonantinduction.mechanical.network; +import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import universalelectricity.api.vector.Vector3; import calclavia.lib.prefab.tile.TileAdvanced; public abstract class TileMechanical extends TileAdvanced implements IMechanical @@ -15,6 +17,24 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical @Override public Object[] getConnections() { + connections = new Object[6]; + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = new Vector3(this).translate(dir).getTileEntity(worldObj); + + if (tile instanceof IMechanical) + { + IMechanical mech = (IMechanical) ((IMechanical) tile).getInstance(dir.getOpposite()); + + if (mech != null && canConnect(dir) && mech.canConnect(dir.getOpposite())) + { + connections[dir.ordinal()] = mech; + getNetwork().merge(mech.getNetwork()); + } + } + } + return connections; } diff --git a/src/main/java/resonantinduction/mechanical/process/BlockGrinderWheel.java b/src/main/java/resonantinduction/mechanical/process/BlockGrinderWheel.java index c924ef2a..0d072120 100644 --- a/src/main/java/resonantinduction/mechanical/process/BlockGrinderWheel.java +++ b/src/main/java/resonantinduction/mechanical/process/BlockGrinderWheel.java @@ -77,7 +77,7 @@ public class BlockGrinderWheel extends BlockRIRotatable implements ITileEntityPr dir = ForgeDirection.getOrientation(!(dir.ordinal() % 2 == 0) ? dir.ordinal() - 1 : dir.ordinal()); int inversion = tile.isClockwise() ? -1 : 1; float speed = tile.getNetwork().getAngularVelocity() / 20; - entity.addVelocity(inversion * dir.offsetX * speed, inversion * dir.offsetZ * speed, Math.random() * speed); + entity.addVelocity(inversion * dir.offsetX * speed, Math.random() * speed, inversion * dir.offsetZ * speed); } } }