diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 0357de426..4e6f40a76 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -82,6 +82,7 @@ import mekanism.common.tileentity.TileEntityEnergyCube; import mekanism.common.tileentity.TileEntityEnrichmentChamber; import mekanism.common.tileentity.TileEntityFactory; import mekanism.common.tileentity.TileEntityGasTank; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; @@ -107,6 +108,7 @@ import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -248,6 +250,8 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerTileEntity(TileEntityDynamicValve.class, "DynamicValve", new RenderDynamicTank()); ClientRegistry.registerTileEntity(TileEntityChargepad.class, "Chargepad", new RenderChargepad()); ClientRegistry.registerTileEntity(TileEntityLogisticalTransporter.class, "LogisticalTransporter", new RenderLogisticalTransporter()); + + ClientRegistry.registerTileEntity(TileEntityDivertionTransporter.class, "LogisticalDiverter", new RenderLogisticalTransporter()); ClientRegistry.registerTileEntity(TileEntityLogisticalSorter.class, "LogisticalSorter", new RenderLogisticalSorter()); ClientRegistry.registerTileEntity(TileEntityBin.class, "Bin", new RenderBin()); ClientRegistry.registerTileEntity(TileEntityDigitalMiner.class, "DigitalMiner", new RenderDigitalMiner()); diff --git a/common/mekanism/client/gui/GuiDigitalMinerConfig.java b/common/mekanism/client/gui/GuiDigitalMinerConfig.java index 8e555ff9e..5a58be218 100644 --- a/common/mekanism/client/gui/GuiDigitalMinerConfig.java +++ b/common/mekanism/client/gui/GuiDigitalMinerConfig.java @@ -16,7 +16,6 @@ import mekanism.common.miner.MOreDictFilter; import mekanism.common.miner.MinerFilter; import mekanism.common.network.PacketDigitalMinerGui; import mekanism.common.network.PacketDigitalMinerGui.MinerGuiPacket; -import mekanism.common.network.PacketSimpleGui; import mekanism.common.network.PacketTileEntity; import mekanism.common.tileentity.TileEntityDigitalMiner; import mekanism.common.util.MekanismUtils; diff --git a/common/mekanism/client/render/block/TransmitterRenderingHandler.java b/common/mekanism/client/render/block/TransmitterRenderingHandler.java index 5328e2142..a2d693e06 100644 --- a/common/mekanism/client/render/block/TransmitterRenderingHandler.java +++ b/common/mekanism/client/render/block/TransmitterRenderingHandler.java @@ -48,9 +48,12 @@ public class TransmitterRenderingHandler implements ISimpleBlockRenderingHandler case 4: Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "RestrictiveTransporter.png")); break; + case 5: + Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "LogisticalDiverter.png")); + break; } - if(metadata != 3 && metadata != 4) + if(metadata != 3 && metadata != 4 && metadata != 5) { smallTransmitter.renderSide(ForgeDirection.UP, true); smallTransmitter.renderSide(ForgeDirection.DOWN, true); diff --git a/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java b/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java index 0d0f4f933..ef5a48a49 100644 --- a/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java +++ b/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java @@ -49,6 +49,10 @@ public class RenderLogisticalTransporter extends TileEntitySpecialRenderer { bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "RestrictiveTransporter.png")); } + else if(meta == 5) + { + bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "LogisticalDiverter.png")); + } GL11.glPushMatrix(); GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); diff --git a/common/mekanism/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index 4b6060879..949d30be4 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -38,6 +38,7 @@ import mekanism.common.tileentity.TileEntityEnergyCube; import mekanism.common.tileentity.TileEntityEnrichmentChamber; import mekanism.common.tileentity.TileEntityFactory; import mekanism.common.tileentity.TileEntityGasTank; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; @@ -90,6 +91,8 @@ public class CommonProxy GameRegistry.registerTileEntity(TileEntityDynamicValve.class, "DynamicValve"); GameRegistry.registerTileEntity(TileEntityChargepad.class, "Chargepad"); GameRegistry.registerTileEntity(TileEntityLogisticalTransporter.class, "LogisticalTransporter"); + + GameRegistry.registerTileEntity(TileEntityDivertionTransporter.class, "LogisticalDiverter"); GameRegistry.registerTileEntity(TileEntityLogisticalSorter.class, "LogisticalSorter"); GameRegistry.registerTileEntity(TileEntityBin.class, "Bin"); GameRegistry.registerTileEntity(TileEntityDigitalMiner.class, "DigitalMiner"); diff --git a/common/mekanism/common/block/BlockTransmitter.java b/common/mekanism/common/block/BlockTransmitter.java index 14aed0967..e62b98c7e 100644 --- a/common/mekanism/common/block/BlockTransmitter.java +++ b/common/mekanism/common/block/BlockTransmitter.java @@ -9,6 +9,7 @@ import mekanism.api.transmitters.ITransmitter; import mekanism.client.ClientProxy; import mekanism.common.Mekanism; import mekanism.common.PipeUtils; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; import mekanism.common.tileentity.TileEntityPressurizedTube; @@ -41,6 +42,7 @@ import cpw.mods.fml.relauncher.SideOnly; * 2: Mechanical Pipe * 3: Logistical Transporter * 4: Restrictive Transporter + * 5: Diversion Transporter * @author AidanBrady * */ @@ -99,6 +101,7 @@ public class BlockTransmitter extends Block list.add(new ItemStack(i, 1, 2)); list.add(new ItemStack(i, 1, 3)); list.add(new ItemStack(i, 1, 4)); + list.add(new ItemStack(i, 1, 5)); } @Override @@ -239,7 +242,7 @@ public class BlockTransmitter extends Block { connectable = PipeUtils.getConnections(tileEntity); } - else if(world.getBlockMetadata(x, y, z) == 3 || world.getBlockMetadata(x, y, z) == 4) + else if(world.getBlockMetadata(x, y, z) == 3 || world.getBlockMetadata(x, y, z) == 4||world.getBlockMetadata(x, y, z) == 5) { connectable = TransporterUtils.getConnections((TileEntityLogisticalTransporter)tileEntity); } @@ -371,6 +374,9 @@ public class BlockTransmitter extends Block return new TileEntityLogisticalTransporter(); case 4: return new TileEntityLogisticalTransporter(); + + case 5: + return new TileEntityDivertionTransporter(); default: return null; } diff --git a/common/mekanism/common/item/ItemBlockTransmitter.java b/common/mekanism/common/item/ItemBlockTransmitter.java index f7e4c6c52..4ce0d013e 100644 --- a/common/mekanism/common/item/ItemBlockTransmitter.java +++ b/common/mekanism/common/item/ItemBlockTransmitter.java @@ -20,6 +20,8 @@ import net.minecraft.util.Icon; * 1: Universal Cable * 2: Mechanical Pipe * 3: Logistical Transporter + * 4: Restrictive Transporter + * 5: Diversion Transporter * @author AidanBrady * */ @@ -75,6 +77,13 @@ public class ItemBlockTransmitter extends ItemBlock list.add("- " + EnumColor.PURPLE + "Blocks (universal)"); list.add("- " + EnumColor.DARK_RED + "Only used if no other paths available"); } + else if(itemstack.getItemDamage() == 5) + { + list.add(EnumColor.DARK_GREY + "Capable of transferring:"); + list.add("- " + EnumColor.PURPLE + "Items (universal)"); + list.add("- " + EnumColor.PURPLE + "Blocks (universal)"); + list.add("- " + EnumColor.DARK_RED + "Controlable by redstone"); + } } } @@ -112,6 +121,9 @@ public class ItemBlockTransmitter extends ItemBlock case 4: name = "RestrictiveTransporter"; break; + case 5: + name = "DiversionTransporter"; + break; default: name = "Unknown"; break; diff --git a/common/mekanism/common/item/ItemConfigurator.java b/common/mekanism/common/item/ItemConfigurator.java index 040f80865..2ac3fd387 100644 --- a/common/mekanism/common/item/ItemConfigurator.java +++ b/common/mekanism/common/item/ItemConfigurator.java @@ -16,6 +16,7 @@ import mekanism.common.tileentity.TileEntityBin; import mekanism.common.tileentity.TileEntityContainerBlock; import mekanism.common.tileentity.TileEntityElectricChest; import mekanism.common.tileentity.TileEntityElectricPump; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; import mekanism.common.util.MekanismUtils; @@ -71,11 +72,34 @@ public class ItemConfigurator extends ItemEnergized } else if(world.getBlockTileEntity(x, y, z) instanceof TileEntityLogisticalTransporter) { - TileEntityLogisticalTransporter transporter = (TileEntityLogisticalTransporter)world.getBlockTileEntity(x, y, z); - TransporterUtils.incrementColor(transporter); - PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(transporter), transporter.getNetworkedData(new ArrayList())), Object3D.get(transporter), 50D); - player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " Color bumped to: " + (transporter.color != null ? transporter.color.getName() : EnumColor.BLACK + "None"))); - return true; + //Player can access color by sneaking + if(world.getBlockTileEntity(x, y, z) instanceof TileEntityDivertionTransporter){ + TileEntityDivertionTransporter transporter = (TileEntityDivertionTransporter)world.getBlockTileEntity(x, y, z); + int newMode=(transporter.modes[side]+1)%3; + transporter.modes[side]=newMode; + String description="ERROR"; + switch(newMode){ + case 0: + description="Always active"; + break; + case 1: + description="Active with signal"; + break; + case 2: + description="Active without signal"; + break; + } + player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + "Diverter mode changed to: "+EnumColor.RED+description)); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(transporter), transporter.getNetworkedData(new ArrayList())), Object3D.get(transporter), 50D); + + return true; + }else{ + TileEntityLogisticalTransporter transporter = (TileEntityLogisticalTransporter)world.getBlockTileEntity(x, y, z); + TransporterUtils.incrementColor(transporter); + PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(transporter), transporter.getNetworkedData(new ArrayList())), Object3D.get(transporter), 50D); + player.sendChatToPlayer(ChatMessageComponent.createFromText(EnumColor.DARK_BLUE + "[Mekanism]" + EnumColor.GREY + " Color bumped to: " + (transporter.color != null ? transporter.color.getName() : EnumColor.BLACK + "None"))); + return true; + } } else if(world.getBlockTileEntity(x, y, z) instanceof TileEntityBin) { diff --git a/common/mekanism/common/miner/MItemStackFilter.java b/common/mekanism/common/miner/MItemStackFilter.java index 73460c9f1..1c8d9bb14 100644 --- a/common/mekanism/common/miner/MItemStackFilter.java +++ b/common/mekanism/common/miner/MItemStackFilter.java @@ -10,7 +10,13 @@ import com.google.common.io.ByteArrayDataInput; public class MItemStackFilter extends MinerFilter { public ItemStack itemType; - + public MItemStackFilter(ItemStack item){ + super(); + this.itemType=item; + } + public MItemStackFilter(){ + super(); + } @Override public boolean canFilter(ItemStack itemStack) { diff --git a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java index ff6d4e590..e41d3357b 100644 --- a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java +++ b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java @@ -4,6 +4,7 @@ import ic2.api.energy.tile.IEnergySink; import java.util.ArrayList; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; @@ -21,6 +22,8 @@ import mekanism.common.TileComponentUpgrade; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.inventory.container.ContainerFilter; import mekanism.common.inventory.container.ContainerNull; +import mekanism.common.miner.MItemStackFilter; +import mekanism.common.miner.MOreDictFilter; import mekanism.common.miner.MinerFilter; import mekanism.common.miner.ThreadMinerSearch; import mekanism.common.miner.ThreadMinerSearch.State; @@ -44,8 +47,11 @@ import com.google.common.io.ByteArrayDataInput; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dan200.computer.api.IComputerAccess; +import dan200.computer.api.ILuaContext; +import dan200.computer.api.IPeripheral; -public class TileEntityDigitalMiner extends TileEntityElectricBlock implements IEnergySink, IStrictEnergyAcceptor, IUpgradeTile, IRedstoneControl, IActiveState, IAdvancedBoundingBlock +public class TileEntityDigitalMiner extends TileEntityElectricBlock implements IPeripheral, IEnergySink, IStrictEnergyAcceptor, IUpgradeTile, IRedstoneControl, IActiveState, IAdvancedBoundingBlock { public List oresToMine = new ArrayList(); @@ -1070,4 +1076,140 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I return false; } + + @Override + public String getType() { + return "Digital Miner"; + } + public String[] names = + { + "setRadius", + "setMin", + "setMax", + "setReplace", + "addFilter", + "removeFilter", + "addOreFilter", + "removeOreFilter" + }; + @Override + public String[] getMethodNames() { + return names; + } + + @Override + public Object[] callMethod(IComputerAccess computer, ILuaContext context, + int method, Object[] arguments) throws Exception { + if(arguments.length>0) + { + int num = 0; + + if(arguments[0] instanceof Double) + { + num = ((Double)arguments[0]).intValue(); + } + if(arguments[0] instanceof String&&(method!=6&&method!=7)) + { + num = Integer.parseInt((String)arguments[0]); + } + + if(num!=0) + { + if(method==0) + { + this.radius=num; + } + if(method==1) + { + this.minY=num; + } + if(method==2) + { + this.maxY=num; + } + if(method==3){ + //replace + int meta=0; + if(arguments.length>1){ + if(arguments[1] instanceof Double) + { + num = ((Double)arguments[1]).intValue(); + } + if(arguments[1] instanceof String) + { + meta = Integer.parseInt((String)arguments[1]); + } + } + this.replaceStack=new ItemStack(num,1,meta); + } + if(method==4){ + int meta=0; + + if(arguments.length>1){ + if(arguments[1] instanceof Double) + { + meta = ((Double)arguments[1]).intValue(); + } + if(arguments[1] instanceof String) + { + meta = Integer.parseInt((String)arguments[1]); + } + } + this.filters.add(new MItemStackFilter(new ItemStack(num,1,meta))); + } + if(method==5){ + Iterator iter=this.filters.iterator(); + while(iter.hasNext()){ + MinerFilter filter=iter.next(); + if(filter instanceof MItemStackFilter){ + if(((MItemStackFilter) filter).itemType.itemID==num){ + iter.remove(); + } + } + } + } + if(method==6){ + String ore=(String) arguments[0]; + MOreDictFilter filter=new MOreDictFilter(); + filter.oreDictName=ore; + filters.add(filter); + } + if(method==7){ + + String ore=(String) arguments[0]; + Iterator iter=this.filters.iterator(); + while(iter.hasNext()){ + MinerFilter filter=iter.next(); + if(filter instanceof MOreDictFilter){ + if(((MOreDictFilter) filter).oreDictName==ore){ + iter.remove(); + } + } + } + } + } + } + for(EntityPlayer player : playersUsing) + { + PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketTileEntity().setParams(Object3D.get(this), getGenericPacket(new ArrayList())), player); + } + + + return null; + } + + @Override + public boolean canAttachToSide(int side) { + return true; + } + + @Override + public void attach(IComputerAccess computer) { + + } + + @Override + public void detach(IComputerAccess computer) { + + } } diff --git a/common/mekanism/common/tileentity/TileEntityDivertionTransporter.java b/common/mekanism/common/tileentity/TileEntityDivertionTransporter.java new file mode 100644 index 000000000..61281dc1f --- /dev/null +++ b/common/mekanism/common/tileentity/TileEntityDivertionTransporter.java @@ -0,0 +1,67 @@ +package mekanism.common.tileentity; + +import java.util.ArrayList; + +import com.google.common.io.ByteArrayDataInput; + +import mekanism.common.transporter.TransporterStack; +import mekanism.common.util.TransporterUtils; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +public class TileEntityDivertionTransporter extends TileEntityLogisticalTransporter { + + public int[] modes={0,0,0,0,0,0}; + @Override + public void readFromNBT(NBTTagCompound nbtTags) + { + super.readFromNBT(nbtTags); + modes=nbtTags.getIntArray("modes"); + } + + @Override + public void writeToNBT(NBTTagCompound nbtTags) + { + super.writeToNBT(nbtTags); + nbtTags.setIntArray("modes", modes); + } + + + @Override + public void handlePacketData(ByteArrayDataInput dataStream) + { + super.handlePacketData(dataStream); + modes[0]=dataStream.readInt(); + modes[1]=dataStream.readInt(); + modes[2]=dataStream.readInt(); + modes[3]=dataStream.readInt(); + modes[4]=dataStream.readInt(); + modes[5]=dataStream.readInt(); + } + + @Override + public ArrayList getNetworkedData(ArrayList data) + { + data=super.getNetworkedData(data); + data.add(modes[0]); + data.add(modes[1]); + data.add(modes[2]); + data.add(modes[3]); + data.add(modes[4]); + data.add(modes[5]); + return data; + } + + public ArrayList getSyncPacket(TransporterStack stack, boolean kill) + { + ArrayList data=super.getSyncPacket(stack, kill); + data.add(modes[0]); + data.add(modes[1]); + data.add(modes[2]); + data.add(modes[3]); + data.add(modes[4]); + data.add(modes[5]); + return data; + } + +} diff --git a/common/mekanism/common/transporter/TransporterPathfinder.java b/common/mekanism/common/transporter/TransporterPathfinder.java index d97dd88f7..ac2aff25d 100644 --- a/common/mekanism/common/transporter/TransporterPathfinder.java +++ b/common/mekanism/common/transporter/TransporterPathfinder.java @@ -9,6 +9,7 @@ import java.util.Map; import java.util.Set; import mekanism.api.Object3D; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.transporter.TransporterPathfinder.Pathfinder.DestChecker; @@ -183,6 +184,23 @@ public final class TransporterPathfinder if(tile != null) { + //Check for logistical Diverter + TileEntity currTile = pointer.getTileEntity(worldObj); + if(currTile instanceof TileEntityDivertionTransporter){ + int mode=((TileEntityDivertionTransporter) currTile).modes[side.ordinal()]; + boolean redstone=currTile.worldObj.isBlockIndirectlyGettingPowered(currTile.xCoord, currTile.yCoord,currTile.zCoord); + if((mode==2&&redstone==true)||(mode==1&&redstone==false)){ + continue; + } + } + if(tile instanceof TileEntityDivertionTransporter){ + int mode=((TileEntityDivertionTransporter) tile).modes[side.ordinal()]; + boolean redstone=tile.worldObj.isBlockIndirectlyGettingPowered(tile.xCoord, tile.yCoord,tile.zCoord); + if((mode==2&&redstone==true)||(mode==1&&redstone==false)){ + continue; + } + } + if(Object3D.get(tile).equals(transportStack.originalLocation)) { continue; @@ -200,13 +218,13 @@ public final class TransporterPathfinder } } - public Set find() - { - loop(start); - - return destsFound; - } + public Set find() + { + loop(start); + + return destsFound; } +} public static List getPaths(TileEntityLogisticalTransporter start, TransporterStack stack) { diff --git a/common/mekanism/common/util/TransporterUtils.java b/common/mekanism/common/util/TransporterUtils.java index 24236d6cf..80449f170 100644 --- a/common/mekanism/common/util/TransporterUtils.java +++ b/common/mekanism/common/util/TransporterUtils.java @@ -8,6 +8,7 @@ import mekanism.api.IConfigurable; import mekanism.api.Object3D; import mekanism.api.transmitters.ITransmitter; import mekanism.common.tileentity.TileEntityBin; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.transporter.TransporterStack; @@ -84,9 +85,18 @@ public final class TransporterUtils for(IInventory inventory : connectedInventories) { + if(inventory != null) { + int side = Arrays.asList(connectedInventories).indexOf(inventory); + if(tileEntity instanceof TileEntityDivertionTransporter){ + int mode=((TileEntityDivertionTransporter) tileEntity).modes[side]; + boolean redstone=tileEntity.worldObj.isBlockIndirectlyGettingPowered(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); + if((mode==2&&redstone==true)||(mode==1&&redstone==false)){ + continue; + } + } ForgeDirection forgeSide = ForgeDirection.getOrientation(side).getOpposite(); //Immature BuildCraft inv check @@ -124,7 +134,26 @@ public final class TransporterUtils { if(tile != null) { + + int side = Arrays.asList(connectedTransporters).indexOf(tile); + //Check for logistical Diverter + if(tileEntity instanceof TileEntityDivertionTransporter){ + int mode=((TileEntityDivertionTransporter) tileEntity).modes[side]; + boolean redstone=tileEntity.worldObj.isBlockIndirectlyGettingPowered(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); + if((mode==2&&redstone==true)||(mode==1&&redstone==false)){ + continue; + } + } + + //Check for logistical Diverter + if(tile instanceof TileEntityDivertionTransporter){ + int mode=((TileEntityDivertionTransporter) tile).modes[ForgeDirection.VALID_DIRECTIONS[side].getOpposite().ordinal()]; + boolean redstone=tile.worldObj.isBlockIndirectlyGettingPowered(tile.xCoord, tile.yCoord, tile.zCoord); + if((mode==2&&redstone==true)||(mode==1&&redstone==false)){ + continue; + } + } connectable[side] = true; } diff --git a/resources/assets/mekanism/lang/en_US.lang b/resources/assets/mekanism/lang/en_US.lang index e80cd71dd..9250ffd26 100644 --- a/resources/assets/mekanism/lang/en_US.lang +++ b/resources/assets/mekanism/lang/en_US.lang @@ -66,6 +66,7 @@ tile.Transmitter.UniversalCable.name=Universal Cable tile.Transmitter.MechanicalPipe.name=Mechanical Pipe tile.Transmitter.LogisticalTransporter.name=Logistical Transporter tile.Transmitter.RestrictiveTransporter.name=Restrictive Transporter +tile.Transmitter.DiversionTransporter.name=Diversion Transporter //Energy Cubes tile.EnergyCube.Basic.name=Basic Energy Cube diff --git a/resources/assets/mekanism/render/LogisticalDiverter.png b/resources/assets/mekanism/render/LogisticalDiverter.png new file mode 100644 index 000000000..fb08894c8 Binary files /dev/null and b/resources/assets/mekanism/render/LogisticalDiverter.png differ