diff --git a/Universal-Electricity b/Universal-Electricity
index b53c78b4..d2034508 160000
--- a/Universal-Electricity
+++ b/Universal-Electricity
@@ -1 +1 @@
-Subproject commit b53c78b488458354dc7f0cdb9421f19865458e24
+Subproject commit d2034508e7de77a7b64905a0236a6356ad2a2478
diff --git a/build.xml b/build.xml
index f4d76035..fbf7bc79 100644
--- a/build.xml
+++ b/build.xml
@@ -67,8 +67,8 @@
-
-
+
+
diff --git a/src/resonantinduction/MultipartRI.java b/src/resonantinduction/MultipartRI.java
index 34250eab..74d44932 100644
--- a/src/resonantinduction/MultipartRI.java
+++ b/src/resonantinduction/MultipartRI.java
@@ -16,7 +16,8 @@ public class MultipartRI implements IPartFactory
{
MultiPartRegistry.registerParts(this, new String[] { "resonant_induction_flat_wire", "resonant_induction_multimeter", "resonant_induction_transformer" });
MultipartGenerator.registerTrait("universalelectricity.api.energy.IConductor", "resonantinduction.wire.part.TraitConductor");
- //MultipartGenerator.registerTrait("ic2.api.energy.tile.IEnergySink", "resonantinduction.wire.part.TraitEnergySink");
+ MultipartGenerator.registerTrait("cofh.api.energy.IEnergyHandler", "resonantinduction.wire.part.TraitEnergyHandler");
+ MultipartGenerator.registerTrait("ic2.api.energy.tile.IEnergySink", "resonantinduction.wire.part.TraitEnergySink");
}
@Override
diff --git a/src/resonantinduction/ResonantInduction.java b/src/resonantinduction/ResonantInduction.java
index bbf964d5..cd8edba8 100644
--- a/src/resonantinduction/ResonantInduction.java
+++ b/src/resonantinduction/ResonantInduction.java
@@ -214,7 +214,7 @@ public class ResonantInduction
/**
* Set reference itemstacks
*/
- TabRI.ITEMSTACK = new ItemStack(itemPartWire);
+ TabRI.ITEMSTACK = new ItemStack(blockBattery);
for (EnumWireMaterial material : EnumWireMaterial.values())
{
diff --git a/src/resonantinduction/wire/EnumWireMaterial.java b/src/resonantinduction/wire/EnumWireMaterial.java
index 5513dd13..943ed9ed 100644
--- a/src/resonantinduction/wire/EnumWireMaterial.java
+++ b/src/resonantinduction/wire/EnumWireMaterial.java
@@ -17,15 +17,15 @@ import codechicken.lib.colour.ColourRGBA;
public enum EnumWireMaterial
{
/** Copper: General. */
- COPPER("Copper", 1.68f, 5, 10, 184, 115, 51),
+ COPPER("Copper", 1.68f, 5, 30, 184, 115, 51),
/** Tin: Low shock, cheap */
- TIN("Tin", 11f, 1, 5, 132, 132, 130),
+ TIN("Tin", 11f, 1, 15, 132, 132, 130),
/** Iron: High Capacity */
- IRON("Iron", 10f, 3, 80, 97, 102, 105),
+ IRON("Iron", 10f, 3, 100, 97, 102, 105),
/** Aluminum: High Shock */
- ALUMINUM("Aluminum", 2.82f, 10, 70, 215, 205, 181),
+ ALUMINUM("Aluminum", 2.82f, 10, 80, 215, 205, 181),
/** Aluminum: Low Resistance */
- SILVER("Silver", 1.59f, 5, 20, 192, 192, 192),
+ SILVER("Silver", 1.59f, 5, 40, 192, 192, 192),
/** Superconductor: Over-powered */
SUPERCONDUCTOR("Superconductor", 0, 10, 200, 255, 255, 1);
@@ -40,7 +40,7 @@ public enum EnumWireMaterial
{
this.name = name;
/** Multiply the realistic resistance by a factor for game balance. */
- this.resistance = resistance * 2;
+ this.resistance = resistance;
this.damage = electrocutionDamage;
this.maxAmps = maxAmps;
this.color = new ColourRGBA(r, g, b, 255);
diff --git a/src/resonantinduction/wire/part/PartConductor.java b/src/resonantinduction/wire/part/PartConductor.java
index 3c1639ef..9a6936b0 100644
--- a/src/resonantinduction/wire/part/PartConductor.java
+++ b/src/resonantinduction/wire/part/PartConductor.java
@@ -124,7 +124,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor
@Override
public void onWorldJoin()
{
- if (tile() instanceof IEnergyTile)
+ if (tile() instanceof IEnergyTile && !world().isRemote)
{
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile()));
}
@@ -133,7 +133,7 @@ public abstract class PartConductor extends PartAdvanced implements IConductor
@Override
public void onWorldSeparate()
{
- if (tile() instanceof IEnergyTile)
+ if (tile() instanceof IEnergyTile && !world().isRemote)
{
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile()));
}
diff --git a/src/resonantinduction/wire/part/TraitConductor.java b/src/resonantinduction/wire/part/TraitConductor.java
index dca3d512..7527508b 100644
--- a/src/resonantinduction/wire/part/TraitConductor.java
+++ b/src/resonantinduction/wire/part/TraitConductor.java
@@ -12,7 +12,7 @@ import codechicken.multipart.TileMultipart;
public class TraitConductor extends TileMultipart implements IConductor
{
- public Set interfaces = new HashSet();
+ public Set ueInterfaces = new HashSet();
@Override
public void copyFrom(TileMultipart that)
@@ -21,7 +21,7 @@ public class TraitConductor extends TileMultipart implements IConductor
if (that instanceof TraitConductor)
{
- this.interfaces = ((TraitConductor) that).interfaces;
+ this.ueInterfaces = ((TraitConductor) that).ueInterfaces;
}
}
@@ -32,7 +32,7 @@ public class TraitConductor extends TileMultipart implements IConductor
if (part instanceof IConductor)
{
- this.interfaces.add((IConductor) part);
+ this.ueInterfaces.add((IConductor) part);
}
}
@@ -43,7 +43,7 @@ public class TraitConductor extends TileMultipart implements IConductor
if (part instanceof IConductor)
{
- this.interfaces.remove(part);
+ this.ueInterfaces.remove(part);
}
}
@@ -51,13 +51,13 @@ public class TraitConductor extends TileMultipart implements IConductor
public void clearParts()
{
super.clearParts();
- this.interfaces.clear();
+ this.ueInterfaces.clear();
}
@Override
public Object[] getConnections()
{
- for (IConductor conductor : this.interfaces)
+ for (IConductor conductor : this.ueInterfaces)
{
return conductor.getConnections();
}
@@ -68,7 +68,7 @@ public class TraitConductor extends TileMultipart implements IConductor
@Override
public IEnergyNetwork getNetwork()
{
- for (IConductor conductor : this.interfaces)
+ for (IConductor conductor : this.ueInterfaces)
{
return conductor.getNetwork();
}
@@ -79,7 +79,7 @@ public class TraitConductor extends TileMultipart implements IConductor
@Override
public void setNetwork(IEnergyNetwork network)
{
- for (IConductor conductor : this.interfaces)
+ for (IConductor conductor : this.ueInterfaces)
{
conductor.setNetwork(network);
}
@@ -88,7 +88,7 @@ public class TraitConductor extends TileMultipart implements IConductor
@Override
public boolean canConnect(ForgeDirection direction)
{
- for (IConductor conductor : this.interfaces)
+ for (IConductor conductor : this.ueInterfaces)
{
if (conductor.canConnect(direction.getOpposite()))
{
@@ -113,7 +113,7 @@ public class TraitConductor extends TileMultipart implements IConductor
{
TMultiPart part = this.partMap(dir.ordinal());
- if (this.interfaces.contains(part))
+ if (this.ueInterfaces.contains(part))
{
return ((IConductor) part).onReceiveEnergy(from, receive, doReceive);
}
@@ -135,14 +135,14 @@ public class TraitConductor extends TileMultipart implements IConductor
{
long energyLoss = 0;
- if (this.interfaces.size() > 0)
+ if (this.ueInterfaces.size() > 0)
{
- for (IConductor conductor : this.interfaces)
+ for (IConductor conductor : this.ueInterfaces)
{
energyLoss += conductor.getResistance();
}
- energyLoss /= this.interfaces.size();
+ energyLoss /= this.ueInterfaces.size();
}
return energyLoss;
@@ -153,14 +153,14 @@ public class TraitConductor extends TileMultipart implements IConductor
{
long capacitance = 0;
- if (this.interfaces.size() > 0)
+ if (this.ueInterfaces.size() > 0)
{
- for (IConductor conductor : this.interfaces)
+ for (IConductor conductor : this.ueInterfaces)
{
capacitance += conductor.getTransferCapacity();
}
- capacitance /= this.interfaces.size();
+ capacitance /= this.ueInterfaces.size();
}
return capacitance;
diff --git a/src/resonantinduction/wire/part/TraitEnergyHandler.java b/src/resonantinduction/wire/part/TraitEnergyHandler.java
new file mode 100644
index 00000000..de5f62df
--- /dev/null
+++ b/src/resonantinduction/wire/part/TraitEnergyHandler.java
@@ -0,0 +1,120 @@
+package resonantinduction.wire.part;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import net.minecraftforge.common.ForgeDirection;
+import codechicken.multipart.TMultiPart;
+import codechicken.multipart.TileMultipart;
+import cofh.api.energy.IEnergyHandler;
+
+public class TraitEnergyHandler extends TileMultipart implements IEnergyHandler
+{
+ public Set teInterfaces = new HashSet();
+
+ @Override
+ public void copyFrom(TileMultipart that)
+ {
+ super.copyFrom(that);
+
+ if (that instanceof TraitEnergyHandler)
+ {
+ this.teInterfaces = ((TraitEnergyHandler) that).teInterfaces;
+ }
+ }
+
+ @Override
+ public void bindPart(TMultiPart part)
+ {
+ super.bindPart(part);
+
+ if (part instanceof IEnergyHandler)
+ {
+ this.teInterfaces.add((IEnergyHandler) part);
+ }
+ }
+
+ @Override
+ public void partRemoved(TMultiPart part, int p)
+ {
+ super.partRemoved(part, p);
+
+ if (part instanceof IEnergyHandler)
+ {
+ this.teInterfaces.remove(part);
+ }
+ }
+
+ @Override
+ public void clearParts()
+ {
+ super.clearParts();
+ this.teInterfaces.clear();
+ }
+
+ @Override
+ public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate)
+ {
+ /**
+ * Try out different sides to try to inject energy into.
+ */
+ if (this.partMap(from.ordinal()) == null)
+ {
+ for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
+ {
+ if (dir != from.getOpposite())
+ {
+ TMultiPart part = this.partMap(dir.ordinal());
+
+ if (this.teInterfaces.contains(part))
+ {
+ return ((IEnergyHandler) part).receiveEnergy(from, maxReceive, simulate);
+ }
+ }
+ }
+ }
+
+ return 0;
+ }
+
+ @Override
+ public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate)
+ {
+ return 0;
+ }
+
+ @Override
+ public boolean canInterface(ForgeDirection from)
+ {
+ if (this.partMap(from.ordinal()) == null)
+ {
+ for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
+ {
+ if (dir != from.getOpposite())
+ {
+ TMultiPart part = this.partMap(dir.ordinal());
+
+ if (this.teInterfaces.contains(part))
+ {
+ return ((IEnergyHandler) part).canInterface(from);
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public int getEnergyStored(ForgeDirection from)
+ {
+ return 0;
+ }
+
+ @Override
+ public int getMaxEnergyStored(ForgeDirection from)
+ {
+ return 0;
+ }
+
+}
diff --git a/src/resonantinduction/wire/part/TraitEnergySink.java b/src/resonantinduction/wire/part/TraitEnergySink.java
index 1a0b27c9..e77d0725 100644
--- a/src/resonantinduction/wire/part/TraitEnergySink.java
+++ b/src/resonantinduction/wire/part/TraitEnergySink.java
@@ -5,8 +5,6 @@ import ic2.api.energy.tile.IEnergySink;
import java.util.HashSet;
import java.util.Set;
-import universalelectricity.api.CompatibilityType;
-import universalelectricity.api.energy.IConductor;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import codechicken.multipart.TMultiPart;
@@ -14,16 +12,16 @@ import codechicken.multipart.TileMultipart;
public class TraitEnergySink extends TileMultipart implements IEnergySink
{
- public Set interfaces = new HashSet();
+ public Set icInterfaces = new HashSet();
@Override
public void copyFrom(TileMultipart that)
{
super.copyFrom(that);
- if (that instanceof TraitConductor)
+ if (that instanceof TraitEnergySink)
{
- this.interfaces = ((TraitConductor) that).interfaces;
+ this.icInterfaces = ((TraitEnergySink) that).icInterfaces;
}
}
@@ -32,9 +30,9 @@ public class TraitEnergySink extends TileMultipart implements IEnergySink
{
super.bindPart(part);
- if (part instanceof IConductor)
+ if (part instanceof IEnergySink)
{
- this.interfaces.add((IConductor) part);
+ this.icInterfaces.add((IEnergySink) part);
}
}
@@ -43,9 +41,9 @@ public class TraitEnergySink extends TileMultipart implements IEnergySink
{
super.partRemoved(part, p);
- if (part instanceof IConductor)
+ if (part instanceof IEnergySink)
{
- this.interfaces.remove(part);
+ this.icInterfaces.remove(part);
}
}
@@ -53,7 +51,7 @@ public class TraitEnergySink extends TileMultipart implements IEnergySink
public void clearParts()
{
super.clearParts();
- this.interfaces.clear();
+ this.icInterfaces.clear();
}
@Override
@@ -67,9 +65,9 @@ public class TraitEnergySink extends TileMultipart implements IEnergySink
{
TMultiPart part = this.partMap(dir.ordinal());
- if (this.interfaces.contains(part))
+ if (this.icInterfaces.contains(part))
{
- return ((IConductor) part).canConnect(from);
+ return ((IEnergySink) part).acceptsEnergyFrom(emitter, from);
}
}
}
@@ -87,9 +85,9 @@ public class TraitEnergySink extends TileMultipart implements IEnergySink
{
TMultiPart part = this.partMap(dir.ordinal());
- if (this.interfaces.contains(part))
+ if (this.icInterfaces.contains(part))
{
- return ((IConductor) part).onReceiveEnergy(ForgeDirection.UNKNOWN, Integer.MAX_VALUE, false) * CompatibilityType.INDUSTRIALCRAFT.ratio;
+ return ((IEnergySink) part).demandedEnergyUnits();
}
}
@@ -99,8 +97,6 @@ public class TraitEnergySink extends TileMultipart implements IEnergySink
@Override
public double injectEnergyUnits(ForgeDirection from, double amount)
{
- double consumed = 0;
-
if (this.partMap(from.ordinal()) == null)
{
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
@@ -109,15 +105,15 @@ public class TraitEnergySink extends TileMultipart implements IEnergySink
{
TMultiPart part = this.partMap(dir.ordinal());
- if (this.interfaces.contains(part))
+ if (this.icInterfaces.contains(part))
{
- consumed = ((IConductor) part).onReceiveEnergy(from, (long) (amount * CompatibilityType.INDUSTRIALCRAFT.reciprocal_ratio), true) * CompatibilityType.INDUSTRIALCRAFT.ratio;
+ return ((IEnergySink) part).injectEnergyUnits(from, amount);
}
}
}
}
- return amount - consumed;
+ return amount;
}
@Override