From 1a95fb5b0ecda8b2a331769235f0f8e44c97a2e2 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 28 Jan 2014 14:08:51 -0600 Subject: [PATCH] Tests parts before adding them. Proxied IC2 Events. --- core/Registration.java | 6 ++++-- integration/modules/IC2.java | 16 ++++++++-------- items/parts/ItemPart.java | 11 +++++++++++ tile/powersink/IC2.java | 13 ++++++++----- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/core/Registration.java b/core/Registration.java index 60e2522c..fb59beb7 100644 --- a/core/Registration.java +++ b/core/Registration.java @@ -177,7 +177,8 @@ public class Registration if ( varients == null ) { ItemStack is = ((ItemPart) partItem.item()).createPart( type, null ); - f.set( parts, new DamagedItemDefinition( is ) ); + if ( is != null ) + f.set( parts, new DamagedItemDefinition( is ) ); } else { @@ -188,7 +189,8 @@ public class Registration for (Enum v : varients) { ItemStack is = ((ItemPart) partItem.item()).createPart( type, v ); - def.add( (AEColor) v, is ); + if ( is != null ) + def.add( (AEColor) v, is ); } f.set( parts, def ); diff --git a/integration/modules/IC2.java b/integration/modules/IC2.java index 32a598a2..26eeee40 100644 --- a/integration/modules/IC2.java +++ b/integration/modules/IC2.java @@ -1,9 +1,11 @@ package appeng.integration.modules; +import ic2.api.energy.tile.IEnergyTile; import ic2.api.recipe.RecipeInputItemStack; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.MinecraftForge; import appeng.api.AEApi; import appeng.integration.IIntegrationModule; import appeng.integration.abstraction.IIC2; @@ -28,8 +30,7 @@ public class IC2 implements IIntegrationModule, IIC2 // certus quartz maceratorRecipe( AEApi.instance().materials().materialCertusQuartzCrystal.stack( 1 ), AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) ); - maceratorRecipe( AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( 1 ), - AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) ); + maceratorRecipe( AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( 1 ), AEApi.instance().materials().materialCertusQuartzDust.stack( 1 ) ); // fluix maceratorRecipe( AEApi.instance().materials().materialFluixCrystal.stack( 1 ), AEApi.instance().materials().materialFluixDust.stack( 1 ) ); @@ -39,8 +40,9 @@ public class IC2 implements IIntegrationModule, IIC2 } /* - * private void compressorRecipe(ItemStack in, ItemStack out) { ic2.api.recipe.Recipes.compressor.addRecipe( new - * RecipeInputItemStack( in, in.stackSize ), null, out ); } + * private void compressorRecipe(ItemStack in, ItemStack out) { + * ic2.api.recipe.Recipes.compressor.addRecipe( new RecipeInputItemStack( + * in, in.stackSize ), null, out ); } */ private void maceratorRecipe(ItemStack in, ItemStack out) { @@ -50,15 +52,13 @@ public class IC2 implements IIntegrationModule, IIC2 @Override public void addToEnergyNet(TileEntity appEngTile) { - // TODO Auto-generated method stub - + MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileLoadEvent( (IEnergyTile) appEngTile ) ); } @Override public void removeFromEnergyNet(TileEntity appEngTile) { - // TODO Auto-generated method stub - + MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileUnloadEvent( (IEnergyTile) appEngTile ) ); } @Override diff --git a/items/parts/ItemPart.java b/items/parts/ItemPart.java index 462837aa..297999f1 100644 --- a/items/parts/ItemPart.java +++ b/items/parts/ItemPart.java @@ -48,6 +48,17 @@ public class ItemPart extends AEBaseItem implements IPartItem, IItemGroup public ItemStack createPart(PartType mat, Enum varient) { + try + { + ItemStack is = new ItemStack( this ); + PartType t = getTypeByStack( is ); + t.getPart().getConstructor( ItemStack.class ).newInstance( is ); + } + catch (Throwable e) + { + return null; // part not supported.. + } + String name = varient == null ? mat.name() : mat.name() + "." + varient.name(); int varID = varient == null ? 0 : varient.ordinal(); diff --git a/tile/powersink/IC2.java b/tile/powersink/IC2.java index 8acc4223..f55bff82 100644 --- a/tile/powersink/IC2.java +++ b/tile/powersink/IC2.java @@ -6,8 +6,9 @@ import java.util.EnumSet; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.MinecraftForge; import appeng.api.config.PowerUnits; +import appeng.core.AppEng; +import appeng.integration.abstraction.IIC2; import appeng.util.Platform; import cpw.mods.fml.common.Optional.Interface; @@ -77,18 +78,20 @@ public abstract class IC2 extends BuildCraft implements IEnergySink final private void addToENet() { - if ( !isInIC2 && Platform.isServer() ) + IIC2 ic2Integration = (IIC2) AppEng.instance.getIntegration( "IC2" ); + if ( !isInIC2 && Platform.isServer() && ic2Integration != null ) { - MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileLoadEvent( this ) ); + ic2Integration.addToEnergyNet( this ); isInIC2 = true; } } final private void removeFromENet() { - if ( isInIC2 && Platform.isServer() ) + IIC2 ic2Integration = (IIC2) AppEng.instance.getIntegration( "IC2" ); + if ( isInIC2 && Platform.isServer() && ic2Integration != null ) { - MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileUnloadEvent( this ) ); + ic2Integration.removeFromEnergyNet( this ); isInIC2 = false; } }