diff --git a/src/main/java/li/cil/oc/server/component/Carriage.scala b/src/main/java/li/cil/oc/server/component/Carriage.scala index b3f13c965..ada17b1da 100644 --- a/src/main/java/li/cil/oc/server/component/Carriage.scala +++ b/src/main/java/li/cil/oc/server/component/Carriage.scala @@ -21,6 +21,8 @@ class Carriage(controller: AnyRef) extends ManagedComponent { private var shouldMove = false private var moving = false + private var signalDelay = 10 + // ----------------------------------------------------------------------- // @LuaCallback("move") @@ -79,8 +81,11 @@ class Carriage(controller: AnyRef) extends ManagedComponent { override def update() { if (node != null && node.network != null && moving) { - moving = false - node.sendToReachable("computer.signal", "carriage_moved", Boolean.box(true)) + signalDelay = signalDelay - 1 + if (signalDelay <= 0) { + moving = false + node.sendToReachable("computer.signal", "carriage_moved", Boolean.box(true)) + } } super.update() if (shouldMove) { diff --git a/src/main/optional/stargatetech2/api/stargate/ITileStargateBase.java b/src/main/optional/stargatetech2/api/stargate/ITileStargateBase.java index 43e8fdae6..b765cace1 100644 --- a/src/main/optional/stargatetech2/api/stargate/ITileStargateBase.java +++ b/src/main/optional/stargatetech2/api/stargate/ITileStargateBase.java @@ -19,7 +19,8 @@ public interface ITileStargateBase extends ITileStargate{ * Used to try making the Stargate dial an address. * * @param address The address this Stargate should dial. + * @param timeout How many seconds the connection will last. (1 - 38; default: 38); * @return whether the dialing sequence started (true) or failed (false). */ - public boolean dial(Address address); + public boolean dial(Address address, int timeout); } \ No newline at end of file diff --git a/src/main/required/universalelectricity/api/CompatibilityModule.java b/src/main/required/universalelectricity/api/CompatibilityModule.java index 21b4355e0..db2d6e232 100644 --- a/src/main/required/universalelectricity/api/CompatibilityModule.java +++ b/src/main/required/universalelectricity/api/CompatibilityModule.java @@ -192,21 +192,21 @@ public abstract class CompatibilityModule return 0; } - public static long getEnergyItem(ItemStack is) + public static long getEnergyItem(ItemStack itemStack) { - if (isHandler(is.getItem())) + if (itemStack != null && isHandler(itemStack.getItem())) { - return energyHandlerCache.get(is.getItem().getClass()).doGetEnergyItem(is); + return energyHandlerCache.get(itemStack.getItem().getClass()).doGetEnergyItem(itemStack); } return 0; } - public static long getMaxEnergyItem(ItemStack is) + public static long getMaxEnergyItem(ItemStack itemStack) { - if (isHandler(is.getItem())) + if (itemStack != null && isHandler(itemStack.getItem())) { - return energyHandlerCache.get(is.getItem().getClass()).doGetMaxEnergyItem(is); + return energyHandlerCache.get(itemStack.getItem().getClass()).doGetMaxEnergyItem(itemStack); } return 0; diff --git a/src/main/required/universalelectricity/api/item/ItemElectric.java b/src/main/required/universalelectricity/api/item/ItemElectric.java index 1941ecf03..d9365b383 100644 --- a/src/main/required/universalelectricity/api/item/ItemElectric.java +++ b/src/main/required/universalelectricity/api/item/ItemElectric.java @@ -9,148 +9,147 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagFloat; +import net.minecraft.nbt.NBTTagLong; import net.minecraft.world.World; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; -/** - * Extend from this class if your item requires electricity or to be charged. Optionally, you can +/** Extend from this class if your item requires electricity or to be charged. Optionally, you can * implement IItemElectric instead. * - * @author Calclavia - */ + * @author Calclavia */ public abstract class ItemElectric extends Item implements IEnergyItem, IVoltageItem { - public ItemElectric(int id) - { - super(id); - setMaxStackSize(1); - setMaxDamage(100); - setNoRepair(); - } + private static final String ENERGY_NBT = "electricity"; - @Override - public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) - { - String color = ""; - long joules = getEnergy(itemStack); + public ItemElectric(int id) + { + super(id); + setMaxStackSize(1); + setMaxDamage(100); + setNoRepair(); + } - if (joules <= getEnergyCapacity(itemStack) / 3) - { - color = "\u00a74"; - } - else if (joules > getEnergyCapacity(itemStack) * 2 / 3) - { - color = "\u00a72"; - } - else - { - color = "\u00a76"; - } + @Override + public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) + { + String color = ""; + long joules = getEnergy(itemStack); - list.add(color + UnitDisplay.getDisplayShort(joules, Unit.JOULES) + "/" + UnitDisplay.getDisplayShort(getEnergyCapacity(itemStack), Unit.JOULES)); - } + if (joules <= getEnergyCapacity(itemStack) / 3) + { + color = "\u00a74"; + } + else if (joules > getEnergyCapacity(itemStack) * 2 / 3) + { + color = "\u00a72"; + } + else + { + color = "\u00a76"; + } - /** - * Makes sure the item is uncharged when it is crafted and not charged. Change this if you do - * not want this to happen! - */ - @Override - public void onCreated(ItemStack itemStack, World par2World, EntityPlayer par3EntityPlayer) - { - setEnergy(itemStack, 0); - } + list.add(color + UnitDisplay.getDisplayShort(joules, Unit.JOULES) + "/" + UnitDisplay.getDisplayShort(getEnergyCapacity(itemStack), Unit.JOULES)); + } - @Override - public long recharge(ItemStack itemStack, long energy, boolean doReceive) - { - long energyReceived = Math.min(getEnergyCapacity(itemStack) - getEnergy(itemStack), Math.min(getTransferRate(itemStack), energy)); + /** Makes sure the item is uncharged when it is crafted and not charged. Change this if you do + * not want this to happen! */ + @Override + public void onCreated(ItemStack itemStack, World par2World, EntityPlayer par3EntityPlayer) + { + setEnergy(itemStack, 0); + } - if (doReceive) - { - setEnergy(itemStack, getEnergy(itemStack) + energyReceived); - } + @Override + public long recharge(ItemStack itemStack, long energy, boolean doReceive) + { + long energyReceived = Math.min(getEnergyCapacity(itemStack) - getEnergy(itemStack), Math.min(getTransferRate(itemStack), energy)); - return energyReceived; - } + if (doReceive) + { + setEnergy(itemStack, getEnergy(itemStack) + energyReceived); + } - public long getTransferRate(ItemStack itemStack) - { - return getEnergyCapacity(itemStack) / 100; - } + return energyReceived; + } - @Override - public long discharge(ItemStack itemStack, long energy, boolean doTransfer) - { - long energyExtracted = Math.min(getEnergy(itemStack), Math.min(getTransferRate(itemStack), energy)); + public long getTransferRate(ItemStack itemStack) + { + return getEnergyCapacity(itemStack) / 100; + } - if (doTransfer) - { - setEnergy(itemStack, getEnergy(itemStack) - energyExtracted); - } + @Override + public long discharge(ItemStack itemStack, long energy, boolean doTransfer) + { + long energyExtracted = Math.min(getEnergy(itemStack), Math.min(getTransferRate(itemStack), energy)); - return energyExtracted; - } + if (doTransfer) + { + setEnergy(itemStack, getEnergy(itemStack) - energyExtracted); + } - @Override - public long getVoltage(ItemStack itemStack) - { - return UniversalElectricity.DEFAULT_VOLTAGE; - } + return energyExtracted; + } - @Override - public void setEnergy(ItemStack itemStack, long joules) - { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } + @Override + public long getVoltage(ItemStack itemStack) + { + return UniversalElectricity.DEFAULT_VOLTAGE; + } - long electricityStored = Math.max(Math.min(joules, getEnergyCapacity(itemStack)), 0); - itemStack.getTagCompound().setLong("electricity", electricityStored); - itemStack.setItemDamage((int) (100 - ((double) electricityStored / (double) getEnergyCapacity(itemStack)) * 100)); - } + @Override + public void setEnergy(ItemStack itemStack, long joules) + { + if (itemStack.getTagCompound() == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } - public long getTransfer(ItemStack itemStack) - { - return getEnergyCapacity(itemStack) - getEnergy(itemStack); - } + long electricityStored = Math.max(Math.min(joules, getEnergyCapacity(itemStack)), 0); + itemStack.getTagCompound().setLong(ENERGY_NBT, electricityStored); + itemStack.setItemDamage((int) (100 - ((double) electricityStored / (double) getEnergyCapacity(itemStack)) * 100)); + } - @Override - public long getEnergy(ItemStack itemStack) - { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } + public long getTransfer(ItemStack itemStack) + { + return getEnergyCapacity(itemStack) - getEnergy(itemStack); + } - long energyStored = 0; + @Override + public long getEnergy(ItemStack itemStack) + { + if (itemStack.getTagCompound() == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } - if (itemStack.getTagCompound().hasKey("electricity")) - { - // Backwards compatibility - NBTBase obj = itemStack.getTagCompound().getTag("electricity"); + long energyStored = 0; - if (obj instanceof NBTTagFloat) - { - energyStored = (long) ((NBTTagFloat) obj).data; - } - else - { - energyStored = itemStack.getTagCompound().getLong("electricity"); - } - } + if (itemStack.getTagCompound().hasKey(ENERGY_NBT)) + { + // Backwards compatibility + NBTBase obj = itemStack.getTagCompound().getTag(ENERGY_NBT); - itemStack.setItemDamage((int) (100 - ((double) energyStored / (double) getEnergyCapacity(itemStack)) * 100)); - return energyStored; - } + if (obj instanceof NBTTagFloat) + { + energyStored = (long) ((NBTTagFloat) obj).data; + } + else if (obj instanceof NBTTagLong) + { + energyStored = (long) ((NBTTagLong) obj).data; + } + } - @Override - public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this), 0)); - par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this), getEnergyCapacity(new ItemStack(this)))); - } + itemStack.setItemDamage((int) (100 - ((double) energyStored / (double) getEnergyCapacity(itemStack)) * 100)); + return energyStored; + } + + @Override + public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) + { + par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this), 0)); + par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this), getEnergyCapacity(new ItemStack(this)))); + } } diff --git a/src/main/required/universalelectricity/api/vector/Vector2.java b/src/main/required/universalelectricity/api/vector/Vector2.java index a16c641aa..f9970e4f2 100644 --- a/src/main/required/universalelectricity/api/vector/Vector2.java +++ b/src/main/required/universalelectricity/api/vector/Vector2.java @@ -150,7 +150,9 @@ public class Vector2 implements Cloneable @Override public int hashCode() { - return ("X:" + this.x + "Y:" + this.y).hashCode(); + long x = Double.doubleToLongBits(this.x); + long y = Double.doubleToLongBits(this.y); + return 31 * (int)(x ^ (x >>> 32)) + (int)(y ^ (y >>> 32)); } @Override diff --git a/src/main/required/universalelectricity/api/vector/Vector3.java b/src/main/required/universalelectricity/api/vector/Vector3.java index ff0316810..bb38bf420 100644 --- a/src/main/required/universalelectricity/api/vector/Vector3.java +++ b/src/main/required/universalelectricity/api/vector/Vector3.java @@ -816,7 +816,13 @@ public class Vector3 implements Cloneable @Override public int hashCode() { - return ("X:" + this.x + "Y:" + this.y + "Z:" + this.z).hashCode(); + long x = Double.doubleToLongBits(this.x); + long y = Double.doubleToLongBits(this.y); + long z = Double.doubleToLongBits(this.z); + int hash = (int)(x ^ (x >>> 32)); + hash = 31 * hash + (int)(y ^ (y >>> 32)); + hash = 31 * hash + (int)(z ^ (z >>> 32)); + return hash; } @Override