diff --git a/integration/modules/NEI.java b/integration/modules/NEI.java index 93d1e297b..98e7addf9 100644 --- a/integration/modules/NEI.java +++ b/integration/modules/NEI.java @@ -10,6 +10,7 @@ import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import appeng.client.gui.implementations.GuiCraftingTerm; +import appeng.integration.BaseModule; import appeng.integration.IIntegrationModule; import appeng.integration.abstraction.INEI; import appeng.integration.modules.NEIHelpers.NEIAEShapedRecipeHandler; @@ -20,7 +21,7 @@ import appeng.integration.modules.NEIHelpers.NEIInscriberRecipeHandler; import appeng.integration.modules.NEIHelpers.NEIWorldCraftingHandler; import codechicken.nei.guihook.GuiContainerManager; -public class NEI implements IIntegrationModule, INEI +public class NEI extends BaseModule implements IIntegrationModule, INEI { public static NEI instance; @@ -32,6 +33,9 @@ public class NEI implements IIntegrationModule, INEI Method registerUsageHandler; public NEI() throws ClassNotFoundException { + TestClass( GuiContainerManager.class ); + TestClass( codechicken.nei.recipe.ICraftingHandler.class ); + TestClass( codechicken.nei.recipe.IUsageHandler.class ); API = Class.forName( "codechicken.nei.api.API" ); } @@ -94,9 +98,16 @@ public class NEI implements IIntegrationModule, INEI @Override public RenderItem setItemRender(RenderItem aeri2) { - RenderItem ri = GuiContainerManager.drawItems; - GuiContainerManager.drawItems = aeri2; - return ri; + try + { + RenderItem ri = GuiContainerManager.drawItems; + GuiContainerManager.drawItems = aeri2; + return ri; + } + catch (Throwable t) + { + throw new RuntimeException( "Invalid version of NEI, please update", t ); + } } } diff --git a/parts/p2p/PartP2PIC2Power.java b/parts/p2p/PartP2PIC2Power.java index 69f42bfa2..70e744611 100644 --- a/parts/p2p/PartP2PIC2Power.java +++ b/parts/p2p/PartP2PIC2Power.java @@ -36,20 +36,24 @@ public class PartP2PIC2Power extends PartP2PTunnel implements i throw new RuntimeException( "IC2 Not installed!" ); } - double OutputPacket; + // two packet buffering... + double OutputPacketA; + double OutputPacketB; @Override public void writeToNBT(NBTTagCompound tag) { super.writeToNBT( tag ); - tag.setDouble( "OutputPacket", OutputPacket ); + tag.setDouble( "OutputPacket", OutputPacketA ); + tag.setDouble( "OutputPacket2", OutputPacketB ); } @Override public void readFromNBT(NBTTagCompound tag) { super.readFromNBT( tag ); - OutputPacket = tag.getDouble( "OutputPacket" ); + OutputPacketA = tag.getDouble( "OutputPacket" ); + OutputPacketB = tag.getDouble( "OutputPacket2" ); } @SideOnly(Side.CLIENT) @@ -84,7 +88,7 @@ public class PartP2PIC2Power extends PartP2PTunnel implements i { for (PartP2PIC2Power t : getOutputs()) { - if ( t.OutputPacket <= 0.0001 ) + if ( t.OutputPacketA <= 0.0001 || t.OutputPacketB <= 0.0001 ) { return 2048; } @@ -128,10 +132,17 @@ public class PartP2PIC2Power extends PartP2PTunnel implements i LinkedList Options = new LinkedList(); for (PartP2PIC2Power o : outs) { - if ( o.OutputPacket <= 0.01 ) + if ( o.OutputPacketA <= 0.01 ) Options.add( o ); } + if ( Options.isEmpty() ) + { + for (PartP2PIC2Power o : outs) + if ( o.OutputPacketB <= 0.01 ) + Options.add( o ); + } + if ( Options.isEmpty() ) { for (PartP2PIC2Power o : outs) @@ -142,10 +153,18 @@ public class PartP2PIC2Power extends PartP2PTunnel implements i return amount; PartP2PIC2Power x = (PartP2PIC2Power) Platform.pickRandom( Options ); - if ( x != null && x.OutputPacket <= 0.001 ) + + if ( x != null && x.OutputPacketA <= 0.001 ) { QueueTunnelDrain( PowerUnits.EU, amount ); - x.OutputPacket = amount; + x.OutputPacketA = amount; + return 0; + } + + if ( x != null && x.OutputPacketB <= 0.001 ) + { + QueueTunnelDrain( PowerUnits.EU, amount ); + x.OutputPacketB = amount; return 0; } @@ -162,14 +181,19 @@ public class PartP2PIC2Power extends PartP2PTunnel implements i public double getOfferedEnergy() { if ( output ) - return OutputPacket; + return OutputPacketA; return 0; } @Override public void drawEnergy(double amount) { - OutputPacket -= amount; + OutputPacketA -= amount; + if ( OutputPacketA < 0.001 ) + { + OutputPacketA = OutputPacketB; + OutputPacketB = 0; + } } } diff --git a/parts/p2p/PartP2PTunnel.java b/parts/p2p/PartP2PTunnel.java index 65f9732b6..b00f56df0 100644 --- a/parts/p2p/PartP2PTunnel.java +++ b/parts/p2p/PartP2PTunnel.java @@ -1,5 +1,6 @@ package appeng.parts.p2p; +import java.util.ArrayList; import java.util.Collection; import net.minecraft.client.renderer.RenderBlocks; @@ -265,7 +266,9 @@ public class PartP2PTunnel extends PartBasicState public TunnelCollection getOutputs() throws GridAccessException { - return (TunnelCollection) proxy.getP2P().getOutputs( freq, getClass() ); + if ( proxy.isActive() ) + return (TunnelCollection) proxy.getP2P().getOutputs( freq, getClass() ); + return new TunnelCollection( new ArrayList(), getClass() ); } public void onChange()