From 2ecb10cbca7697a076ed40e4edd13de9570fb570 Mon Sep 17 00:00:00 2001 From: pixlepix Date: Fri, 22 Nov 2013 16:18:17 -0500 Subject: [PATCH 1/4] Added Logistical Diverter --- .../RenderLogisticalTransporter.java | 4 ++ common/mekanism/common/CommonProxy.java | 3 ++ .../common/block/BlockTransmitter.java | 8 ++- .../common/item/ItemConfigurator.java | 34 ++++++++++-- .../TileEntityLogisticalDiverter.java | 53 +++++++++++++++++++ .../transporter/TransporterPathfinder.java | 30 ++++++++--- .../common/util/TransporterUtils.java | 29 ++++++++++ 7 files changed, 149 insertions(+), 12 deletions(-) create mode 100644 common/mekanism/common/tileentity/TileEntityLogisticalDiverter.java 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..5b2e6284e 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.TileEntityLogisticalDiverter; 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(TileEntityLogisticalDiverter.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..a812cdb8b 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.TileEntityLogisticalDiverter; 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: Logistical Diverter * @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 TileEntityLogisticalDiverter(); default: return null; } diff --git a/common/mekanism/common/item/ItemConfigurator.java b/common/mekanism/common/item/ItemConfigurator.java index 040f80865..3a7fcb52e 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.TileEntityLogisticalDiverter; 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 TileEntityLogisticalDiverter){ + TileEntityLogisticalDiverter transporter = (TileEntityLogisticalDiverter)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/tileentity/TileEntityLogisticalDiverter.java b/common/mekanism/common/tileentity/TileEntityLogisticalDiverter.java new file mode 100644 index 000000000..179109467 --- /dev/null +++ b/common/mekanism/common/tileentity/TileEntityLogisticalDiverter.java @@ -0,0 +1,53 @@ +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 TileEntityLogisticalDiverter 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 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; + } + @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(); + } + +} diff --git a/common/mekanism/common/transporter/TransporterPathfinder.java b/common/mekanism/common/transporter/TransporterPathfinder.java index d97dd88f7..7c539808e 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.TileEntityLogisticalDiverter; 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 TileEntityLogisticalDiverter){ + int mode=((TileEntityLogisticalDiverter) 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 TileEntityLogisticalDiverter){ + int mode=((TileEntityLogisticalDiverter) 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..237c5cece 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.TileEntityLogisticalDiverter; 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 TileEntityLogisticalDiverter){ + int mode=((TileEntityLogisticalDiverter) 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 TileEntityLogisticalDiverter){ + int mode=((TileEntityLogisticalDiverter) 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 TileEntityLogisticalDiverter){ + int mode=((TileEntityLogisticalDiverter) 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; } From 51225ba715ff04fa53cf14bd1140ab0c57b91939 Mon Sep 17 00:00:00 2001 From: pixlepix Date: Fri, 22 Nov 2013 16:18:42 -0500 Subject: [PATCH 2/4] Logistical diverter texture --- common/mekanism/client/ClientProxy.java | 4 ++++ .../mekanism/render/LogisticalDiverter.png | Bin 0 -> 8753 bytes 2 files changed, 4 insertions(+) create mode 100644 resources/assets/mekanism/render/LogisticalDiverter.png diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 0357de426..626dfc9ea 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.TileEntityLogisticalDiverter; 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(TileEntityLogisticalDiverter.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/resources/assets/mekanism/render/LogisticalDiverter.png b/resources/assets/mekanism/render/LogisticalDiverter.png new file mode 100644 index 0000000000000000000000000000000000000000..fb08894c8242ce028fa2e401d57c103cc0ebcb8a GIT binary patch literal 8753 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 literal 0 HcmV?d00001 From dc1743d517548248562a64a88066a36180f06851 Mon Sep 17 00:00:00 2001 From: pixlepix Date: Fri, 22 Nov 2013 23:49:18 -0500 Subject: [PATCH 3/4] Divertion transporter fixes, including name change --- common/mekanism/client/ClientProxy.java | 4 +- .../block/TransmitterRenderingHandler.java | 5 ++- common/mekanism/common/CommonProxy.java | 4 +- .../common/block/BlockTransmitter.java | 6 +-- .../common/item/ItemBlockTransmitter.java | 12 ++++++ .../common/item/ItemConfigurator.java | 6 +-- ...va => TileEntityDivertionTransporter.java} | 42 ++++++++++++------- .../transporter/TransporterPathfinder.java | 10 ++--- .../common/util/TransporterUtils.java | 14 +++---- resources/assets/mekanism/lang/en_US.lang | 1 + 10 files changed, 67 insertions(+), 37 deletions(-) rename common/mekanism/common/tileentity/{TileEntityLogisticalDiverter.java => TileEntityDivertionTransporter.java} (65%) diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 626dfc9ea..4e6f40a76 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -82,7 +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.TileEntityLogisticalDiverter; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; @@ -251,7 +251,7 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerTileEntity(TileEntityChargepad.class, "Chargepad", new RenderChargepad()); ClientRegistry.registerTileEntity(TileEntityLogisticalTransporter.class, "LogisticalTransporter", new RenderLogisticalTransporter()); - ClientRegistry.registerTileEntity(TileEntityLogisticalDiverter.class, "LogisticalDiverter", 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/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/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index 5b2e6284e..949d30be4 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -38,7 +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.TileEntityLogisticalDiverter; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; @@ -92,7 +92,7 @@ public class CommonProxy GameRegistry.registerTileEntity(TileEntityChargepad.class, "Chargepad"); GameRegistry.registerTileEntity(TileEntityLogisticalTransporter.class, "LogisticalTransporter"); - GameRegistry.registerTileEntity(TileEntityLogisticalDiverter.class, "LogisticalDiverter"); + 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 a812cdb8b..e62b98c7e 100644 --- a/common/mekanism/common/block/BlockTransmitter.java +++ b/common/mekanism/common/block/BlockTransmitter.java @@ -9,7 +9,7 @@ import mekanism.api.transmitters.ITransmitter; import mekanism.client.ClientProxy; import mekanism.common.Mekanism; import mekanism.common.PipeUtils; -import mekanism.common.tileentity.TileEntityLogisticalDiverter; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; import mekanism.common.tileentity.TileEntityPressurizedTube; @@ -42,7 +42,7 @@ import cpw.mods.fml.relauncher.SideOnly; * 2: Mechanical Pipe * 3: Logistical Transporter * 4: Restrictive Transporter - * 5: Logistical Diverter + * 5: Diversion Transporter * @author AidanBrady * */ @@ -376,7 +376,7 @@ public class BlockTransmitter extends Block return new TileEntityLogisticalTransporter(); case 5: - return new TileEntityLogisticalDiverter(); + 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 3a7fcb52e..2ac3fd387 100644 --- a/common/mekanism/common/item/ItemConfigurator.java +++ b/common/mekanism/common/item/ItemConfigurator.java @@ -16,7 +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.TileEntityLogisticalDiverter; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; import mekanism.common.util.MekanismUtils; @@ -73,8 +73,8 @@ public class ItemConfigurator extends ItemEnergized else if(world.getBlockTileEntity(x, y, z) instanceof TileEntityLogisticalTransporter) { //Player can access color by sneaking - if(world.getBlockTileEntity(x, y, z) instanceof TileEntityLogisticalDiverter){ - TileEntityLogisticalDiverter transporter = (TileEntityLogisticalDiverter)world.getBlockTileEntity(x, y, z); + 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"; diff --git a/common/mekanism/common/tileentity/TileEntityLogisticalDiverter.java b/common/mekanism/common/tileentity/TileEntityDivertionTransporter.java similarity index 65% rename from common/mekanism/common/tileentity/TileEntityLogisticalDiverter.java rename to common/mekanism/common/tileentity/TileEntityDivertionTransporter.java index 179109467..61281dc1f 100644 --- a/common/mekanism/common/tileentity/TileEntityLogisticalDiverter.java +++ b/common/mekanism/common/tileentity/TileEntityDivertionTransporter.java @@ -9,7 +9,7 @@ import mekanism.common.util.TransporterUtils; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -public class TileEntityLogisticalDiverter extends TileEntityLogisticalTransporter { +public class TileEntityDivertionTransporter extends TileEntityLogisticalTransporter { public int[] modes={0,0,0,0,0,0}; @Override @@ -25,19 +25,8 @@ public class TileEntityLogisticalDiverter extends TileEntityLogisticalTransporte super.writeToNBT(nbtTags); nbtTags.setIntArray("modes", modes); } - @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; - } + + @Override public void handlePacketData(ByteArrayDataInput dataStream) { @@ -49,5 +38,30 @@ public class TileEntityLogisticalDiverter extends TileEntityLogisticalTransporte 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 7c539808e..ac2aff25d 100644 --- a/common/mekanism/common/transporter/TransporterPathfinder.java +++ b/common/mekanism/common/transporter/TransporterPathfinder.java @@ -9,7 +9,7 @@ import java.util.Map; import java.util.Set; import mekanism.api.Object3D; -import mekanism.common.tileentity.TileEntityLogisticalDiverter; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.transporter.TransporterPathfinder.Pathfinder.DestChecker; @@ -186,15 +186,15 @@ public final class TransporterPathfinder { //Check for logistical Diverter TileEntity currTile = pointer.getTileEntity(worldObj); - if(currTile instanceof TileEntityLogisticalDiverter){ - int mode=((TileEntityLogisticalDiverter) currTile).modes[side.ordinal()]; + 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 TileEntityLogisticalDiverter){ - int mode=((TileEntityLogisticalDiverter) tile).modes[side.ordinal()]; + 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; diff --git a/common/mekanism/common/util/TransporterUtils.java b/common/mekanism/common/util/TransporterUtils.java index 237c5cece..80449f170 100644 --- a/common/mekanism/common/util/TransporterUtils.java +++ b/common/mekanism/common/util/TransporterUtils.java @@ -8,7 +8,7 @@ import mekanism.api.IConfigurable; import mekanism.api.Object3D; import mekanism.api.transmitters.ITransmitter; import mekanism.common.tileentity.TileEntityBin; -import mekanism.common.tileentity.TileEntityLogisticalDiverter; +import mekanism.common.tileentity.TileEntityDivertionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.transporter.TransporterStack; @@ -90,8 +90,8 @@ public final class TransporterUtils { int side = Arrays.asList(connectedInventories).indexOf(inventory); - if(tileEntity instanceof TileEntityLogisticalDiverter){ - int mode=((TileEntityLogisticalDiverter) tileEntity).modes[side]; + 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; @@ -138,8 +138,8 @@ public final class TransporterUtils int side = Arrays.asList(connectedTransporters).indexOf(tile); //Check for logistical Diverter - if(tileEntity instanceof TileEntityLogisticalDiverter){ - int mode=((TileEntityLogisticalDiverter) tileEntity).modes[side]; + 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; @@ -147,8 +147,8 @@ public final class TransporterUtils } //Check for logistical Diverter - if(tile instanceof TileEntityLogisticalDiverter){ - int mode=((TileEntityLogisticalDiverter) tile).modes[ForgeDirection.VALID_DIRECTIONS[side].getOpposite().ordinal()]; + 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; 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 From 45b449078c3215d5a29923b057ac24217b574e6b Mon Sep 17 00:00:00 2001 From: pixlepix Date: Sat, 23 Nov 2013 09:04:05 -0500 Subject: [PATCH 4/4] Added CC peripheral support for digital miner --- .../client/gui/GuiDigitalMinerConfig.java | 1 - .../common/miner/MItemStackFilter.java | 8 +- .../tileentity/TileEntityDigitalMiner.java | 144 +++++++++++++++++- 3 files changed, 150 insertions(+), 3 deletions(-) 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/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) { + + } }