AL 0.2.3 Release!

This commit is contained in:
Henry Mao 2013-01-13 15:51:43 +08:00
parent 13cba0dbcd
commit ceb784fa26
29 changed files with 258 additions and 165 deletions

View file

@ -1 +1 @@
53 54

View file

@ -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.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.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.53.jar AssemblyLine_v0.2.3.53_api.zip
* AssemblyLine_v0.2.3.54.jar AssemblyLine_v0.2.3.54_api.zip

Binary file not shown.

View file

@ -1 +1 @@
0.2.2 0.2.3

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -23,7 +23,6 @@ import org.lwjgl.opengl.GL11;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.command.Command;
import assemblyline.common.machine.encoder.ContainerEncoder; import assemblyline.common.machine.encoder.ContainerEncoder;
import assemblyline.common.machine.encoder.IInventoryWatcher; import assemblyline.common.machine.encoder.IInventoryWatcher;
import assemblyline.common.machine.encoder.ItemDisk; import assemblyline.common.machine.encoder.ItemDisk;

View file

@ -13,7 +13,6 @@ package assemblyline.client.model;
import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelAngledBelt extends ModelBase public class ModelAngledBelt extends ModelBase
{ {

View file

@ -6,94 +6,113 @@ import net.minecraft.entity.Entity;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import assemblyline.common.machine.armbot.TileEntityArmbot;
public class ModelArmbot extends ModelBase public class ModelArmbot extends ModelBase
{ {
// fields // fields
private ModelRenderer BaseTop; ModelRenderer baseTop;
private ModelRenderer Base; ModelRenderer base;
private ModelRenderer armMountRight; ModelRenderer armMountRight;
private ModelRenderer armMountLeft; ModelRenderer armMountLeft;
private ModelRenderer armLower; ModelRenderer armLower;
private ModelRenderer armUpper; ModelRenderer armLower2;
private ModelRenderer baseRotation; ModelRenderer armLower3;
private ModelRenderer clampBody; ModelRenderer armUpper;
private ModelRenderer clampBody2; ModelRenderer baseRotation;
private ModelRenderer clampClawLower; ModelRenderer clampBody;
private ModelRenderer clampClawLower2; ModelRenderer clampBody2;
ModelRenderer clampClawLower;
ModelRenderer clampClawLower2;
ModelRenderer clampClawLower3;
public ModelArmbot() public ModelArmbot()
{ {
textureWidth = 128; textureWidth = 128;
textureHeight = 128; textureHeight = 128;
BaseTop = new ModelRenderer(this, 0, 0); baseTop = new ModelRenderer(this, 0, 94);
BaseTop.addBox(-6F, 0F, -6F, 12, 3, 12); baseTop.addBox(-6F, 0F, -6F, 12, 3, 12);
BaseTop.setRotationPoint(0F, 18F, 0F); baseTop.setRotationPoint(0F, 18F, 0F);
BaseTop.setTextureSize(64, 32); baseTop.setTextureSize(64, 32);
BaseTop.mirror = true; baseTop.mirror = true;
setRotation(BaseTop, 0F, 0F, 0F); setRotation(baseTop, 0F, 0F, 0F);
Base = new ModelRenderer(this, 0, 0); base = new ModelRenderer(this, 0, 109);
Base.addBox(-8F, 0F, -8F, 16, 3, 16); base.addBox(-8F, 0F, -8F, 16, 3, 16);
Base.setRotationPoint(0F, 21F, 0F); base.setRotationPoint(0F, 21F, 0F);
Base.setTextureSize(64, 32); base.setTextureSize(64, 32);
Base.mirror = true; base.mirror = true;
setRotation(Base, 0F, 0F, 0F); setRotation(base, 0F, 0F, 0F);
armMountRight = new ModelRenderer(this, 0, 0); armMountRight = new ModelRenderer(this, 12, 85);
armMountRight.addBox(-4F, -5F, -1.5F, 2, 5, 3); armMountRight.addBox(-4F, -5F, -2F, 2, 5, 4);
armMountRight.setRotationPoint(0F, 17F, 0F); armMountRight.setRotationPoint(0F, 17F, 0F);
armMountRight.setTextureSize(64, 32); armMountRight.setTextureSize(64, 32);
armMountRight.mirror = true; armMountRight.mirror = true;
setRotation(armMountRight, 0F, 0F, 0F); setRotation(armMountRight, 0F, 0F, 0F);
armMountLeft = new ModelRenderer(this, 0, 0); armMountLeft = new ModelRenderer(this, 0, 85);
armMountLeft.addBox(2F, -5F, -1.5F, 2, 5, 3); armMountLeft.addBox(2F, -5F, -2F, 2, 5, 4);
armMountLeft.setRotationPoint(0F, 17F, 0F); armMountLeft.setRotationPoint(0F, 17F, 0F);
armMountLeft.setTextureSize(64, 32); armMountLeft.setTextureSize(64, 32);
armMountLeft.mirror = true; armMountLeft.mirror = true;
setRotation(armMountLeft, 0F, 0F, 0F); setRotation(armMountLeft, 0F, 0F, 0F);
armLower = new ModelRenderer(this, 0, 0); armLower = new ModelRenderer(this, 116, 0);
armLower.addBox(-2F, -15F, -2.5F, 4, 16, 5); armLower.addBox(0.3F, -15F, -1.5F, 2, 16, 4);
armLower.setRotationPoint(0F, 14F, 0F); armLower.setRotationPoint(0F, 14F, 0F);
armLower.setTextureSize(64, 32); armLower.setTextureSize(64, 32);
armLower.mirror = true; armLower.mirror = true;
setRotation(armLower, 0.5235988F, 0F, 0F); setRotation(armLower, 0.5235988F, 0F, 0F);
armUpper = new ModelRenderer(this, 0, 0); armLower2 = new ModelRenderer(this, 104, 0);
armUpper.addBox(-1.5F, -15F, -2F, 3, 16, 4); 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.setRotationPoint(0F, 2F, -7F);
armUpper.setTextureSize(64, 32); armUpper.setTextureSize(64, 32);
armUpper.mirror = true; armUpper.mirror = true;
setRotation(armUpper, 2.007129F, 0F, 0F); setRotation(armUpper, 2.513274F, 0F, 0F);
baseRotation = new ModelRenderer(this, 0, 0); baseRotation = new ModelRenderer(this, 0, 60);
baseRotation.addBox(-4.5F, 0F, -4.5F, 9, 1, 9); baseRotation.addBox(-4.5F, 0F, -4.5F, 9, 1, 9);
baseRotation.setRotationPoint(0F, 17F, 0F); baseRotation.setRotationPoint(0F, 17F, 0F);
baseRotation.setTextureSize(64, 32); baseRotation.setTextureSize(64, 32);
baseRotation.mirror = true; baseRotation.mirror = true;
setRotation(baseRotation, 0F, 0F, 0F); setRotation(baseRotation, 0F, 0F, 0F);
clampBody = new ModelRenderer(this, 0, 0); clampBody = new ModelRenderer(this, 0, 7);
clampBody.addBox(-2F, -17F, -2.5F, 4, 2, 5); clampBody.addBox(-1.5F, -12F, -2.5F, 3, 2, 5);
clampBody.setRotationPoint(0F, 2F, -7F); clampBody.setRotationPoint(0F, 2F, -7F);
clampBody.setTextureSize(64, 32); clampBody.setTextureSize(64, 32);
clampBody.mirror = true; clampBody.mirror = true;
setRotation(clampBody, 2.007129F, 0F, 0F); setRotation(clampBody, 2.513274F, 0F, 0F);
clampBody2 = new ModelRenderer(this, 0, 0); clampBody2 = new ModelRenderer(this, 0, 56);
clampBody2.addBox(-1.5F, -19F, -1F, 3, 2, 2); clampBody2.addBox(-1F, -14F, -1F, 2, 2, 2);
clampBody2.setRotationPoint(0F, 2F, -7F); clampBody2.setRotationPoint(0F, 2F, -7F);
clampBody2.setTextureSize(64, 32); clampBody2.setTextureSize(64, 32);
clampBody2.mirror = true; clampBody2.mirror = true;
setRotation(clampBody2, 2.007129F, 0F, 0F); setRotation(clampBody2, 2.513274F, 0F, 0F);
clampClawLower = new ModelRenderer(this, 0, 0); clampClawLower = new ModelRenderer(this, 0, 25);
clampClawLower.addBox(-2.5F, -5F, -1F, 5, 6, 1); clampClawLower.addBox(-1F, -4F, -1F, 2, 5, 1);
clampClawLower.setRotationPoint(0F, 10F, -23F); clampClawLower.setRotationPoint(0F, 13F, -15F);
clampClawLower.setTextureSize(64, 32); clampClawLower.setTextureSize(64, 32);
clampClawLower.mirror = true; clampClawLower.mirror = true;
setRotation(clampClawLower, 2.007129F, 0F, 0F); setRotation(clampClawLower, 2.9147F, 0F, 0F);
clampClawLower2 = new ModelRenderer(this, 0, 0); clampClawLower2 = new ModelRenderer(this, 0, 31);
clampClawLower2.addBox(-2.5F, -5F, 1F, 5, 6, 1); clampClawLower2.addBox(-1.2F, -3.5F, 0F, 1, 6, 1);
clampClawLower2.setRotationPoint(0F, 10F, -23F); clampClawLower2.setRotationPoint(0F, 14F, -16F);
clampClawLower2.setTextureSize(64, 32); clampClawLower2.setTextureSize(64, 32);
clampClawLower2.mirror = true; 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) 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; * clampClawLower2.rotateAngleY = armBot.rotationYaw;
*/ */
BaseTop.render(f5); baseTop.render(f5);
Base.render(f5); base.render(f5);
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glRotatef(rotationYaw, 0, 1, 0); GL11.glRotatef(rotationYaw, 0, 1, 0);
armMountRight.render(f5); armMountRight.render(f5);
@ -154,5 +173,4 @@ public class ModelArmbot extends ModelBase
model.rotateAngleY = y; model.rotateAngleY = y;
model.rotateAngleZ = z; model.rotateAngleZ = z;
} }
} }

View file

@ -1,16 +1,10 @@
package assemblyline.client.render; 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.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import cpw.mods.fml.client.registry.RenderingRegistry;
import assemblyline.client.model.ModelArmbot; import assemblyline.client.model.ModelArmbot;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.armbot.TileEntityArmbot; import assemblyline.common.machine.armbot.TileEntityArmbot;

View file

@ -1,11 +1,8 @@
package assemblyline.common.machine; package assemblyline.common.machine;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World; import net.minecraft.world.World;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;

View file

@ -3,10 +3,8 @@ package assemblyline.common.machine;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.electricity.ElectricityConnections;
import universalelectricity.core.electricity.ElectricityNetwork; import universalelectricity.core.electricity.ElectricityNetwork;
import universalelectricity.core.electricity.ElectricityPack; import universalelectricity.core.electricity.ElectricityPack;
import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import universalelectricity.prefab.tile.TileEntityElectricityReceiver; import universalelectricity.prefab.tile.TileEntityElectricityReceiver;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
@ -69,32 +67,13 @@ public abstract class TileEntityAssemblyNetwork extends TileEntityElectricityRec
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
{ {
if (ElectricityConnections.getDirections(this) != null) if (this.wattsReceived < this.getRequest().getWatts())
{ {
for (Object obj : ElectricityConnections.getDirections(this)) this.wattsReceived += ElectricityNetwork.consumeFromMultipleSides(this, this.getRequest()).getWatts() * 2;
{
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 else
{ {
network.startRequesting(this, this.getRequest()); ElectricityNetwork.consumeFromMultipleSides(this, new ElectricityPack());
this.wattsReceived += network.consumeElectricity(this).getWatts() * 2;
}
}
}
}
} }
} }
@ -129,12 +108,6 @@ public abstract class TileEntityAssemblyNetwork extends TileEntityElectricityRec
} }
@Override
public double getVoltage()
{
return 20;
}
protected ElectricityPack getRequest() protected ElectricityPack getRequest()
{ {
return new ElectricityPack(15, this.getVoltage()); return new ElectricityPack(15, this.getVoltage());

View file

@ -121,15 +121,6 @@ public class TileEntityRejector extends TileEntityFilterable
return false; return false;
} }
/**
* UE methods
*/
@Override
public double getVoltage()
{
return 120;
}
/** /**
* NBT Data * NBT Data
*/ */

View file

@ -60,12 +60,6 @@ public class TileEntityRoboticSorter extends TileEntityElectricityReceiver imple
return 4; return 4;
} }
@Override
public double getVoltage()
{
return 120;
}
/** /**
* Inventory functions. * Inventory functions.
*/ */

View file

@ -6,8 +6,8 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -16,7 +16,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.INetworkManager; import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet132TileEntityData;
import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
@ -84,6 +83,20 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
{ {
Vector3 handPosition = this.getHandPosition(); 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) for (Entity entity : this.grabbedEntities)
{ {
entity.setPosition(handPosition.x, handPosition.y, handPosition.z); entity.setPosition(handPosition.x, handPosition.y, handPosition.z);
@ -149,7 +162,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult
Vector3 position = new Vector3(this); Vector3 position = new Vector3(this);
position.add(0.5); position.add(0.5);
// The distance of the position relative to the main position. // The distance of the position relative to the main position.
double distance = 1.7f; double distance = 1f;
Vector3 delta = new Vector3(); Vector3 delta = new Vector3();
// The delta Y of the hand. // The delta Y of the hand.
delta.y = Math.sin(Math.toRadians(this.rotationPitch)) * distance; 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.x = Math.sin(Math.toRadians(-this.rotationYaw)) * dH;
delta.z = Math.cos(Math.toRadians(-this.rotationYaw)) * dH; delta.z = Math.cos(Math.toRadians(-this.rotationYaw)) * dH;
position.add(delta); 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; return position;
} }
@Override
public double getVoltage()
{
return 120;
}
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {

View file

@ -1,9 +1,5 @@
package assemblyline.common.machine.command; package assemblyline.common.machine.command;
import java.util.List;
import net.minecraft.entity.Entity;
import net.minecraft.util.AxisAlignedBB;
public class CommandDrop extends Command public class CommandDrop extends Command
{ {

View file

@ -1,6 +1,5 @@
package assemblyline.common.machine.command; package assemblyline.common.machine.command;
import assemblyline.common.machine.armbot.TileEntityArmbot;
public class CommandIdle extends Command public class CommandIdle extends Command
{ {

View file

@ -28,8 +28,6 @@ public class CommandManager
{ {
if (this.tasks.size() > 0) if (this.tasks.size() > 0)
{ {
System.out.println(this.lastTask + " vs " + currentTask + ": " + this.tasks.size());
if (this.currentTask < this.tasks.size()) if (this.currentTask < this.tasks.size())
{ {
if (this.currentTask < 0) if (this.currentTask < 0)

View file

@ -1,6 +1,5 @@
package assemblyline.common.machine.command; package assemblyline.common.machine.command;
import assemblyline.common.machine.armbot.TileEntityArmbot;
public class CommandReturn extends Command public class CommandReturn extends Command
{ {

View file

@ -1,8 +1,5 @@
package assemblyline.common.machine.command; 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. * Rotates the armbot to a specific direction. If not specified, it will turn right.

View file

@ -1,22 +1,11 @@
package assemblyline.common.machine.imprinter; package assemblyline.common.machine.imprinter;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; 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.AssemblyLine;
import assemblyline.common.Pair;
import cpw.mods.fml.relauncher.ReflectionHelper;
public class ContainerImprinter extends Container implements ISlotWatcher public class ContainerImprinter extends Container implements ISlotWatcher
{ {

View file

@ -3,7 +3,6 @@ package assemblyline.common.machine.imprinter;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import assemblyline.common.AssemblyLine;
public class SlotCustom extends Slot public class SlotCustom extends Slot
{ {

View file

@ -39,7 +39,8 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv
@Override @Override
public int getStartInventorySide(ForgeDirection side) 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; return START_INVENTORY;
} }

View file

@ -31,7 +31,7 @@ public class UniversalElectricity
*/ */
public static final int MAJOR_VERSION = 1; public static final int MAJOR_VERSION = 1;
public static final int MINOR_VERSION = 2; 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; 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. * Conversion ratios between Buildcraft and Industrialcraft energy.
*/ */
// EU to Watts ratio // The amount of UE Joules equivalent to IC2 EU
public static double IC2_RATIO = 10; public static double IC2_RATIO = 50;
// MJ to Watts ratio. // The amount of UE Joules equivalent to BC Minecraft Joules
public static double BC3_RATIO = 85; public static double BC3_RATIO = 500;
public static double TO_IC2_RATIO = 1 / IC2_RATIO; public static double TO_IC2_RATIO = 1 / IC2_RATIO;
public static double TO_BC_RATIO = 1 / BC3_RATIO; public static double TO_BC_RATIO = 1 / BC3_RATIO;

View file

@ -1,6 +1,7 @@
package universalelectricity.core.electricity; package universalelectricity.core.electricity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -9,6 +10,7 @@ import java.util.Map;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.implement.IConductor; import universalelectricity.core.implement.IConductor;
import universalelectricity.core.vector.Vector3;
import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.FMLLog;
public class ElectricityNetwork public class ElectricityNetwork
@ -202,7 +204,8 @@ public class ElectricityNetwork
if (this.consumers.containsKey(tileEntity) && tileRequest != null) 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(); totalElectricity = this.getProduced();
if (totalElectricity.getWatts() > 0) if (totalElectricity.getWatts() > 0)
@ -388,4 +391,132 @@ public class ElectricityNetwork
return null; 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<ElectricityNetwork> getNetworksFromMultipleSides(TileEntity tileEntity, EnumSet<ForgeDirection> approachingDirection)
{
final List<ElectricityNetwork> connectedNetworks = new ArrayList<ElectricityNetwork>();
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<ForgeDirection> approachingDirection, ElectricityPack requestPack)
{
ElectricityPack consumedPack = new ElectricityPack();
if (tileEntity != null && approachingDirection != null)
{
final List<ElectricityNetwork> 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<ForgeDirection> approachingDirection, ElectricityPack producingPack)
{
ElectricityPack remainingElectricity = producingPack.clone();
if (tileEntity != null && approachingDirection != null)
{
final List<ElectricityNetwork> 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);
}
} }

View file

@ -11,7 +11,8 @@ public interface IVoltage
/** /**
* Gets the voltage of this object. * 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 * @return The amount of volts. E.g 120v or 240v
*/ */
public double getVoltage(); public double getVoltage(Object... data);
} }

View file

@ -3,8 +3,10 @@ package universalelectricity.prefab;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -23,7 +25,12 @@ public class UpdateNotifier implements IPlayerTracker
public static final UpdateNotifier INSTANCE = new UpdateNotifier(); public static final UpdateNotifier INSTANCE = new UpdateNotifier();
public static boolean isInitialized = false; public static boolean isInitialized = false;
public static final HashMap<String, String> modsToUpdate = new HashMap<String, String>(); public static final HashMap<String, String> MODS_TO_UPDATE = new HashMap<String, String>();
/**
* Add variables to this array if you want extra custom notifications to be output.
*/
public static final List<String> NOTIFICATIONS = new ArrayList<String>();
/** /**
* Call this in your FML Pre-Initialize Event. * 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())) if (latestUpdate != null && latestUpdate != "" && !currentVersion.trim().equals(latestUpdate.trim()))
{ {
modsToUpdate.put(modName, latestUpdate.trim()); MODS_TO_UPDATE.put(modName, latestUpdate.trim());
} }
return latestUpdate; return latestUpdate;
@ -76,19 +83,26 @@ public class UpdateNotifier implements IPlayerTracker
@Override @Override
public void onPlayerLogin(EntityPlayer player) 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()) while (it.hasNext())
{ {
Map.Entry pairs = (Map.Entry) it.next(); 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); player.addChatMessage(notification);
} }
} }

View file

@ -17,7 +17,6 @@ import universalelectricity.core.vector.Vector3;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams; 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.IPacketHandler;
import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.network.Player; import cpw.mods.fml.common.network.Player;

View file

@ -27,7 +27,7 @@ public abstract class TileEntityElectricityProducer extends TileEntityDisableabl
} }
@Override @Override
public double getVoltage() public double getVoltage(Object... data)
{ {
return 120; return 120;
} }

View file

@ -27,7 +27,7 @@ public abstract class TileEntityElectricityReceiver extends TileEntityDisableabl
} }
@Override @Override
public double getVoltage() public double getVoltage(Object... data)
{ {
return 120; return 120;
} }