diff --git a/core/Registration.java b/core/Registration.java index 0b5ec44d..1c79a502 100644 --- a/core/Registration.java +++ b/core/Registration.java @@ -160,7 +160,7 @@ public class Registration if ( is != null ) f.set( materials, new DamagedItemDefinition( is ) ); else - f.set( parts, new NullItemDefinition() ); + f.set( materials, new NullItemDefinition() ); } catch (Throwable err) { diff --git a/integration/abstraction/IBC.java b/integration/abstraction/IBC.java index e2d7f3fd..328d6e88 100644 --- a/integration/abstraction/IBC.java +++ b/integration/abstraction/IBC.java @@ -7,6 +7,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraftforge.common.ForgeDirection; import appeng.api.parts.IFacadePart; +import appeng.tile.powersink.BaseBCperdition; +import appeng.tile.powersink.BuildCraft; public interface IBC { @@ -41,4 +43,6 @@ public interface IBC Icon getFacadeTexture(); + BaseBCperdition createPerdition(BuildCraft buildCraft); + } diff --git a/integration/modules/BC.java b/integration/modules/BC.java index 5712e77f..421063cf 100644 --- a/integration/modules/BC.java +++ b/integration/modules/BC.java @@ -15,6 +15,9 @@ import appeng.facade.FacadePart; import appeng.integration.IIntegrationModule; import appeng.integration.abstraction.IBC; import appeng.integration.modules.helpers.BCPipeHandler; +import appeng.tile.powersink.BCPerdition; +import appeng.tile.powersink.BaseBCperdition; +import appeng.tile.powersink.BuildCraft; import buildcraft.BuildCraftEnergy; import buildcraft.BuildCraftTransport; import buildcraft.api.tools.IToolWrench; @@ -220,4 +223,10 @@ public class BC implements IIntegrationModule, IBC // Pipe } + @Override + public BaseBCperdition createPerdition(BuildCraft buildCraft) + { + return new BCPerdition( buildCraft ); + } + } diff --git a/tile/powersink/BuildCraft.java b/tile/powersink/BuildCraft.java index 0da29e02..eeb86a51 100644 --- a/tile/powersink/BuildCraft.java +++ b/tile/powersink/BuildCraft.java @@ -1,17 +1,14 @@ package appeng.tile.powersink; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import appeng.api.config.PowerUnits; import appeng.core.AppEng; -import appeng.tile.events.AETileEventHandler; -import appeng.tile.events.TileEventType; +import appeng.integration.abstraction.IBC; import appeng.util.Platform; import buildcraft.api.power.IPowerReceptor; import buildcraft.api.power.PowerHandler; import buildcraft.api.power.PowerHandler.PowerReceiver; -import buildcraft.api.power.PowerHandler.Type; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.common.Optional.Method; @@ -20,37 +17,7 @@ import cpw.mods.fml.common.Optional.Method; public abstract class BuildCraft extends AERootPoweredTile implements IPowerReceptor { - private class BCPerdition extends AETileEventHandler - { - - final protected PowerHandler bcPowerHandler; - - public BCPerdition(IPowerReceptor te) { - super( TileEventType.TICK, TileEventType.WORLD_NBT ); - bcPowerHandler = new PowerHandler( te, Type.MACHINE ); - } - - @Override - public void Tick() - { - bcPowerHandler.update(); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - bcPowerHandler.writeToNBT( data, "bcPowerHandler" ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - bcPowerHandler.readFromNBT( data, "bcPowerHandler" ); - } - - }; - - BCPerdition bcPowerWrapper; + BaseBCperdition bcPowerWrapper; public BuildCraft() { if ( Platform.isServer() ) @@ -59,9 +26,12 @@ public abstract class BuildCraft extends AERootPoweredTile implements IPowerRece { if ( Loader.isModLoaded( "BuildCraftAPI|power" ) ) { - if ( AppEng.instance.isIntegrationEnabled( "" ) ) - addNewHandler( bcPowerWrapper = new BCPerdition( this ) ); - bcPowerWrapper.bcPowerHandler.configure( 1, 380, 1.0f / 5.0f, 1000 ); + IBC bcIntegration = (IBC) AppEng.instance.getIntegration( "BC" ); + if ( bcIntegration != null ) + { + addNewHandler( bcPowerWrapper = bcIntegration.createPerdition( this ) ); + bcPowerWrapper.configure( 1, 380, 1.0f / 5.0f, 1000 ); + } } } catch (Throwable t) @@ -75,8 +45,8 @@ public abstract class BuildCraft extends AERootPoweredTile implements IPowerRece @Method(modid = "BuildCraftAPI|power") final public PowerReceiver getPowerReceiver(ForgeDirection side) { - if ( internalCanAcceptPower && getPowerSides().contains( side ) ) - return bcPowerWrapper.bcPowerHandler.getPowerReceiver(); + if ( internalCanAcceptPower && getPowerSides().contains( side ) && bcPowerWrapper != null ) + return bcPowerWrapper.getPowerReceiver(); return null; } @@ -85,9 +55,9 @@ public abstract class BuildCraft extends AERootPoweredTile implements IPowerRece final public void doWork(PowerHandler workProvider) { float requred = (float) getExternalPowerDemand( PowerUnits.MJ ); - double failed = injectExternalPower( PowerUnits.MJ, bcPowerWrapper.bcPowerHandler.useEnergy( 0.0f, requred, true ) ); + double failed = injectExternalPower( PowerUnits.MJ, bcPowerWrapper.useEnergy( 0.0f, requred, true ) ); if ( failed > 0.01 ) - bcPowerWrapper.bcPowerHandler.addEnergy( (float) failed ); + bcPowerWrapper.addEnergy( (float) failed ); } @Override