diff --git a/src/main/java/mekanism/api/gas/GasTransmission.java b/src/main/java/mekanism/api/gas/GasTransmission.java index 144bc9fca..58d8589e9 100644 --- a/src/main/java/mekanism/api/gas/GasTransmission.java +++ b/src/main/java/mekanism/api/gas/GasTransmission.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.List; import mekanism.api.Coord4D; +import mekanism.api.transmitters.ITransmitterTile; import mekanism.api.transmitters.TransmissionType; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -18,28 +19,6 @@ import net.minecraftforge.common.util.ForgeDirection; */ public final class GasTransmission { - /** - * Gets all the tubes around a tile entity. - * @param tileEntity - center tile entity - * @return array of TileEntities - */ - public static TileEntity[] getConnectedTubes(TileEntity tileEntity) - { - TileEntity[] tubes = new TileEntity[] {null, null, null, null, null, null}; - - for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tube = Coord4D.get(tileEntity).getFromSide(orientation).getTileEntity(tileEntity.getWorldObj()); - - if(TransmissionType.checkTransmissionType(tube, TransmissionType.GAS, tileEntity)) - { - tubes[orientation.ordinal()] = tube; - } - } - - return tubes; - } - /** * Gets all the acceptors around a tile entity. * @param tileEntity - center tile entity @@ -92,7 +71,7 @@ public final class GasTransmission */ public static boolean canConnect(TileEntity tileEntity, ForgeDirection side) { - if(tileEntity instanceof ITubeConnection && (!(tileEntity instanceof IGasTransmitter) || TransmissionType.checkTransmissionType(tileEntity, TransmissionType.GAS, tileEntity))) + if(tileEntity instanceof ITubeConnection && (!(tileEntity instanceof ITransmitterTile) || TransmissionType.checkTransmissionType(((ITransmitterTile)tileEntity).getTransmitter(), TransmissionType.GAS))) { if(((ITubeConnection)tileEntity).canTubeConnect(side.getOpposite())) { diff --git a/src/main/java/mekanism/api/gas/IGasTransmitter.java b/src/main/java/mekanism/api/gas/IGasTransmitter.java index 8be999c01..57ec4c1fc 100644 --- a/src/main/java/mekanism/api/gas/IGasTransmitter.java +++ b/src/main/java/mekanism/api/gas/IGasTransmitter.java @@ -4,7 +4,7 @@ import mekanism.api.transmitters.IGridTransmitter; import net.minecraft.tileentity.TileEntity; -public interface IGasTransmitter extends IGridTransmitter +public interface IGasTransmitter extends IGridTransmitter { public boolean canTransferGasToTube(TileEntity tile); } diff --git a/src/main/java/mekanism/api/transmitters/DynamicNetwork.java b/src/main/java/mekanism/api/transmitters/DynamicNetwork.java index efedabffc..b92826285 100644 --- a/src/main/java/mekanism/api/transmitters/DynamicNetwork.java +++ b/src/main/java/mekanism/api/transmitters/DynamicNetwork.java @@ -34,7 +34,7 @@ public abstract class DynamicNetwork> implemen public HashMap> acceptorDirections = new HashMap>(); public HashMap, EnumSet> changedAcceptors = new HashMap<>(); - private List updateQueue = new ArrayList(); + private Set updateQueue = new LinkedHashSet(); protected Range4D packetRange = null; @@ -326,7 +326,8 @@ public abstract class DynamicNetwork> implemen q.delay--; } else { - needsUpdate = true; + transmittersAdded.addAll(transmitters); + updateDelay = 1; i.remove(); } } @@ -424,5 +425,17 @@ public abstract class DynamicNetwork> implemen player = p; delay = 5; } + + @Override + public int hashCode() + { + return player.hashCode(); + } + + @Override + public boolean equals(Object o) + { + return o instanceof DelayQueue && ((DelayQueue)o).player.equals(this.player); + } } } diff --git a/src/main/java/mekanism/client/render/RenderPartTransmitter.java b/src/main/java/mekanism/client/render/RenderPartTransmitter.java index d858d7539..5120b197e 100644 --- a/src/main/java/mekanism/client/render/RenderPartTransmitter.java +++ b/src/main/java/mekanism/client/render/RenderPartTransmitter.java @@ -179,7 +179,7 @@ public class RenderPartTransmitter implements IIconSelfRegister GL11.glPushMatrix(); entityItem.setEntityItemStack(stack.itemStack); - float[] pos = TransporterUtils.getStackPosition(transporter.getTransmitter(), stack, partialTick*transporter.getTransmitter().tier.speed); + float[] pos = TransporterUtils.getStackPosition(transporter.getTransmitter(), stack, partialTick*transporter.tier.speed); GL11.glTranslated(vec.x + pos[0], vec.y + pos[1] - entityItem.yOffset, vec.z + pos[2]); GL11.glScalef(0.75F, 0.75F, 0.75F); diff --git a/src/main/java/mekanism/common/multipart/MultipartTransporter.java b/src/main/java/mekanism/common/multipart/MultipartTransporter.java index 64669e1a2..322785bba 100644 --- a/src/main/java/mekanism/common/multipart/MultipartTransporter.java +++ b/src/main/java/mekanism/common/multipart/MultipartTransporter.java @@ -30,8 +30,6 @@ public class MultipartTransporter extends MultipartTransmitter transit = new HashList<>(); - public static final int SPEED = 5; - public EnumColor color; public Set needsSync = new HashSet<>(); @@ -49,7 +47,7 @@ public class MultipartTransporter extends MultipartTransmitter 100) { @@ -85,7 +83,7 @@ public class MultipartTransporter extends MultipartTransmitter implements ITransporterTile { public Tier.TransporterTier tier = Tier.TransporterTier.BASIC; @@ -53,7 +52,12 @@ public class PartLogisticalTransporter extends PartTransmitter implements IFluidHandler { - public static TransmitterIcons pipeIcons = new TransmitterIcons(4, 2); + public static TransmitterIcons pipeIcons = new TransmitterIcons(4, 8); public float currentScale; @@ -234,7 +234,7 @@ public class PartMechanicalPipe extends PartTransmitter> extends PartSidedPipe implements ITransmitterTile @@ -30,6 +33,10 @@ public abstract class PartTransmitter> extends { TransmitterNetworkRegistry.registerOrphanTransmitter(getTransmitter()); } + else + { + MinecraftForge.EVENT_BUS.post(new NetworkClientRequest(tile())); + } } public abstract N createNewNetwork(); diff --git a/src/main/java/mekanism/common/network/PacketDataRequest.java b/src/main/java/mekanism/common/network/PacketDataRequest.java index 8b181cc64..9da254b5a 100644 --- a/src/main/java/mekanism/common/network/PacketDataRequest.java +++ b/src/main/java/mekanism/common/network/PacketDataRequest.java @@ -45,7 +45,10 @@ public class PacketDataRequest implements IMessageHandler