diff --git a/buildnumber.txt b/buildnumber.txt index 5021ae9c..d3c4f66b 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -53 +54 diff --git a/info.txt b/info.txt index 6168fbf8..46ea6220 100644 --- a/info.txt +++ b/info.txt @@ -47,3 +47,4 @@ Minecraft 1.4.5 @ AssemblyLine_v0.2.3.51.jar AssemblyLine_v0.2.3.51_api.zip @ AssemblyLine_v0.2.3.52.jar AssemblyLine_v0.2.3.52_api.zip @ AssemblyLine_v0.2.3.53.jar AssemblyLine_v0.2.3.53_api.zip +* AssemblyLine_v0.2.3.54.jar AssemblyLine_v0.2.3.54_api.zip diff --git a/models/Armbot.tcn b/models/Armbot.tcn index 0f57a256..108a5bb4 100644 Binary files a/models/Armbot.tcn and b/models/Armbot.tcn differ diff --git a/recommendedversion.txt b/recommendedversion.txt index 6001ac97..46265999 100644 --- a/recommendedversion.txt +++ b/recommendedversion.txt @@ -1 +1 @@ -0.2.2 +0.2.3 diff --git a/resources/assemblyline/textures/armbot.png b/resources/assemblyline/textures/armbot.png new file mode 100644 index 00000000..a1a44b2e Binary files /dev/null and b/resources/assemblyline/textures/armbot.png differ diff --git a/src/minecraft/assemblyline/client/gui/GuiEncoder.java b/src/minecraft/assemblyline/client/gui/GuiEncoder.java index 2926b967..8a55cb1b 100644 --- a/src/minecraft/assemblyline/client/gui/GuiEncoder.java +++ b/src/minecraft/assemblyline/client/gui/GuiEncoder.java @@ -23,7 +23,6 @@ import org.lwjgl.opengl.GL11; import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.network.PacketManager; import assemblyline.common.AssemblyLine; -import assemblyline.common.machine.command.Command; import assemblyline.common.machine.encoder.ContainerEncoder; import assemblyline.common.machine.encoder.IInventoryWatcher; import assemblyline.common.machine.encoder.ItemDisk; diff --git a/src/minecraft/assemblyline/client/model/ModelAngledBelt.java b/src/minecraft/assemblyline/client/model/ModelAngledBelt.java index 76cf9086..f732ea26 100644 --- a/src/minecraft/assemblyline/client/model/ModelAngledBelt.java +++ b/src/minecraft/assemblyline/client/model/ModelAngledBelt.java @@ -13,7 +13,6 @@ package assemblyline.client.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; public class ModelAngledBelt extends ModelBase { diff --git a/src/minecraft/assemblyline/client/model/ModelArmbot.java b/src/minecraft/assemblyline/client/model/ModelArmbot.java index 3e01fb8d..592cc262 100644 --- a/src/minecraft/assemblyline/client/model/ModelArmbot.java +++ b/src/minecraft/assemblyline/client/model/ModelArmbot.java @@ -6,94 +6,113 @@ import net.minecraft.entity.Entity; import org.lwjgl.opengl.GL11; -import assemblyline.common.machine.armbot.TileEntityArmbot; - public class ModelArmbot extends ModelBase { // fields - private ModelRenderer BaseTop; - private ModelRenderer Base; - private ModelRenderer armMountRight; - private ModelRenderer armMountLeft; - private ModelRenderer armLower; - private ModelRenderer armUpper; - private ModelRenderer baseRotation; - private ModelRenderer clampBody; - private ModelRenderer clampBody2; - private ModelRenderer clampClawLower; - private ModelRenderer clampClawLower2; + ModelRenderer baseTop; + ModelRenderer base; + ModelRenderer armMountRight; + ModelRenderer armMountLeft; + ModelRenderer armLower; + ModelRenderer armLower2; + ModelRenderer armLower3; + ModelRenderer armUpper; + ModelRenderer baseRotation; + ModelRenderer clampBody; + ModelRenderer clampBody2; + ModelRenderer clampClawLower; + ModelRenderer clampClawLower2; + ModelRenderer clampClawLower3; public ModelArmbot() { textureWidth = 128; textureHeight = 128; - BaseTop = new ModelRenderer(this, 0, 0); - BaseTop.addBox(-6F, 0F, -6F, 12, 3, 12); - BaseTop.setRotationPoint(0F, 18F, 0F); - BaseTop.setTextureSize(64, 32); - BaseTop.mirror = true; - setRotation(BaseTop, 0F, 0F, 0F); - Base = new ModelRenderer(this, 0, 0); - Base.addBox(-8F, 0F, -8F, 16, 3, 16); - Base.setRotationPoint(0F, 21F, 0F); - Base.setTextureSize(64, 32); - Base.mirror = true; - setRotation(Base, 0F, 0F, 0F); - armMountRight = new ModelRenderer(this, 0, 0); - armMountRight.addBox(-4F, -5F, -1.5F, 2, 5, 3); + baseTop = new ModelRenderer(this, 0, 94); + baseTop.addBox(-6F, 0F, -6F, 12, 3, 12); + baseTop.setRotationPoint(0F, 18F, 0F); + baseTop.setTextureSize(64, 32); + baseTop.mirror = true; + setRotation(baseTop, 0F, 0F, 0F); + base = new ModelRenderer(this, 0, 109); + base.addBox(-8F, 0F, -8F, 16, 3, 16); + base.setRotationPoint(0F, 21F, 0F); + base.setTextureSize(64, 32); + base.mirror = true; + setRotation(base, 0F, 0F, 0F); + armMountRight = new ModelRenderer(this, 12, 85); + armMountRight.addBox(-4F, -5F, -2F, 2, 5, 4); armMountRight.setRotationPoint(0F, 17F, 0F); armMountRight.setTextureSize(64, 32); armMountRight.mirror = true; setRotation(armMountRight, 0F, 0F, 0F); - armMountLeft = new ModelRenderer(this, 0, 0); - armMountLeft.addBox(2F, -5F, -1.5F, 2, 5, 3); + armMountLeft = new ModelRenderer(this, 0, 85); + armMountLeft.addBox(2F, -5F, -2F, 2, 5, 4); armMountLeft.setRotationPoint(0F, 17F, 0F); armMountLeft.setTextureSize(64, 32); armMountLeft.mirror = true; setRotation(armMountLeft, 0F, 0F, 0F); - armLower = new ModelRenderer(this, 0, 0); - armLower.addBox(-2F, -15F, -2.5F, 4, 16, 5); + armLower = new ModelRenderer(this, 116, 0); + armLower.addBox(0.3F, -15F, -1.5F, 2, 16, 4); armLower.setRotationPoint(0F, 14F, 0F); armLower.setTextureSize(64, 32); armLower.mirror = true; setRotation(armLower, 0.5235988F, 0F, 0F); - armUpper = new ModelRenderer(this, 0, 0); - armUpper.addBox(-1.5F, -15F, -2F, 3, 16, 4); + armLower2 = new ModelRenderer(this, 104, 0); + armLower2.addBox(-2.3F, -15F, -1.5F, 2, 16, 4); + armLower2.setRotationPoint(0F, 14F, 0F); + armLower2.setTextureSize(64, 32); + armLower2.mirror = true; + setRotation(armLower2, 0.5235988F, 0F, 0F); + armLower3 = new ModelRenderer(this, 92, 0); + armLower3.addBox(-1F, -14F, -2F, 2, 14, 4); + armLower3.setRotationPoint(0F, 14F, 0F); + armLower3.setTextureSize(64, 32); + armLower3.mirror = true; + setRotation(armLower3, 0.5235988F, 0F, 0F); + armUpper = new ModelRenderer(this, 0, 70); + armUpper.addBox(-1F, -10F, -1.5F, 2, 12, 3); armUpper.setRotationPoint(0F, 2F, -7F); armUpper.setTextureSize(64, 32); armUpper.mirror = true; - setRotation(armUpper, 2.007129F, 0F, 0F); - baseRotation = new ModelRenderer(this, 0, 0); + setRotation(armUpper, 2.513274F, 0F, 0F); + baseRotation = new ModelRenderer(this, 0, 60); baseRotation.addBox(-4.5F, 0F, -4.5F, 9, 1, 9); baseRotation.setRotationPoint(0F, 17F, 0F); baseRotation.setTextureSize(64, 32); baseRotation.mirror = true; setRotation(baseRotation, 0F, 0F, 0F); - clampBody = new ModelRenderer(this, 0, 0); - clampBody.addBox(-2F, -17F, -2.5F, 4, 2, 5); + clampBody = new ModelRenderer(this, 0, 7); + clampBody.addBox(-1.5F, -12F, -2.5F, 3, 2, 5); clampBody.setRotationPoint(0F, 2F, -7F); clampBody.setTextureSize(64, 32); clampBody.mirror = true; - setRotation(clampBody, 2.007129F, 0F, 0F); - clampBody2 = new ModelRenderer(this, 0, 0); - clampBody2.addBox(-1.5F, -19F, -1F, 3, 2, 2); + setRotation(clampBody, 2.513274F, 0F, 0F); + clampBody2 = new ModelRenderer(this, 0, 56); + clampBody2.addBox(-1F, -14F, -1F, 2, 2, 2); clampBody2.setRotationPoint(0F, 2F, -7F); clampBody2.setTextureSize(64, 32); clampBody2.mirror = true; - setRotation(clampBody2, 2.007129F, 0F, 0F); - clampClawLower = new ModelRenderer(this, 0, 0); - clampClawLower.addBox(-2.5F, -5F, -1F, 5, 6, 1); - clampClawLower.setRotationPoint(0F, 10F, -23F); + setRotation(clampBody2, 2.513274F, 0F, 0F); + clampClawLower = new ModelRenderer(this, 0, 25); + clampClawLower.addBox(-1F, -4F, -1F, 2, 5, 1); + clampClawLower.setRotationPoint(0F, 13F, -15F); clampClawLower.setTextureSize(64, 32); clampClawLower.mirror = true; - setRotation(clampClawLower, 2.007129F, 0F, 0F); - clampClawLower2 = new ModelRenderer(this, 0, 0); - clampClawLower2.addBox(-2.5F, -5F, 1F, 5, 6, 1); - clampClawLower2.setRotationPoint(0F, 10F, -23F); + setRotation(clampClawLower, 2.9147F, 0F, 0F); + clampClawLower2 = new ModelRenderer(this, 0, 31); + clampClawLower2.addBox(-1.2F, -3.5F, 0F, 1, 6, 1); + clampClawLower2.setRotationPoint(0F, 14F, -16F); clampClawLower2.setTextureSize(64, 32); clampClawLower2.mirror = true; - setRotation(clampClawLower2, 2.007129F, 0F, 0F); + setRotation(clampClawLower2, 2.897247F, 0F, 0F); + clampClawLower3 = new ModelRenderer(this, 0, 0); + clampClawLower3.addBox(0.2F, -3.5F, 0F, 1, 6, 1); + clampClawLower3.setRotationPoint(0F, 14F, -16F); + clampClawLower3.setTextureSize(64, 32); + clampClawLower3.mirror = true; + setRotation(clampClawLower3, 2.897247F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) @@ -131,8 +150,8 @@ public class ModelArmbot extends ModelBase * clampClawLower2.rotateAngleY = armBot.rotationYaw; */ - BaseTop.render(f5); - Base.render(f5); + baseTop.render(f5); + base.render(f5); GL11.glPushMatrix(); GL11.glRotatef(rotationYaw, 0, 1, 0); armMountRight.render(f5); @@ -154,5 +173,4 @@ public class ModelArmbot extends ModelBase model.rotateAngleY = y; model.rotateAngleZ = z; } - } diff --git a/src/minecraft/assemblyline/client/render/RenderArmbot.java b/src/minecraft/assemblyline/client/render/RenderArmbot.java index 186d52d3..fa7cd5c9 100644 --- a/src/minecraft/assemblyline/client/render/RenderArmbot.java +++ b/src/minecraft/assemblyline/client/render/RenderArmbot.java @@ -1,16 +1,10 @@ package assemblyline.client.render; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.RenderEngine; -import net.minecraft.client.renderer.RenderGlobal; -import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import org.lwjgl.opengl.GL11; -import cpw.mods.fml.client.registry.RenderingRegistry; - import assemblyline.client.model.ModelArmbot; import assemblyline.common.AssemblyLine; import assemblyline.common.machine.armbot.TileEntityArmbot; diff --git a/src/minecraft/assemblyline/common/machine/BlockManipulator.java b/src/minecraft/assemblyline/common/machine/BlockManipulator.java index 122fb285..3e621033 100644 --- a/src/minecraft/assemblyline/common/machine/BlockManipulator.java +++ b/src/minecraft/assemblyline/common/machine/BlockManipulator.java @@ -1,11 +1,8 @@ package assemblyline.common.machine; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import universalelectricity.core.UniversalElectricity; import assemblyline.client.render.BlockRenderingHandler; diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java b/src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java index a0fb3255..ac5c5dbc 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java @@ -3,10 +3,8 @@ package assemblyline.common.machine; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.electricity.ElectricityConnections; import universalelectricity.core.electricity.ElectricityNetwork; import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.tile.TileEntityElectricityReceiver; import cpw.mods.fml.common.FMLCommonHandler; @@ -69,32 +67,13 @@ public abstract class TileEntityAssemblyNetwork extends TileEntityElectricityRec if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { - if (ElectricityConnections.getDirections(this) != null) + if (this.wattsReceived < this.getRequest().getWatts()) { - for (Object obj : ElectricityConnections.getDirections(this)) - { - if (obj != null) - { - ForgeDirection inputDirection = (ForgeDirection) obj; - TileEntity inputTile = Vector3.getTileEntityFromSide(this.worldObj, new Vector3(this), inputDirection); - - ElectricityNetwork network = ElectricityNetwork.getNetworkFromTileEntity(inputTile, inputDirection); - - if (network != null) - { - if (this.wattsReceived >= this.getRequest().getWatts()) - { - network.stopRequesting(this); - } - else - { - network.startRequesting(this, this.getRequest()); - this.wattsReceived += network.consumeElectricity(this).getWatts() * 2; - } - } - } - - } + this.wattsReceived += ElectricityNetwork.consumeFromMultipleSides(this, this.getRequest()).getWatts() * 2; + } + else + { + ElectricityNetwork.consumeFromMultipleSides(this, new ElectricityPack()); } } @@ -129,12 +108,6 @@ public abstract class TileEntityAssemblyNetwork extends TileEntityElectricityRec } - @Override - public double getVoltage() - { - return 20; - } - protected ElectricityPack getRequest() { return new ElectricityPack(15, this.getVoltage()); diff --git a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java index ea126fcc..58352c2a 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java @@ -121,15 +121,6 @@ public class TileEntityRejector extends TileEntityFilterable return false; } - /** - * UE methods - */ - @Override - public double getVoltage() - { - return 120; - } - /** * NBT Data */ diff --git a/src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java b/src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java index 1e3e7425..3625791c 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java @@ -60,12 +60,6 @@ public class TileEntityRoboticSorter extends TileEntityElectricityReceiver imple return 4; } - @Override - public double getVoltage() - { - return 120; - } - /** * Inventory functions. */ diff --git a/src/minecraft/assemblyline/common/machine/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/machine/armbot/TileEntityArmbot.java index ebbba133..05cc5ace 100644 --- a/src/minecraft/assemblyline/common/machine/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/machine/armbot/TileEntityArmbot.java @@ -6,8 +6,8 @@ import java.io.IOException; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; -import java.util.Random; +import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -16,7 +16,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.Packet132TileEntityData; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; @@ -84,6 +83,20 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult { Vector3 handPosition = this.getHandPosition(); + /** + * Break the block if the hand hits a solid block. + */ + Block block = Block.blocksList[handPosition.getBlockID(this.worldObj)]; + + if (block != null) + { + if (Block.isNormalCube(block.blockID)) + { + block.dropBlockAsItem(this.worldObj, this.xCoord, this.yCoord, this.zCoord, handPosition.getBlockMetadata(this.worldObj), 0); + handPosition.setBlockWithNotify(this.worldObj, 0); + } + } + for (Entity entity : this.grabbedEntities) { entity.setPosition(handPosition.x, handPosition.y, handPosition.z); @@ -149,7 +162,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult Vector3 position = new Vector3(this); position.add(0.5); // The distance of the position relative to the main position. - double distance = 1.7f; + double distance = 1f; Vector3 delta = new Vector3(); // The delta Y of the hand. delta.y = Math.sin(Math.toRadians(this.rotationPitch)) * distance; @@ -159,18 +172,9 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult delta.x = Math.sin(Math.toRadians(-this.rotationYaw)) * dH; delta.z = Math.cos(Math.toRadians(-this.rotationYaw)) * dH; position.add(delta); - // TODO: Use Smoke Spawning to Determine Hand Calculation Position. Delete when done - // developing this part. - // this.worldObj.spawnParticle("smoke", position.x, position.y, position.z, 0, 0, 0); return position; } - @Override - public double getVoltage() - { - return 120; - } - @Override public Packet getDescriptionPacket() { diff --git a/src/minecraft/assemblyline/common/machine/command/CommandDrop.java b/src/minecraft/assemblyline/common/machine/command/CommandDrop.java index ac9e3eb3..7cb46d4c 100644 --- a/src/minecraft/assemblyline/common/machine/command/CommandDrop.java +++ b/src/minecraft/assemblyline/common/machine/command/CommandDrop.java @@ -1,9 +1,5 @@ package assemblyline.common.machine.command; -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.util.AxisAlignedBB; public class CommandDrop extends Command { diff --git a/src/minecraft/assemblyline/common/machine/command/CommandIdle.java b/src/minecraft/assemblyline/common/machine/command/CommandIdle.java index b6670b68..fe1bf884 100644 --- a/src/minecraft/assemblyline/common/machine/command/CommandIdle.java +++ b/src/minecraft/assemblyline/common/machine/command/CommandIdle.java @@ -1,6 +1,5 @@ package assemblyline.common.machine.command; -import assemblyline.common.machine.armbot.TileEntityArmbot; public class CommandIdle extends Command { diff --git a/src/minecraft/assemblyline/common/machine/command/CommandManager.java b/src/minecraft/assemblyline/common/machine/command/CommandManager.java index 0bfe09be..df9fbb68 100644 --- a/src/minecraft/assemblyline/common/machine/command/CommandManager.java +++ b/src/minecraft/assemblyline/common/machine/command/CommandManager.java @@ -28,8 +28,6 @@ public class CommandManager { if (this.tasks.size() > 0) { - System.out.println(this.lastTask + " vs " + currentTask + ": " + this.tasks.size()); - if (this.currentTask < this.tasks.size()) { if (this.currentTask < 0) diff --git a/src/minecraft/assemblyline/common/machine/command/CommandReturn.java b/src/minecraft/assemblyline/common/machine/command/CommandReturn.java index 6931652e..0036f504 100644 --- a/src/minecraft/assemblyline/common/machine/command/CommandReturn.java +++ b/src/minecraft/assemblyline/common/machine/command/CommandReturn.java @@ -1,6 +1,5 @@ package assemblyline.common.machine.command; -import assemblyline.common.machine.armbot.TileEntityArmbot; public class CommandReturn extends Command { diff --git a/src/minecraft/assemblyline/common/machine/command/CommandRotate.java b/src/minecraft/assemblyline/common/machine/command/CommandRotate.java index f09aa263..60f9ee92 100644 --- a/src/minecraft/assemblyline/common/machine/command/CommandRotate.java +++ b/src/minecraft/assemblyline/common/machine/command/CommandRotate.java @@ -1,8 +1,5 @@ package assemblyline.common.machine.command; -import assemblyline.common.AssemblyLine; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.relauncher.Side; /** * Rotates the armbot to a specific direction. If not specified, it will turn right. diff --git a/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java b/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java index 1d6bf634..41f2c0eb 100644 --- a/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java +++ b/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java @@ -1,22 +1,11 @@ package assemblyline.common.machine.imprinter; -import java.util.ArrayList; -import java.util.List; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.ShapedRecipes; -import net.minecraft.item.crafting.ShapelessRecipes; -import net.minecraftforge.oredict.ShapedOreRecipe; -import net.minecraftforge.oredict.ShapelessOreRecipe; import assemblyline.common.AssemblyLine; -import assemblyline.common.Pair; -import cpw.mods.fml.relauncher.ReflectionHelper; public class ContainerImprinter extends Container implements ISlotWatcher { diff --git a/src/minecraft/assemblyline/common/machine/imprinter/SlotCustom.java b/src/minecraft/assemblyline/common/machine/imprinter/SlotCustom.java index 18141dcc..e97d7e42 100644 --- a/src/minecraft/assemblyline/common/machine/imprinter/SlotCustom.java +++ b/src/minecraft/assemblyline/common/machine/imprinter/SlotCustom.java @@ -3,7 +3,6 @@ package assemblyline.common.machine.imprinter; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import assemblyline.common.AssemblyLine; public class SlotCustom extends Slot { diff --git a/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java b/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java index 41d49501..f98fab09 100644 --- a/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java +++ b/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java @@ -39,7 +39,8 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv @Override public int getStartInventorySide(ForgeDirection side) { - if (side == ForgeDirection.UP || side == ForgeDirection.DOWN) { return 3; } + if (side == ForgeDirection.UP || side == ForgeDirection.DOWN) + return 3; return START_INVENTORY; } diff --git a/src/minecraft/universalelectricity/core/UniversalElectricity.java b/src/minecraft/universalelectricity/core/UniversalElectricity.java index 9b19a226..2752584d 100644 --- a/src/minecraft/universalelectricity/core/UniversalElectricity.java +++ b/src/minecraft/universalelectricity/core/UniversalElectricity.java @@ -31,7 +31,7 @@ public class UniversalElectricity */ public static final int MAJOR_VERSION = 1; public static final int MINOR_VERSION = 2; - public static final int REVISION_VERSION = 1; + public static final int REVISION_VERSION = 3; public static final String VERSION = MAJOR_VERSION + "." + MINOR_VERSION + "." + REVISION_VERSION; /** @@ -42,10 +42,10 @@ public class UniversalElectricity /** * Conversion ratios between Buildcraft and Industrialcraft energy. */ - // EU to Watts ratio - public static double IC2_RATIO = 10; - // MJ to Watts ratio. - public static double BC3_RATIO = 85; + // The amount of UE Joules equivalent to IC2 EU + public static double IC2_RATIO = 50; + // The amount of UE Joules equivalent to BC Minecraft Joules + public static double BC3_RATIO = 500; public static double TO_IC2_RATIO = 1 / IC2_RATIO; public static double TO_BC_RATIO = 1 / BC3_RATIO; diff --git a/src/minecraft/universalelectricity/core/electricity/ElectricityNetwork.java b/src/minecraft/universalelectricity/core/electricity/ElectricityNetwork.java index 6e7babf3..b27e9230 100644 --- a/src/minecraft/universalelectricity/core/electricity/ElectricityNetwork.java +++ b/src/minecraft/universalelectricity/core/electricity/ElectricityNetwork.java @@ -1,6 +1,7 @@ package universalelectricity.core.electricity; import java.util.ArrayList; +import java.util.EnumSet; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -9,6 +10,7 @@ import java.util.Map; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.implement.IConductor; +import universalelectricity.core.vector.Vector3; import cpw.mods.fml.common.FMLLog; public class ElectricityNetwork @@ -202,7 +204,8 @@ public class ElectricityNetwork if (this.consumers.containsKey(tileEntity) && tileRequest != null) { - // Calculate the electricity this tile entity is receiving in percentage. + // Calculate the electricity this tile entity is receiving in + // percentage. totalElectricity = this.getProduced(); if (totalElectricity.getWatts() > 0) @@ -388,4 +391,132 @@ public class ElectricityNetwork return null; } + + /** + * @param tileEntity - The TileEntity's sides. + * @param approachingDirection - The directions that can be connected. + * @return A list of networks from all specified sides. There will be no repeated + * ElectricityNetworks and it will never return null. + */ + public static List getNetworksFromMultipleSides(TileEntity tileEntity, EnumSet approachingDirection) + { + final List connectedNetworks = new ArrayList(); + + for (int i = 0; i < 6; i++) + { + ForgeDirection direction = ForgeDirection.getOrientation(i); + + if (approachingDirection.contains(direction)) + { + Vector3 position = new Vector3(tileEntity); + position.modifyPositionFromSide(direction); + TileEntity outputConductor = position.getTileEntity(tileEntity.worldObj); + ElectricityNetwork electricityNetwork = getNetworkFromTileEntity(outputConductor, direction); + + if (electricityNetwork != null && !connectedNetworks.contains(connectedNetworks)) + { + connectedNetworks.add(electricityNetwork); + } + } + } + + return connectedNetworks; + } + + /** + * Consumes electricity from all specified sides. Use this as a simple helper function. + * + * @param tileEntity- The TileEntity consuming the electricity. + * @param approachDirection - The sides in which you can connect. + * @param requestPack - The amount of electricity to be requested. + * @return The consumed ElectricityPack. + */ + public static ElectricityPack consumeFromMultipleSides(TileEntity tileEntity, EnumSet approachingDirection, ElectricityPack requestPack) + { + ElectricityPack consumedPack = new ElectricityPack(); + + if (tileEntity != null && approachingDirection != null) + { + final List connectedNetworks = getNetworksFromMultipleSides(tileEntity, approachingDirection); + + if (connectedNetworks.size() > 0) + { + /** + * Requests an even amount of electricity from all sides. + */ + double wattsPerSide = (requestPack.getWatts() / connectedNetworks.size()); + double voltage = requestPack.voltage; + + for (ElectricityNetwork network : connectedNetworks) + { + if (wattsPerSide > 0 && requestPack.getWatts() > 0) + { + network.startRequesting(tileEntity, wattsPerSide / voltage, voltage); + ElectricityPack receivedPack = network.consumeElectricity(tileEntity); + consumedPack.amperes += receivedPack.amperes; + consumedPack.voltage = Math.max(consumedPack.voltage, receivedPack.voltage); + } + else + { + network.stopRequesting(tileEntity); + } + } + } + } + + return consumedPack; + } + + public static ElectricityPack consumeFromMultipleSides(TileEntity tileEntity, ElectricityPack electricityPack) + { + return consumeFromMultipleSides(tileEntity, ElectricityConnections.getDirections(tileEntity), electricityPack); + } + + /** + * Produces electricity from all specified sides. Use this as a simple helper function. + * + * @param tileEntity- The TileEntity consuming the electricity. + * @param approachDirection - The sides in which you can connect to. + * @param producePack - The amount of electricity to be produced. + * @return What remained in the electricity pack. + */ + public static ElectricityPack produceFromMultipleSides(TileEntity tileEntity, EnumSet approachingDirection, ElectricityPack producingPack) + { + ElectricityPack remainingElectricity = producingPack.clone(); + + if (tileEntity != null && approachingDirection != null) + { + final List connectedNetworks = getNetworksFromMultipleSides(tileEntity, approachingDirection); + + if (connectedNetworks.size() > 0) + { + /** + * Requests an even amount of electricity from all sides. + */ + double wattsPerSide = (producingPack.getWatts() / connectedNetworks.size()); + double voltage = producingPack.voltage; + + for (ElectricityNetwork network : connectedNetworks) + { + if (wattsPerSide > 0 && producingPack.getWatts() > 0) + { + double amperes = wattsPerSide / voltage; + network.startProducing(tileEntity, amperes, voltage); + remainingElectricity.amperes -= amperes; + } + else + { + network.stopProducing(tileEntity); + } + } + } + } + + return remainingElectricity; + } + + public static ElectricityPack produceFromMultipleSides(TileEntity tileEntity, ElectricityPack electricityPack) + { + return produceFromMultipleSides(tileEntity, ElectricityConnections.getDirections(tileEntity), electricityPack); + } } diff --git a/src/minecraft/universalelectricity/core/implement/IVoltage.java b/src/minecraft/universalelectricity/core/implement/IVoltage.java index f178e06a..8d4af74f 100644 --- a/src/minecraft/universalelectricity/core/implement/IVoltage.java +++ b/src/minecraft/universalelectricity/core/implement/IVoltage.java @@ -11,7 +11,8 @@ public interface IVoltage /** * Gets the voltage of this object. * + * @param data - The data, possibly an ItemStack if this is an electric item. * @return The amount of volts. E.g 120v or 240v */ - public double getVoltage(); + public double getVoltage(Object... data); } diff --git a/src/minecraft/universalelectricity/prefab/UpdateNotifier.java b/src/minecraft/universalelectricity/prefab/UpdateNotifier.java index dd44243c..08a7dc44 100644 --- a/src/minecraft/universalelectricity/prefab/UpdateNotifier.java +++ b/src/minecraft/universalelectricity/prefab/UpdateNotifier.java @@ -3,8 +3,10 @@ package universalelectricity.prefab; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import net.minecraft.entity.player.EntityPlayer; @@ -23,7 +25,12 @@ public class UpdateNotifier implements IPlayerTracker public static final UpdateNotifier INSTANCE = new UpdateNotifier(); public static boolean isInitialized = false; - public static final HashMap modsToUpdate = new HashMap(); + public static final HashMap MODS_TO_UPDATE = new HashMap(); + + /** + * Add variables to this array if you want extra custom notifications to be output. + */ + public static final List NOTIFICATIONS = new ArrayList(); /** * Call this in your FML Pre-Initialize Event. @@ -45,7 +52,7 @@ public class UpdateNotifier implements IPlayerTracker if (latestUpdate != null && latestUpdate != "" && !currentVersion.trim().equals(latestUpdate.trim())) { - modsToUpdate.put(modName, latestUpdate.trim()); + MODS_TO_UPDATE.put(modName, latestUpdate.trim()); } return latestUpdate; @@ -76,19 +83,26 @@ public class UpdateNotifier implements IPlayerTracker @Override public void onPlayerLogin(EntityPlayer player) { - if (modsToUpdate.size() > 0) + if (MODS_TO_UPDATE.size() > 0) { - String notification = "You have " + modsToUpdate.size() + " mod(s) that needs to be updated: "; + // Output Notification Message. + String updateNotification = "You have " + MODS_TO_UPDATE.size() + " mod(s) that needs to be updated: "; - Iterator it = modsToUpdate.entrySet().iterator(); + Iterator it = MODS_TO_UPDATE.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); - notification += pairs.getKey() + " [" + pairs.getValue() + "] "; + updateNotification += pairs.getKey() + " [" + pairs.getValue() + "] "; } + player.addChatMessage(updateNotification); + } + + // Output Extra Notifications + for (String notification : NOTIFICATIONS) + { player.addChatMessage(notification); } } diff --git a/src/minecraft/universalelectricity/prefab/network/PacketManager.java b/src/minecraft/universalelectricity/prefab/network/PacketManager.java index 81fad0cf..69f7f780 100644 --- a/src/minecraft/universalelectricity/prefab/network/PacketManager.java +++ b/src/minecraft/universalelectricity/prefab/network/PacketManager.java @@ -17,7 +17,6 @@ import universalelectricity.core.vector.Vector3; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteStreams; -import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.Player; diff --git a/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityProducer.java b/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityProducer.java index 996220d7..b0469184 100644 --- a/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityProducer.java +++ b/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityProducer.java @@ -27,7 +27,7 @@ public abstract class TileEntityElectricityProducer extends TileEntityDisableabl } @Override - public double getVoltage() + public double getVoltage(Object... data) { return 120; } diff --git a/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityReceiver.java b/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityReceiver.java index eda39a7e..8aa6f0c6 100644 --- a/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityReceiver.java +++ b/src/minecraft/universalelectricity/prefab/tile/TileEntityElectricityReceiver.java @@ -27,7 +27,7 @@ public abstract class TileEntityElectricityReceiver extends TileEntityDisableabl } @Override - public double getVoltage() + public double getVoltage(Object... data) { return 120; }