From ba04ed146fcad60d164d2da67a54ad6d890cba84 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Sun, 8 Jun 2014 11:47:02 +0200 Subject: [PATCH] Mekanism v6.0.5 - contains many major fixes, many of which were backported from the 1.7 branch --- build.gradle | 2 +- build.properties | 2 +- .../api/transmitters/DynamicNetwork.java | 62 ++++++++++ .../api/transmitters/IGridTransmitter.java | 3 + .../render/tileentity/RenderDynamicTank.java | 2 +- common/mekanism/common/EnergyNetwork.java | 2 + common/mekanism/common/Mekanism.java | 16 ++- common/mekanism/common/PacketHandler.java | 28 +++++ .../common/multipart/PartMechanicalPipe.java | 2 +- .../common/multipart/PartPressurizedTube.java | 2 +- .../common/multipart/PartTransmitter.java | 6 + .../network/PacketPortableTeleport.java | 5 + .../network/PacketTransmitterUpdate.java | 8 +- .../common/tile/TileEntityChargepad.java | 2 +- .../tile/TileEntityChemicalCrystalizer.java | 2 +- .../tile/TileEntityElectrolyticSeparator.java | 2 +- .../common/tile/TileEntityEnergyCube.java | 2 +- .../tile/TileEntityLogisticalSorter.java | 110 ++++++++++-------- .../generators/common/MekanismGenerators.java | 4 +- .../TileEntityAdvancedSolarGenerator.java | 2 +- .../common/tile/TileEntitySolarGenerator.java | 3 +- .../mekanism/tools/common/MekanismTools.java | 4 +- etc/core/mcmod.info | 2 +- etc/generators/mcmod.info | 2 +- etc/tools/mcmod.info | 2 +- 25 files changed, 200 insertions(+), 77 deletions(-) diff --git a/build.gradle b/build.gradle index 7b0c3d9cc..d8fe2aeb8 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ dependencies { compile ':forgemultipart:1.0.0.228' } -version = "6.0.4." + "$System.env.BUILD_NUMBER" +version = "6.0.5." + "$System.env.BUILD_NUMBER" archivesBaseName = "MekanismAll" libsDirName = "../output" distsDirName = "../output" diff --git a/build.properties b/build.properties index b1d0c6380..03082e140 100644 --- a/build.properties +++ b/build.properties @@ -3,4 +3,4 @@ dir.mcp=${dir.development}forge/mcp version.minecraft=1.6.4 version.mod.major=6 version.mod.minor=0 -version.mod.revis=3 +version.mod.revis=5 diff --git a/common/mekanism/api/transmitters/DynamicNetwork.java b/common/mekanism/api/transmitters/DynamicNetwork.java index a9b00d972..3c4f63eb7 100644 --- a/common/mekanism/api/transmitters/DynamicNetwork.java +++ b/common/mekanism/api/transmitters/DynamicNetwork.java @@ -14,6 +14,7 @@ import mekanism.api.Coord4D; import mekanism.api.IClientTicker; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; @@ -28,6 +29,8 @@ public abstract class DynamicNetwork> implemen public HashMap acceptorDirections = new HashMap(); private List updateQueue = new ArrayList(); + + protected AxisAlignedBB packetRange = null; protected int ticksSinceCreate = 0; @@ -50,6 +53,65 @@ public abstract class DynamicNetwork> implemen { return transmitters.iterator().next().equals(transmitter); } + + public AxisAlignedBB getPacketRange() + { + if(packetRange == null) + { + return genPacketRange(); + } + + return packetRange; + } + + public int getDimension() + { + if(getSize() == 0) + { + return 0; + } + + return transmitters.iterator().next().getLocation().dimensionId; + } + + protected AxisAlignedBB genPacketRange() + { + if(getSize() == 0) + { + deregister(); + return null; + } + + Coord4D initCoord = transmitters.iterator().next().getLocation(); + + int minX = initCoord.xCoord; + int minY = initCoord.yCoord; + int minZ = initCoord.zCoord; + int maxX = initCoord.xCoord; + int maxY = initCoord.yCoord; + int maxZ = initCoord.zCoord; + + for(IGridTransmitter transmitter : transmitters) + { + Coord4D coord = transmitter.getLocation(); + + if(coord.xCoord < minX) minX = coord.xCoord; + if(coord.yCoord < minY) minY = coord.yCoord; + if(coord.zCoord < minZ) minZ = coord.zCoord; + if(coord.xCoord > maxX) maxX = coord.xCoord; + if(coord.yCoord > maxY) maxY = coord.yCoord; + if(coord.zCoord > maxZ) maxZ = coord.zCoord; + } + + minX -= 40; + minY -= 40; + minZ -= 40; + maxX += 40; + maxY += 40; + maxZ += 40; + + return AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ); + } @Override public void removeTransmitter(IGridTransmitter transmitter) diff --git a/common/mekanism/api/transmitters/IGridTransmitter.java b/common/mekanism/api/transmitters/IGridTransmitter.java index 13edf3f4d..28b2c944e 100644 --- a/common/mekanism/api/transmitters/IGridTransmitter.java +++ b/common/mekanism/api/transmitters/IGridTransmitter.java @@ -1,5 +1,6 @@ package mekanism.api.transmitters; +import mekanism.api.Coord4D; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; @@ -60,4 +61,6 @@ public interface IGridTransmitter> extends ITrans public String getTransmitterNetworkFlow(); public int getCapacity(); + + public Coord4D getLocation(); } diff --git a/common/mekanism/client/render/tileentity/RenderDynamicTank.java b/common/mekanism/client/render/tileentity/RenderDynamicTank.java index 4395ea059..daf6c5320 100644 --- a/common/mekanism/client/render/tileentity/RenderDynamicTank.java +++ b/common/mekanism/client/render/tileentity/RenderDynamicTank.java @@ -49,7 +49,7 @@ public class RenderDynamicTank extends TileEntitySpecialRenderer bindTexture(MekanismRenderer.getBlocksTexture()); - if(data.location != null && data.height > 0 && tileEntity.structure.fluidStored.getFluid() != null) + if(data.location != null && data.height >= 3 && tileEntity.structure.fluidStored.getFluid() != null) { push(); diff --git a/common/mekanism/common/EnergyNetwork.java b/common/mekanism/common/EnergyNetwork.java index 921a7a5e8..abb8db075 100644 --- a/common/mekanism/common/EnergyNetwork.java +++ b/common/mekanism/common/EnergyNetwork.java @@ -18,6 +18,7 @@ import mekanism.api.transmitters.TransmissionType; import mekanism.common.util.CableUtils; import mekanism.common.util.MekanismUtils; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.Event; @@ -315,6 +316,7 @@ public class EnergyNetwork extends DynamicNetwork possibleAcceptors.clear(); acceptorDirections.clear(); + packetRange = null; while(it.hasNext()) { diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 4ebf24f52..80e8e553f 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -159,7 +159,7 @@ import cpw.mods.fml.common.registry.GameRegistry; * @author AidanBrady * */ -@Mod(modid = "Mekanism", name = "Mekanism", version = "6.0.4") +@Mod(modid = "Mekanism", name = "Mekanism", version = "6.0.5") @NetworkMod(channels = {"MEK"}, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) public class Mekanism { @@ -184,7 +184,7 @@ public class Mekanism public static Configuration configuration; /** Mekanism version number */ - public static Version versionNumber = new Version(6, 0, 4); + public static Version versionNumber = new Version(6, 0, 5); /** Map of Teleporters */ public static Map> teleporters = new HashMap>(); @@ -670,6 +670,7 @@ public class Mekanism RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.stoneBrick, 1, 2), new ItemStack(Block.stoneBrick, 1, 0)); RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.stoneBrick, 1, 0), new ItemStack(Block.stoneBrick, 1, 3)); RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.stoneBrick, 1, 1), new ItemStack(Block.stoneBrick, 1, 0)); + RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreNetherQuartz), new ItemStack(Item.netherQuartz, 2)); //Combiner recipes RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone, 16), new ItemStack(Block.oreRedstone)); @@ -737,7 +738,7 @@ public class Mekanism RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("water", 2), new ChemicalPair(new GasStack(GasRegistry.getGas("hydrogen"), 2), new GasStack(GasRegistry.getGas("oxygen"), 1))); RecipeHandler.addElectrolyticSeparatorRecipe(FluidRegistry.getFluidStack("brine", 10), new ChemicalPair(new GasStack(GasRegistry.getGas("hydrogen"), 1), new GasStack(GasRegistry.getGas("chlorine"), 1))); - //Chemical Washer Recipes + //T4 Processing Recipes for(Gas gas : GasRegistry.getRegisteredGasses()) { if(gas instanceof OreGas && !((OreGas)gas).isClean()) @@ -748,6 +749,9 @@ public class Mekanism RecipeHandler.addChemicalCrystalizerRecipe(new GasStack(oreGas.getCleanGas(), 200), new ItemStack(Crystal, 1, Resource.getFromName(oreGas.getName()).ordinal())); } } + + //Chemical Dissolution Chamber Recipes + RecipeHandler.addChemicalDissolutionChamberRecipe(new ItemStack(Block.obsidian), new GasStack(GasRegistry.getGas("obsidian"), 1000)); //Infuse objects InfuseRegistry.registerInfuseObject(new ItemStack(Item.coal, 1, 0), new InfuseObject(InfuseRegistry.get("CARBON"), 10)); @@ -1245,7 +1249,7 @@ public class Mekanism public void onEnergyTransferred(EnergyTransferEvent event) { try { - PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTransmitterUpdate().setParams(PacketType.ENERGY, event.energyNetwork.transmitters.iterator().next(), event.power)); + PacketHandler.sendPacket(Transmission.CLIENTS_CUBOID, new PacketTransmitterUpdate().setParams(PacketType.ENERGY, event.energyNetwork.transmitters.iterator().next(), event.power), event.energyNetwork.getPacketRange(), event.energyNetwork.getDimension()); } catch(Exception e) {} } @@ -1253,7 +1257,7 @@ public class Mekanism public void onGasTransferred(GasTransferEvent event) { try { - PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTransmitterUpdate().setParams(PacketType.GAS, event.gasNetwork.transmitters.iterator().next(), event.transferType, event.didTransfer)); + PacketHandler.sendPacket(Transmission.CLIENTS_CUBOID, new PacketTransmitterUpdate().setParams(PacketType.GAS, event.gasNetwork.transmitters.iterator().next(), event.transferType, event.didTransfer), event.gasNetwork.getPacketRange(), event.gasNetwork.getDimension()); } catch(Exception e) {} } @@ -1261,7 +1265,7 @@ public class Mekanism public void onLiquidTransferred(FluidTransferEvent event) { try { - PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTransmitterUpdate().setParams(PacketType.FLUID, event.fluidNetwork.transmitters.iterator().next(), event.fluidType, event.didTransfer)); + PacketHandler.sendPacket(Transmission.CLIENTS_CUBOID, new PacketTransmitterUpdate().setParams(PacketType.FLUID, event.fluidNetwork.transmitters.iterator().next(), event.fluidType, event.didTransfer), event.fluidNetwork.getPacketRange(), event.fluidNetwork.getDimension()); } catch(Exception e) {} } diff --git a/common/mekanism/common/PacketHandler.java b/common/mekanism/common/PacketHandler.java index a418e13c8..9f098c4ce 100644 --- a/common/mekanism/common/PacketHandler.java +++ b/common/mekanism/common/PacketHandler.java @@ -10,7 +10,10 @@ import mekanism.common.network.IMekanismPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.INetworkManager; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet250CustomPayload; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.AxisAlignedBB; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteStreams; @@ -187,6 +190,9 @@ public class PacketHandler implements IPacketHandler Coord4D obj = (Coord4D)transParams[0]; PacketDispatcher.sendPacketToAllAround(obj.xCoord, obj.yCoord, obj.zCoord, (Double)transParams[1], obj.dimensionId, packet); break; + case CLIENTS_CUBOID: + sendToCuboid(packet, (AxisAlignedBB)transParams[0], (Integer)transParams[1]); + break; case CLIENTS_DIM: PacketDispatcher.sendPacketToAllInDimension(packet, (Integer)transParams[0]); break; @@ -197,6 +203,22 @@ public class PacketHandler implements IPacketHandler log(trans, packetType, transParams); } + + private static void sendToCuboid(Packet packet, AxisAlignedBB cuboid, int dimId) + { + MinecraftServer server = MinecraftServer.getServer(); + + if(server != null && cuboid != null) + { + for(EntityPlayerMP player : (List)server.getConfigurationManager().playerEntityList) + { + if(cuboid.isVecInside(player.getPosition(1.0F))) + { + player.playerNetServerHandler.sendPacketToPlayer(packet); + } + } + } + } /** * Writes a log to the console with information about a packet recently sent. @@ -219,6 +241,9 @@ public class PacketHandler implements IPacketHandler case CLIENTS_RANGE: System.out.println("[Mekanism] Sent '" + packetType.getName() + "' packet to clients in a " + (Double)transParams[1] + " block range."); break; + case CLIENTS_CUBOID: + System.out.println("[Mekanism] Sent '" + packetType.getName() + "' packet to clients within the cuboid " + ((AxisAlignedBB)transParams[0]).toString()); + break; case CLIENTS_DIM: System.out.println("[Mekanism] Sent '" + packetType.getName() + "' packet to clients in dimension ID " + (Integer)transParams[0] + "."); break; @@ -239,6 +264,9 @@ public class PacketHandler implements IPacketHandler /** 2 parameters - Object3D representing the location of the transmission, and a double of the distance this packet can be sent in. */ CLIENTS_RANGE(2), + + /** 2 parameter - AxisAlignedBB representing the area where the packet will be sent, and an int of the dimensionId the cuboid is in. */ + CLIENTS_CUBOID(2), /** 1 parameter - int representing the dimension ID to send this packet to. */ CLIENTS_DIM(1), diff --git a/common/mekanism/common/multipart/PartMechanicalPipe.java b/common/mekanism/common/multipart/PartMechanicalPipe.java index cd066e75a..2ba931b02 100644 --- a/common/mekanism/common/multipart/PartMechanicalPipe.java +++ b/common/mekanism/common/multipart/PartMechanicalPipe.java @@ -160,7 +160,7 @@ public class PartMechanicalPipe extends PartTransmitter implements { super.save(nbtTags); - if(getTransmitterNetwork().fluidStored != null) + if(getTransmitterNetwork(false) != null && getTransmitterNetwork(false).getSize() > 0 && getTransmitterNetwork(false).fluidStored != null) { int remain = getTransmitterNetwork().fluidStored.amount%getTransmitterNetwork().transmitters.size(); int toSave = getTransmitterNetwork().fluidStored.amount/getTransmitterNetwork().transmitters.size(); diff --git a/common/mekanism/common/multipart/PartPressurizedTube.java b/common/mekanism/common/multipart/PartPressurizedTube.java index 4655c6481..f2d9c83cb 100644 --- a/common/mekanism/common/multipart/PartPressurizedTube.java +++ b/common/mekanism/common/multipart/PartPressurizedTube.java @@ -149,7 +149,7 @@ public class PartPressurizedTube extends PartTransmitter { super.save(nbtTags); - if(getTransmitterNetwork().gasStored != null) + if(getTransmitterNetwork(false) != null && getTransmitterNetwork(false).getSize() > 0 && getTransmitterNetwork(false).gasStored != null) { int remain = getTransmitterNetwork().gasStored.amount%getTransmitterNetwork().transmitters.size(); int toSave = getTransmitterNetwork().gasStored.amount/getTransmitterNetwork().transmitters.size(); diff --git a/common/mekanism/common/multipart/PartTransmitter.java b/common/mekanism/common/multipart/PartTransmitter.java index 88186077d..6b27f4526 100644 --- a/common/mekanism/common/multipart/PartTransmitter.java +++ b/common/mekanism/common/multipart/PartTransmitter.java @@ -217,6 +217,12 @@ public abstract class PartTransmitter> extends Pa PacketHandler.sendPacket(Transmission.CLIENTS_DIM, new PacketTransmitterUpdate().setParams(PacketType.UPDATE, tile()), world().provider.dimensionId); } } + + @Override + public Coord4D getLocation() + { + return Coord4D.get(tile()); + } @Override public void chunkLoad() {} diff --git a/common/mekanism/common/network/PacketPortableTeleport.java b/common/mekanism/common/network/PacketPortableTeleport.java index 12533446e..959b50c7c 100644 --- a/common/mekanism/common/network/PacketPortableTeleport.java +++ b/common/mekanism/common/network/PacketPortableTeleport.java @@ -54,6 +54,11 @@ public class PacketPortableTeleport implements IMekanismPacket teleporter.teleDelay = 5; item.setEnergy(itemstack, item.getEnergy(itemstack) - item.calculateEnergyCost(player, coords)); + + if(player instanceof EntityPlayerMP) + { + ((EntityPlayerMP)player).playerNetServerHandler.ticksForFloatKick = 0; + } if(world.provider.dimensionId != coords.dimensionId) { diff --git a/common/mekanism/common/network/PacketTransmitterUpdate.java b/common/mekanism/common/network/PacketTransmitterUpdate.java index 62d60cb0b..0b89f7d11 100644 --- a/common/mekanism/common/network/PacketTransmitterUpdate.java +++ b/common/mekanism/common/network/PacketTransmitterUpdate.java @@ -73,14 +73,14 @@ public class PacketTransmitterUpdate implements IMekanismPacket if(transmitterType == 0) { - IGridTransmitter transmitter = (IGridTransmitter)world.getBlockTileEntity(x, y, z); + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if(transmitter != null) + if(tileEntity instanceof IGridTransmitter) { - transmitter.refreshTransmitterNetwork(); + ((IGridTransmitter)tileEntity).refreshTransmitterNetwork(); } } - if(transmitterType == 1) + else if(transmitterType == 1) { double powerLevel = dataStream.readDouble(); diff --git a/common/mekanism/common/tile/TileEntityChargepad.java b/common/mekanism/common/tile/TileEntityChargepad.java index c0dbb1b47..f2ec23377 100644 --- a/common/mekanism/common/tile/TileEntityChargepad.java +++ b/common/mekanism/common/tile/TileEntityChargepad.java @@ -54,7 +54,7 @@ public class TileEntityChargepad extends TileEntityElectricBlock implements IAct { isActive = false; - List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord+1, yCoord+0.2, zCoord+1)); + List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord+1, yCoord+0.2, zCoord+1)); for(EntityLivingBase entity : entities) { diff --git a/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java index b7d39d193..deac9b843 100644 --- a/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java +++ b/common/mekanism/common/tile/TileEntityChemicalCrystalizer.java @@ -85,7 +85,7 @@ public class TileEntityChemicalCrystalizer extends TileEntityElectricBlock imple sideOutputs.add(new SideData(EnumColor.DARK_GREEN, new int[] {2})); inventory = new ItemStack[3]; - ejectorComponent = new TileComponentEjector(this, sideOutputs.get(1)); + ejectorComponent = new TileComponentEjector(this, sideOutputs.get(2)); } @Override diff --git a/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java b/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java index 5322a9f76..0d82f8ca8 100644 --- a/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java +++ b/common/mekanism/common/tile/TileEntityElectrolyticSeparator.java @@ -84,7 +84,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp { FluidStack fluid = FluidContainerRegistry.getFluidForFilledItem(inventory[0]); - if(fluidTank.getFluid() == null || fluid.isFluidEqual(fluidTank.getFluid()) && fluidTank.getFluid().amount+fluid.amount <= fluidTank.getCapacity()) + if(fluid != null && fluidTank.getFluid() == null || fluid.isFluidEqual(fluidTank.getFluid()) && fluidTank.getFluid().amount+fluid.amount <= fluidTank.getCapacity()) { fluidTank.fill(fluid, true); diff --git a/common/mekanism/common/tile/TileEntityEnergyCube.java b/common/mekanism/common/tile/TileEntityEnergyCube.java index 48eade9d0..822c8c91b 100644 --- a/common/mekanism/common/tile/TileEntityEnergyCube.java +++ b/common/mekanism/common/tile/TileEntityEnergyCube.java @@ -239,7 +239,7 @@ public class TileEntityEnergyCube extends TileEntityElectricBlock implements IPe if(!worldObj.isRemote) { - int newScale = getScaledEnergyLevel(100); + int newScale = getScaledEnergyLevel(20); if(newScale != prevScale) { diff --git a/common/mekanism/common/tile/TileEntityLogisticalSorter.java b/common/mekanism/common/tile/TileEntityLogisticalSorter.java index d0f21a889..412b4bb2d 100644 --- a/common/mekanism/common/tile/TileEntityLogisticalSorter.java +++ b/common/mekanism/common/tile/TileEntityLogisticalSorter.java @@ -85,9 +85,7 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen { IInventory inventory = (IInventory)back; - InvStack inInventory = null; - boolean hasFilter = false; - EnumColor filterColor = color; + boolean sentItems = false; int min = 0; for(TransporterFilter filter : filters) @@ -98,10 +96,6 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen { if(filter.canFilter(invStack.getStack())) { - filterColor = filter.color; - hasFilter = true; - inInventory = invStack; - if(filter instanceof TItemStackFilter) { TItemStackFilter itemFilter = (TItemStackFilter)filter; @@ -112,57 +106,35 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen } } + ItemStack used = emitItemToTransporter(front, invStack, filter.color, min); + + if(used != null) + { + invStack.use(used.stackSize); + inventory.onInventoryChanged(); + setActive(true); + sentItems = true; + } + break; } } } - if(!hasFilter && autoEject) + if(!sentItems && autoEject) { - inInventory = InventoryUtils.takeTopStack(inventory, ForgeDirection.getOrientation(facing).getOpposite().ordinal(), new FirstFinder()); - } + InvStack invStack = InventoryUtils.takeTopStack(inventory, ForgeDirection.getOrientation(facing).getOpposite().ordinal(), new FirstFinder()); - if(inInventory != null && inInventory.getStack() != null) - { - ItemStack used = null; - - if(front instanceof ILogisticalTransporter) + if(invStack != null && invStack.getStack() != null) { - ILogisticalTransporter transporter = (ILogisticalTransporter)front; + ItemStack used = emitItemToTransporter(front, invStack, null, 0); - if(!roundRobin) + if(used != null) { - ItemStack rejects = TransporterUtils.insert(this, transporter, inInventory.getStack(), filterColor, true, min); - - if(TransporterManager.didEmit(inInventory.getStack(), rejects)) - { - used = TransporterManager.getToUse(inInventory.getStack(), rejects); - } + invStack.use(used.stackSize); + inventory.onInventoryChanged(); + setActive(true); } - else { - ItemStack rejects = TransporterUtils.insertRR(this, transporter, inInventory.getStack(), filterColor, true, min); - - if(TransporterManager.didEmit(inInventory.getStack(), rejects)) - { - used = TransporterManager.getToUse(inInventory.getStack(), rejects); - } - } - } - else if(front instanceof IInventory) - { - ItemStack rejects = InventoryUtils.putStackInInventory((IInventory)front, inInventory.getStack(), facing, false); - - if(TransporterManager.didEmit(inInventory.getStack(), rejects)) - { - used = TransporterManager.getToUse(inInventory.getStack(), rejects); - } - } - - if(used != null) - { - inInventory.use(used.stackSize); - inventory.onInventoryChanged(); - setActive(true); } } @@ -180,6 +152,48 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen } } + /* + * Returns used + */ + public ItemStack emitItemToTransporter(TileEntity front, InvStack inInventory, EnumColor filterColor, int min) + { + ItemStack used = null; + + if(front instanceof ILogisticalTransporter) + { + ILogisticalTransporter transporter = (ILogisticalTransporter)front; + + if(!roundRobin) + { + ItemStack rejects = TransporterUtils.insert(this, transporter, inInventory.getStack(), filterColor, true, min); + + if(TransporterManager.didEmit(inInventory.getStack(), rejects)) + { + used = TransporterManager.getToUse(inInventory.getStack(), rejects); + } + } + else { + ItemStack rejects = TransporterUtils.insertRR(this, transporter, inInventory.getStack(), filterColor, true, min); + + if(TransporterManager.didEmit(inInventory.getStack(), rejects)) + { + used = TransporterManager.getToUse(inInventory.getStack(), rejects); + } + } + } + else if(front instanceof IInventory) + { + ItemStack rejects = InventoryUtils.putStackInInventory((IInventory)front, inInventory.getStack(), facing, false); + + if(TransporterManager.didEmit(inInventory.getStack(), rejects)) + { + used = TransporterManager.getToUse(inInventory.getStack(), rejects); + } + } + + return used; + } + @Override public void writeToNBT(NBTTagCompound nbtTags) { @@ -540,4 +554,4 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen { return true; } -} +} \ No newline at end of file diff --git a/common/mekanism/generators/common/MekanismGenerators.java b/common/mekanism/generators/common/MekanismGenerators.java index e1ba4da48..82e7311dc 100644 --- a/common/mekanism/generators/common/MekanismGenerators.java +++ b/common/mekanism/generators/common/MekanismGenerators.java @@ -35,7 +35,7 @@ import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; -@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "6.0.4", dependencies = "required-after:Mekanism") +@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "6.0.5", dependencies = "required-after:Mekanism") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class MekanismGenerators implements IModule { @@ -46,7 +46,7 @@ public class MekanismGenerators implements IModule public static MekanismGenerators instance; /** MekanismGenerators version number */ - public static Version versionNumber = new Version(6, 0, 4); + public static Version versionNumber = new Version(6, 0, 5); //Items public static Item BioFuel; diff --git a/common/mekanism/generators/common/tile/TileEntityAdvancedSolarGenerator.java b/common/mekanism/generators/common/tile/TileEntityAdvancedSolarGenerator.java index f236202bf..0e84e6ee3 100644 --- a/common/mekanism/generators/common/tile/TileEntityAdvancedSolarGenerator.java +++ b/common/mekanism/generators/common/tile/TileEntityAdvancedSolarGenerator.java @@ -13,7 +13,7 @@ public class TileEntityAdvancedSolarGenerator extends TileEntitySolarGenerator i { public TileEntityAdvancedSolarGenerator() { - super("AdvancedSolarGenerator", 200000, 360, MekanismGenerators.advancedSolarGeneration*2); + super("AdvancedSolarGenerator", 200000, MekanismGenerators.advancedSolarGeneration*2); GENERATION_RATE = MekanismGenerators.advancedSolarGeneration; } diff --git a/common/mekanism/generators/common/tile/TileEntitySolarGenerator.java b/common/mekanism/generators/common/tile/TileEntitySolarGenerator.java index 020407626..2223bda21 100644 --- a/common/mekanism/generators/common/tile/TileEntitySolarGenerator.java +++ b/common/mekanism/generators/common/tile/TileEntitySolarGenerator.java @@ -34,10 +34,9 @@ public class TileEntitySolarGenerator extends TileEntityGenerator inventory = new ItemStack[1]; } - public TileEntitySolarGenerator(String name, double maxEnergy, double output, double generation) + public TileEntitySolarGenerator(String name, double maxEnergy, double output) { super(name, maxEnergy, output); - GENERATION_RATE = generation; inventory = new ItemStack[1]; } diff --git a/common/mekanism/tools/common/MekanismTools.java b/common/mekanism/tools/common/MekanismTools.java index ceb78a4f6..04cc5db27 100644 --- a/common/mekanism/tools/common/MekanismTools.java +++ b/common/mekanism/tools/common/MekanismTools.java @@ -35,7 +35,7 @@ import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; -@Mod(modid = "MekanismTools", name = "MekanismTools", version = "6.0.4", dependencies = "required-after:Mekanism") +@Mod(modid = "MekanismTools", name = "MekanismTools", version = "6.0.5", dependencies = "required-after:Mekanism") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class MekanismTools implements IModule { @@ -43,7 +43,7 @@ public class MekanismTools implements IModule public static MekanismTools instance; /** MekanismTools version number */ - public static Version versionNumber = new Version(6, 0, 4); + public static Version versionNumber = new Version(6, 0, 5); //Enums: Tools public static EnumToolMaterial toolOBSIDIAN; diff --git a/etc/core/mcmod.info b/etc/core/mcmod.info index afa136ecd..7bcf89fe3 100755 --- a/etc/core/mcmod.info +++ b/etc/core/mcmod.info @@ -3,7 +3,7 @@ "modid": "Mekanism", "name": "Mekanism", "description": "Energy, Armor, Tools, Weapons, Machines, Magic.", - "version": "6.0.4", + "version": "6.0.5", "mcversion": "1.6.4", "updateUrl": "", "authors": [ diff --git a/etc/generators/mcmod.info b/etc/generators/mcmod.info index f76a5e47f..c9397f5ee 100755 --- a/etc/generators/mcmod.info +++ b/etc/generators/mcmod.info @@ -3,7 +3,7 @@ "modid": "MekanismGenerators", "name": "MekanismGenerators", "description": "Generators module of Mekanism.", - "version": "6.0.4", + "version": "6.0.5", "mcversion": "1.6.4", "updateUrl": "", "authors": [ diff --git a/etc/tools/mcmod.info b/etc/tools/mcmod.info index bee712dbf..11a935f5a 100755 --- a/etc/tools/mcmod.info +++ b/etc/tools/mcmod.info @@ -3,7 +3,7 @@ "modid": "MekanismTools", "name": "MekanismTools", "description": "Tools module for Mekanism.", - "version": "6.0.4", + "version": "6.0.5", "mcversion": "1.6.4", "updateUrl": "", "authors": [