From 489d6e4262fe46298bc0d760323e1be18d962fe5 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 28 Aug 2014 02:39:52 -0500 Subject: [PATCH] Auto Reflection Based TileEvents. --- debug/TileChunkLoader.java | 25 +-- .../abstraction/helpers/BaseMJperdition.java | 15 +- tile/AEBaseInvTile.java | 57 +++--- tile/AEBaseTile.java | 70 +++++--- tile/TileEvent.java | 13 ++ tile/crafting/TileCraftingMonitorTile.java | 85 ++++----- tile/crafting/TileCraftingTile.java | 44 ++--- tile/crafting/TileMolecularAssembler.java | 112 ++++++------ tile/events/AETileEventHandler.java | 112 ++++++++++-- tile/events/TileEventType.java | 6 +- tile/grid/AENetworkInvTile.java | 31 +--- tile/grid/AENetworkPowerTile.java | 31 +--- tile/grid/AENetworkTile.java | 31 +--- tile/grindstone/TileCrank.java | 58 +++--- tile/misc/TileCellWorkbench.java | 36 ++-- tile/misc/TileCharger.java | 144 +++++++-------- tile/misc/TileCondenser.java | 34 ++-- tile/misc/TileInscriber.java | 100 +++++------ tile/misc/TileInterface.java | 42 ++--- tile/misc/TileLightDetector.java | 27 +-- tile/misc/TilePaint.java | 62 +++---- tile/misc/TileQuartzGrowthAccelerator.java | 40 ++--- tile/misc/TileSecurity.java | 117 ++++++------ tile/misc/TileVibrationChamber.java | 62 +++---- tile/networking/TileCableBus.java | 69 +++---- tile/networking/TileEnergyAcceptor.java | 39 ++-- tile/networking/TileEnergyCell.java | 32 ++-- tile/networking/TileWireless.java | 54 +++--- tile/powersink/AERootPoweredTile.java | 31 +--- tile/powersink/MinecraftJoules5.java | 12 +- tile/powersink/RotaryCraft.java | 26 +-- tile/qnb/TileQuantumBridge.java | 71 ++++---- tile/spatial/TileSpatialIOPort.java | 31 ++-- tile/spatial/TileSpatialPylon.java | 38 ++-- tile/storage/TileChest.java | 170 +++++++++--------- tile/storage/TileDrive.java | 78 ++++---- tile/storage/TileIOPort.java | 43 ++--- tile/storage/TileSkyChest.java | 39 ++-- 38 files changed, 935 insertions(+), 1152 deletions(-) create mode 100644 tile/TileEvent.java diff --git a/debug/TileChunkLoader.java b/debug/TileChunkLoader.java index 27d5b8540..828ed60e8 100644 --- a/debug/TileChunkLoader.java +++ b/debug/TileChunkLoader.java @@ -12,7 +12,7 @@ import net.minecraftforge.common.ForgeChunkManager.Type; import appeng.core.AELog; import appeng.core.AppEng; import appeng.tile.AEBaseTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.util.Platform; import cpw.mods.fml.common.FMLCommonHandler; @@ -23,27 +23,14 @@ public class TileChunkLoader extends AEBaseTile boolean requestTicket = true; Ticket ct; - class ChunkLoaderHandler extends AETileEventHandler + @TileEvent(TileEventType.TICK) + public void Tick_TileChunkLoader() { - - public ChunkLoaderHandler() { - super( TileEventType.TICK ); - } - - @Override - public void Tick() + if ( requestTicket ) { - if ( requestTicket ) - { - requestTicket = false; - initTicket(); - } + requestTicket = false; + initTicket(); } - - }; - - public TileChunkLoader() { - addNewHandler( new ChunkLoaderHandler() ); } void initTicket() diff --git a/integration/abstraction/helpers/BaseMJperdition.java b/integration/abstraction/helpers/BaseMJperdition.java index d7199f7dd..d8789184f 100644 --- a/integration/abstraction/helpers/BaseMJperdition.java +++ b/integration/abstraction/helpers/BaseMJperdition.java @@ -1,17 +1,12 @@ package appeng.integration.abstraction.helpers; -import appeng.tile.events.AETileEventHandler; -import appeng.tile.events.TileEventType; +import net.minecraft.nbt.NBTTagCompound; import appeng.transformer.annotations.integration.Method; import buildcraft.api.power.PowerHandler.PowerReceiver; -public abstract class BaseMJperdition extends AETileEventHandler +public abstract class BaseMJperdition { - public BaseMJperdition() { - super( TileEventType.TICK, TileEventType.WORLD_NBT ); - } - @Method(iname = "MJ5") public abstract PowerReceiver getPowerReceiver(); @@ -21,4 +16,10 @@ public abstract class BaseMJperdition extends AETileEventHandler public abstract void configure(int i, int j, float f, int k); + public abstract void writeToNBT(NBTTagCompound tag); + + public abstract void readFromNBT(NBTTagCompound tag); + + public abstract void Tick(); + } diff --git a/tile/AEBaseInvTile.java b/tile/AEBaseInvTile.java index 84a019182..c3e00c7cb 100644 --- a/tile/AEBaseInvTile.java +++ b/tile/AEBaseInvTile.java @@ -8,7 +8,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; import appeng.block.AEBaseBlock; -import appeng.tile.events.AETileEventHandler; import appeng.tile.events.TileEventType; import appeng.tile.inventory.IAEAppEngInventory; import appeng.tile.inventory.InvOperation; @@ -16,38 +15,32 @@ import appeng.tile.inventory.InvOperation; public abstract class AEBaseInvTile extends AEBaseTile implements ISidedInventory, IAEAppEngInventory { - public AEBaseInvTile() { - addNewHandler( new AETileEventHandler( TileEventType.WORLD_NBT ) { + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_AEBaseInvTile(net.minecraft.nbt.NBTTagCompound data) + { + IInventory inv = getInternalInventory(); + NBTTagCompound opt = data.getCompoundTag( "inv" ); + for (int x = 0; x < inv.getSizeInventory(); x++) + { + NBTTagCompound item = opt.getCompoundTag( "item" + x ); + inv.setInventorySlotContents( x, ItemStack.loadItemStackFromNBT( item ) ); + } + } - @Override - public void readFromNBT(net.minecraft.nbt.NBTTagCompound data) - { - IInventory inv = getInternalInventory(); - NBTTagCompound opt = data.getCompoundTag( "inv" ); - for (int x = 0; x < inv.getSizeInventory(); x++) - { - NBTTagCompound item = opt.getCompoundTag( "item" + x ); - inv.setInventorySlotContents( x, ItemStack.loadItemStackFromNBT( item ) ); - } - } - - @Override - public void writeToNBT(net.minecraft.nbt.NBTTagCompound data) - { - IInventory inv = getInternalInventory(); - NBTTagCompound opt = new NBTTagCompound(); - for (int x = 0; x < inv.getSizeInventory(); x++) - { - NBTTagCompound item = new NBTTagCompound(); - ItemStack is = getStackInSlot( x ); - if ( is != null ) - is.writeToNBT( item ); - opt.setTag( "item" + x, item ); - } - data.setTag( "inv", opt ); - } - - } ); + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_AEBaseInvTile(net.minecraft.nbt.NBTTagCompound data) + { + IInventory inv = getInternalInventory(); + NBTTagCompound opt = new NBTTagCompound(); + for (int x = 0; x < inv.getSizeInventory(); x++) + { + NBTTagCompound item = new NBTTagCompound(); + ItemStack is = getStackInSlot( x ); + if ( is != null ) + is.writeToNBT( item ); + opt.setTag( "item" + x, item ); + } + data.setTag( "inv", opt ); } @Override diff --git a/tile/AEBaseTile.java b/tile/AEBaseTile.java index 937c81e9b..61629bfcc 100644 --- a/tile/AEBaseTile.java +++ b/tile/AEBaseTile.java @@ -3,9 +3,9 @@ package appeng.tile; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.EnumMap; -import java.util.EnumSet; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -38,8 +38,8 @@ import appeng.util.SettingsFrom; public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, ICustomNameObject { - private final EnumMap> handlers = new EnumMap>( TileEventType.class ); - private final static HashMap myItem = new HashMap(); + static private final HashMap>> handlers = new HashMap>>(); + static private final HashMap myItem = new HashMap(); private ForgeDirection forward = ForgeDirection.UNKNOWN; private ForgeDirection up = ForgeDirection.UNKNOWN; @@ -73,26 +73,45 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, protected boolean hasHandlerFor(TileEventType type) { - List list = handlers.get( type ); + List list = getHandlerListFor( type ); return list != null; } protected List getHandlerListFor(TileEventType type) { - List list = handlers.get( type ); + Class clz = getClass(); + EnumMap> handlerSet = handlers.get( clz ); + + if ( handlerSet == null ) + { + handlers.put( clz, handlerSet = new EnumMap>( TileEventType.class ) ); + + for (Method m : clz.getMethods()) + { + TileEvent te = m.getAnnotation( TileEvent.class ); + if ( te != null ) + { + addHandler( handlerSet, te.value(), m ); + } + } + } + + List list = handlerSet.get( type ); if ( list == null ) - handlers.put( type, list = new LinkedList() ); + handlerSet.put( type, list = new LinkedList() ); return list; } - protected void addNewHandler(AETileEventHandler handler) + private void addHandler(EnumMap> handlerSet, TileEventType value, Method m) { - EnumSet types = handler.getSubscribedEvents(); + List list = handlerSet.get( value ); - for (TileEventType type : types) - getHandlerListFor( type ).add( handler ); + if ( list == null ) + handlerSet.put( value, list = new ArrayList() ); + + list.add( new AETileEventHandler( m, value ) ); } @Override @@ -101,11 +120,16 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, return hasHandlerFor( TileEventType.TICK ); } + final public void Tick() + { + + } + @Override final public void updateEntity() { for (AETileEventHandler h : getHandlerListFor( TileEventType.TICK )) - h.Tick(); + h.Tick( this ); } @Override @@ -126,7 +150,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, @Override // NOTE: WAS FINAL, changed for Immibis - public void writeToNBT(NBTTagCompound data) + final public void writeToNBT(NBTTagCompound data) { super.writeToNBT( data ); @@ -139,13 +163,13 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, if ( customName != null ) data.setString( "customName", customName ); - for (AETileEventHandler h : getHandlerListFor( TileEventType.WORLD_NBT )) - h.writeToNBT( data ); + for (AETileEventHandler h : getHandlerListFor( TileEventType.WORLD_NBT_WRITE )) + h.writeToNBT( this, data ); } @Override // NOTE: WAS FINAL, changed for Immibis - public void readFromNBT(NBTTagCompound data) + final public void readFromNBT(NBTTagCompound data) { super.readFromNBT( data ); @@ -166,9 +190,9 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, { } - for (AETileEventHandler h : getHandlerListFor( TileEventType.WORLD_NBT )) + for (AETileEventHandler h : getHandlerListFor( TileEventType.WORLD_NBT_READ )) { - h.readFromNBT( data ); + h.readFromNBT( this, data ); } } @@ -182,8 +206,8 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, data.writeByte( orientation ); } - for (AETileEventHandler h : getHandlerListFor( TileEventType.NETWORK )) - h.writeToStream( data ); + for (AETileEventHandler h : getHandlerListFor( TileEventType.NETWORK_WRITE )) + h.writeToStream( this, data ); } catch (Throwable t) { @@ -191,7 +215,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, } } - final public boolean readfromStream(ByteBuf data) + final public boolean readFromStream(ByteBuf data) { boolean output = false; @@ -211,8 +235,8 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, } renderFragment = 100; - for (AETileEventHandler h : getHandlerListFor( TileEventType.NETWORK )) - if ( h.readFromStream( data ) ) + for (AETileEventHandler h : getHandlerListFor( TileEventType.NETWORK_READ )) + if ( h.readFromStream( this, data ) ) output = true; if ( (renderFragment & 1) == 1 ) @@ -296,7 +320,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, if ( pkt.func_148853_f() == 64 ) { ByteBuf stream = Unpooled.copiedBuffer( pkt.func_148857_g().getByteArray( "X" ) ); - if ( readfromStream( stream ) ) + if ( readFromStream( stream ) ) markForUpdate(); } } diff --git a/tile/TileEvent.java b/tile/TileEvent.java new file mode 100644 index 000000000..aebc028de --- /dev/null +++ b/tile/TileEvent.java @@ -0,0 +1,13 @@ +package appeng.tile; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import appeng.tile.events.TileEventType; + +@Retention(RetentionPolicy.RUNTIME) +public @interface TileEvent { + + TileEventType value(); + +} diff --git a/tile/crafting/TileCraftingMonitorTile.java b/tile/crafting/TileCraftingMonitorTile.java index e34ab58dd..c428d9d34 100644 --- a/tile/crafting/TileCraftingMonitorTile.java +++ b/tile/crafting/TileCraftingMonitorTile.java @@ -10,7 +10,7 @@ import net.minecraftforge.common.util.ForgeDirection; import appeng.api.implementations.tiles.IColorableTile; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.AEColor; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.util.item.AEItemStack; import cpw.mods.fml.relauncher.Side; @@ -28,61 +28,48 @@ public class TileCraftingMonitorTile extends TileCraftingTile implements IColora IAEItemStack dspPlay; AEColor paintedColor = AEColor.Transparent; - class CraftingMonitorHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileCraftingMonitorTile(ByteBuf data) throws IOException { + AEColor oldPaintedColor = paintedColor; + paintedColor = AEColor.values()[data.readByte()]; - public CraftingMonitorHandler() { - super( TileEventType.NETWORK, TileEventType.WORLD_NBT ); - } + boolean hasItem = data.readBoolean(); - @Override - public boolean readFromStream(ByteBuf data) throws IOException + if ( hasItem ) + dspPlay = AEItemStack.loadItemStackFromPacket( data ); + else + dspPlay = null; + + updateList = true; + return oldPaintedColor != paintedColor; // tesr! + } + + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileCraftingMonitorTile(ByteBuf data) throws IOException + { + data.writeByte( paintedColor.ordinal() ); + + if ( dspPlay == null ) + data.writeBoolean( false ); + else { - AEColor oldPaintedColor = paintedColor; - paintedColor = AEColor.values()[data.readByte()]; - - boolean hasItem = data.readBoolean(); - - if ( hasItem ) - dspPlay = AEItemStack.loadItemStackFromPacket( data ); - else - dspPlay = null; - - updateList = true; - return oldPaintedColor != paintedColor; // tesr! + data.writeBoolean( true ); + dspPlay.writeToPacket( data ); } + } - @Override - public void writeToStream(ByteBuf data) throws IOException - { - data.writeByte( paintedColor.ordinal() ); + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileCraftingMonitorTile(NBTTagCompound data) + { + if ( data.hasKey( "paintedColor" ) ) + paintedColor = AEColor.values()[data.getByte( "paintedColor" )]; + } - if ( dspPlay == null ) - data.writeBoolean( false ); - else - { - data.writeBoolean( true ); - dspPlay.writeToPacket( data ); - } - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - if ( data.hasKey( "paintedColor" ) ) - paintedColor = AEColor.values()[data.getByte( "paintedColor" )]; - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - data.setByte( "paintedColor", (byte) paintedColor.ordinal() ); - } - - }; - - public TileCraftingMonitorTile() { - addNewHandler( new CraftingMonitorHandler() ); + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileCraftingMonitorTile(NBTTagCompound data) + { + data.setByte( "paintedColor", (byte) paintedColor.ordinal() ); } public boolean isAccelerator() diff --git a/tile/crafting/TileCraftingTile.java b/tile/crafting/TileCraftingTile.java index 65b628918..6c3ca7432 100644 --- a/tile/crafting/TileCraftingTile.java +++ b/tile/crafting/TileCraftingTile.java @@ -28,7 +28,7 @@ import appeng.me.cluster.implementations.CraftingCPUCalculator; import appeng.me.cluster.implementations.CraftingCPUCluster; import appeng.me.helpers.AENetworkProxy; import appeng.me.helpers.AENetworkProxyMultiblock; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkTile; import appeng.util.Platform; @@ -78,38 +78,28 @@ public class TileCraftingTile extends AENetworkTile implements IAEMultiBlock, IP clust.updateName(); } - private class CraftingHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileCraftingTile(NBTTagCompound data) { + data.setBoolean( "core", isCoreBlock ); + if ( isCoreBlock && clust != null ) + clust.writeToNBT( data ); + } - public CraftingHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileCraftingTile(NBTTagCompound data) + { + isCoreBlock = data.getBoolean( "core" ); + if ( isCoreBlock ) { - data.setBoolean( "core", isCoreBlock ); - if ( isCoreBlock && clust != null ) - clust.writeToNBT( data ); + if ( clust != null ) + clust.readFromNBT( data ); + else + previousState = (NBTTagCompound) data.copy(); } - - @Override - public void readFromNBT(NBTTagCompound data) - { - isCoreBlock = data.getBoolean( "core" ); - if ( isCoreBlock ) - { - if ( clust != null ) - clust.readFromNBT( data ); - else - previousState = (NBTTagCompound) data.copy(); - } - } - - }; + } public TileCraftingTile() { - addNewHandler( new CraftingHandler() ); gridProxy.setFlags( GridFlags.MULTIBLOCK, GridFlags.REQUIRE_CHANNEL ); gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); } diff --git a/tile/crafting/TileMolecularAssembler.java b/tile/crafting/TileMolecularAssembler.java index 004942c31..40a29eb01 100644 --- a/tile/crafting/TileMolecularAssembler.java +++ b/tile/crafting/TileMolecularAssembler.java @@ -41,7 +41,7 @@ import appeng.core.sync.packets.PacketAssemblerAnimation; import appeng.items.misc.ItemEncodedPattern; import appeng.me.GridAccessException; import appeng.parts.automation.UpgradeInventory; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -175,81 +175,71 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IAEAppEn return 5; } - private class TileMolecularAssemblerHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileMolecularAssembler(ByteBuf data) throws IOException { + boolean oldPower = isPowered; + isPowered = data.readBoolean(); + return isPowered != oldPower; + } - public TileMolecularAssemblerHandler() { - super( TileEventType.WORLD_NBT, TileEventType.NETWORK ); - } + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileMolecularAssembler(ByteBuf data) throws IOException + { + data.writeBoolean( isPowered ); + } - @Override - public boolean readFromStream(ByteBuf data) throws IOException + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileMolecularAssembler(NBTTagCompound data) + { + if ( forcePlan && myPlan != null ) { - boolean oldPower = isPowered; - isPowered = data.readBoolean(); - return isPowered != oldPower; - } - - @Override - public void writeToStream(ByteBuf data) throws IOException - { - data.writeBoolean( isPowered ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - if ( forcePlan && myPlan != null ) + ItemStack pattern = myPlan.getPattern(); + if ( pattern != null ) { - ItemStack pattern = myPlan.getPattern(); - if ( pattern != null ) + NBTTagCompound pdata = new NBTTagCompound(); + pattern.writeToNBT( pdata ); + data.setTag( "myPlan", pdata ); + data.setInteger( "pushDirection", pushDirection.ordinal() ); + } + } + + upgrades.writeToNBT( data, "upgrades" ); + inv.writeToNBT( data, "inv" ); + settings.writeToNBT( data ); + } + + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileMolecularAssembler(NBTTagCompound data) + { + if ( data.hasKey( "myPlan" ) ) + { + ItemStack myPat = ItemStack.loadItemStackFromNBT( data.getCompoundTag( "myPlan" ) ); + + if ( myPat != null && myPat.getItem() instanceof ItemEncodedPattern ) + { + World w = getWorldObj(); + ItemEncodedPattern iep = (ItemEncodedPattern) myPat.getItem(); + ICraftingPatternDetails ph = iep.getPatternForItem( myPat, w ); + if ( ph != null && ph.isCraftable() ) { - NBTTagCompound pdata = new NBTTagCompound(); - pattern.writeToNBT( pdata ); - data.setTag( "myPlan", pdata ); - data.setInteger( "pushDirection", pushDirection.ordinal() ); + forcePlan = true; + myPlan = ph; + pushDirection = ForgeDirection.getOrientation( data.getInteger( "pushDirection" ) ); } } - - upgrades.writeToNBT( data, "upgrades" ); - inv.writeToNBT( data, "inv" ); - settings.writeToNBT( data ); } - @Override - public void readFromNBT(NBTTagCompound data) - { - if ( data.hasKey( "myPlan" ) ) - { - ItemStack myPat = ItemStack.loadItemStackFromNBT( data.getCompoundTag( "myPlan" ) ); - - if ( myPat != null && myPat.getItem() instanceof ItemEncodedPattern ) - { - World w = getWorldObj(); - ItemEncodedPattern iep = (ItemEncodedPattern) myPat.getItem(); - ICraftingPatternDetails ph = iep.getPatternForItem( myPat, w ); - if ( ph != null && ph.isCraftable() ) - { - forcePlan = true; - myPlan = ph; - pushDirection = ForgeDirection.getOrientation( data.getInteger( "pushDirection" ) ); - } - } - } - - upgrades.readFromNBT( data, "upgrades" ); - inv.readFromNBT( data, "inv" ); - settings.readFromNBT( data ); - recalculatePlan(); - } - - }; + upgrades.readFromNBT( data, "upgrades" ); + inv.readFromNBT( data, "inv" ); + settings.readFromNBT( data ); + recalculatePlan(); + } public TileMolecularAssembler() { settings.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE ); inv.setMaxStackSize( 1 ); gridProxy.setIdlePowerUsage( 0.0 ); - addNewHandler( new TileMolecularAssemblerHandler() ); } @Override diff --git a/tile/events/AETileEventHandler.java b/tile/events/AETileEventHandler.java index d5de8bd3a..e07c2717f 100644 --- a/tile/events/AETileEventHandler.java +++ b/tile/events/AETileEventHandler.java @@ -3,46 +3,107 @@ package appeng.tile.events; import io.netty.buffer.ByteBuf; import java.io.IOException; -import java.util.EnumSet; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import net.minecraft.nbt.NBTTagCompound; +import appeng.tile.AEBaseTile; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public abstract class AETileEventHandler +public class AETileEventHandler { - final EnumSet supportedEvents; + private final Method method; + private final TileEventType type; - public AETileEventHandler(TileEventType... events) { - supportedEvents = EnumSet.noneOf( TileEventType.class ); - for (TileEventType t : events) - supportedEvents.add( t ); - } - - public EnumSet getSubscribedEvents() - { - return supportedEvents; + public AETileEventHandler(Method m, TileEventType which) { + method = m; + type = which; } // TICK - public void Tick() + public void Tick(AEBaseTile tile) { + try + { + method.invoke( tile ); + } + catch (IllegalAccessException e) + { + throw new RuntimeException( e ); + } + catch (IllegalArgumentException e) + { + throw new RuntimeException( e ); + } + catch (InvocationTargetException e) + { + throw new RuntimeException( e ); + } } // WORLD_NBT - public void writeToNBT(NBTTagCompound data) + public void writeToNBT(AEBaseTile tile, NBTTagCompound data) { + try + { + method.invoke( tile, data ); + } + catch (IllegalAccessException e) + { + throw new RuntimeException( e ); + } + catch (IllegalArgumentException e) + { + throw new RuntimeException( e ); + } + catch (InvocationTargetException e) + { + throw new RuntimeException( e ); + } } // WORLD NBT - public void readFromNBT(NBTTagCompound data) + public void readFromNBT(AEBaseTile tile, NBTTagCompound data) { + try + { + method.invoke( tile, data ); + } + catch (IllegalAccessException e) + { + throw new RuntimeException( e ); + } + catch (IllegalArgumentException e) + { + throw new RuntimeException( e ); + } + catch (InvocationTargetException e) + { + throw new RuntimeException( e ); + } } // NETWORK - public void writeToStream(ByteBuf data) throws IOException + public void writeToStream(AEBaseTile tile, ByteBuf data) throws IOException { + try + { + method.invoke( tile, data ); + } + catch (IllegalAccessException e) + { + throw new RuntimeException( e ); + } + catch (IllegalArgumentException e) + { + throw new RuntimeException( e ); + } + catch (InvocationTargetException e) + { + throw new RuntimeException( e ); + } } // NETWORK @@ -54,9 +115,24 @@ public abstract class AETileEventHandler * @throws IOException */ @SideOnly(Side.CLIENT) - public boolean readFromStream(ByteBuf data) throws IOException + public boolean readFromStream(AEBaseTile tile, ByteBuf data) throws IOException { - return false; + try + { + return (Boolean) method.invoke( tile, data ); + } + catch (IllegalAccessException e) + { + throw new RuntimeException( e ); + } + catch (IllegalArgumentException e) + { + throw new RuntimeException( e ); + } + catch (InvocationTargetException e) + { + throw new RuntimeException( e ); + } } } diff --git a/tile/events/TileEventType.java b/tile/events/TileEventType.java index d78a85090..accf36b28 100644 --- a/tile/events/TileEventType.java +++ b/tile/events/TileEventType.java @@ -2,5 +2,9 @@ package appeng.tile.events; public enum TileEventType { - TICK, WORLD_NBT, NETWORK + TICK, + + WORLD_NBT_READ, WORLD_NBT_WRITE, + + NETWORK_READ, NETWORK_WRITE } diff --git a/tile/grid/AENetworkInvTile.java b/tile/grid/AENetworkInvTile.java index 4fa4e22d4..e88cceefc 100644 --- a/tile/grid/AENetworkInvTile.java +++ b/tile/grid/AENetworkInvTile.java @@ -7,35 +7,22 @@ import appeng.api.networking.security.IActionHost; import appeng.me.helpers.AENetworkProxy; import appeng.me.helpers.IGridProxyable; import appeng.tile.AEBaseInvTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; public abstract class AENetworkInvTile extends AEBaseInvTile implements IActionHost, IGridProxyable { - class AENetworkInvTileHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_AENetwork(NBTTagCompound data) { + gridProxy.readFromNBT( data ); + } - public AENetworkInvTileHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - gridProxy.readFromNBT( data ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - gridProxy.writeToNBT( data ); - } - - }; - - public AENetworkInvTile() { - addNewHandler( new AENetworkInvTileHandler() ); + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_AENetwork(NBTTagCompound data) + { + gridProxy.writeToNBT( data ); } protected AENetworkProxy gridProxy = new AENetworkProxy( this, "proxy", getItemFromTile( this ), true ); diff --git a/tile/grid/AENetworkPowerTile.java b/tile/grid/AENetworkPowerTile.java index 4275d9372..d2f0bc70c 100644 --- a/tile/grid/AENetworkPowerTile.java +++ b/tile/grid/AENetworkPowerTile.java @@ -8,36 +8,23 @@ import appeng.api.util.AECableType; import appeng.api.util.DimensionalCoord; import appeng.me.helpers.AENetworkProxy; import appeng.me.helpers.IGridProxyable; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.powersink.AEBasePoweredTile; public abstract class AENetworkPowerTile extends AEBasePoweredTile implements IActionHost, IGridProxyable { - class AENetworkPowerTileHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_AENetwork(NBTTagCompound data) { + gridProxy.readFromNBT( data ); + } - public AENetworkPowerTileHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - gridProxy.readFromNBT( data ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - gridProxy.writeToNBT( data ); - } - - }; - - public AENetworkPowerTile() { - addNewHandler( new AENetworkPowerTileHandler() ); + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_AENetwork(NBTTagCompound data) + { + gridProxy.writeToNBT( data ); } protected AENetworkProxy gridProxy = new AENetworkProxy( this, "proxy", getItemFromTile( this ), true ); diff --git a/tile/grid/AENetworkTile.java b/tile/grid/AENetworkTile.java index 14307c0ee..863c181bc 100644 --- a/tile/grid/AENetworkTile.java +++ b/tile/grid/AENetworkTile.java @@ -9,35 +9,22 @@ import appeng.api.util.DimensionalCoord; import appeng.me.helpers.AENetworkProxy; import appeng.me.helpers.IGridProxyable; import appeng.tile.AEBaseTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; public class AENetworkTile extends AEBaseTile implements IActionHost, IGridProxyable { - class AENetworkTileHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_AENetwork(NBTTagCompound data) { + gridProxy.readFromNBT( data ); + } - public AENetworkTileHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - gridProxy.readFromNBT( data ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - gridProxy.writeToNBT( data ); - } - - }; - - public AENetworkTile() { - addNewHandler( new AENetworkTileHandler() ); + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_AENetwork(NBTTagCompound data) + { + gridProxy.writeToNBT( data ); } final protected AENetworkProxy gridProxy = createProxy(); diff --git a/tile/grindstone/TileCrank.java b/tile/grindstone/TileCrank.java index d5a896f53..cb53ef575 100644 --- a/tile/grindstone/TileCrank.java +++ b/tile/grindstone/TileCrank.java @@ -13,7 +13,7 @@ import net.minecraftforge.common.util.ForgeDirection; import appeng.api.implementations.tiles.ICrankable; import appeng.helpers.ICustomCollision; import appeng.tile.AEBaseTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.util.Platform; @@ -29,42 +29,36 @@ public class TileCrank extends AEBaseTile implements ICustomCollision public int hits = 0; public int rotation = 0; - public TileCrank() { - addNewHandler( new AETileEventHandler( TileEventType.NETWORK, TileEventType.TICK ) { - - @Override - public void Tick() + @TileEvent(TileEventType.TICK) + public void Tick_TileCrank() + { + if ( rotation > 0 ) + { + visibleRotation -= 360 / (ticksPerRoation); + charge++; + if ( charge >= ticksPerRoation ) { - if ( rotation > 0 ) - { - visibleRotation -= 360 / (ticksPerRoation); - charge++; - if ( charge >= ticksPerRoation ) - { - charge -= ticksPerRoation; - ICrankable g = getGrinder(); - if ( g != null ) - g.applyTurn(); - } - - rotation--; - } + charge -= ticksPerRoation; + ICrankable g = getGrinder(); + if ( g != null ) + g.applyTurn(); } - @Override - public boolean readFromStream(ByteBuf data) throws java.io.IOException - { - rotation = data.readInt(); - return false; - } + rotation--; + } + } - @Override - public void writeToStream(ByteBuf data) throws java.io.IOException - { - data.writeInt( rotation ); - } + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileCrank(ByteBuf data) throws java.io.IOException + { + rotation = data.readInt(); + return false; + } - } ); + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileCrank(ByteBuf data) throws java.io.IOException + { + data.writeInt( rotation ); } public ICrankable getGrinder() diff --git a/tile/misc/TileCellWorkbench.java b/tile/misc/TileCellWorkbench.java index b8bd51bdd..8b93f215d 100644 --- a/tile/misc/TileCellWorkbench.java +++ b/tile/misc/TileCellWorkbench.java @@ -14,7 +14,7 @@ import appeng.api.storage.ICellWorkbenchItem; import appeng.api.util.IConfigManager; import appeng.api.util.IConfigureableObject; import appeng.tile.AEBaseTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.inventory.AppEngInternalAEInventory; import appeng.tile.inventory.AppEngInternalInventory; @@ -75,33 +75,23 @@ public class TileCellWorkbench extends AEBaseTile implements IUpgradeableHost, I return cacheConfig; } - class TileCellWorkbenchHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileCellWorkbench(NBTTagCompound data) { + cell.writeToNBT( data, "cell" ); + config.writeToNBT( data, "config" ); + cm.writeToNBT( data ); + } - public TileCellWorkbenchHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - cell.writeToNBT( data, "cell" ); - config.writeToNBT( data, "config" ); - cm.writeToNBT( data ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - cell.readFromNBT( data, "cell" ); - config.readFromNBT( data, "config" ); - cm.readFromNBT( data ); - } - + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileCellWorkbench(NBTTagCompound data) + { + cell.readFromNBT( data, "cell" ); + config.readFromNBT( data, "config" ); + cm.readFromNBT( data ); } public TileCellWorkbench() { - addNewHandler( new TileCellWorkbenchHandler() ); cm.registerSetting( Settings.COPY_MODE, CopyMode.CLEAR_ON_REMOVE ); cell.enableClientEvents = true; } diff --git a/tile/misc/TileCharger.java b/tile/misc/TileCharger.java index e93b27e1e..e84827f4b 100644 --- a/tile/misc/TileCharger.java +++ b/tile/misc/TileCharger.java @@ -21,7 +21,7 @@ import appeng.api.storage.data.IAEItemStack; import appeng.api.util.AECableType; import appeng.me.GridAccessException; import appeng.server.AccessType; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkPowerTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -45,105 +45,95 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable return AECableType.COVERED; } - private class TileChargerHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileCharger(ByteBuf data) throws IOException { - - public TileChargerHandler() { - super( TileEventType.TICK, TileEventType.NETWORK ); + try + { + IAEItemStack item = AEItemStack.loadItemStackFromPacket( data ); + ItemStack is = item.getItemStack(); + inv.setInventorySlotContents( 0, is ); } + catch (Throwable t) + { + inv.setInventorySlotContents( 0, null ); + } + return false; // TESR dosn't need updates! + } - @Override - public boolean readFromStream(ByteBuf data) throws IOException + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileCharger(ByteBuf data) throws IOException + { + AEItemStack is = AEItemStack.create( getStackInSlot( 0 ) ); + if ( is != null ) + is.writeToPacket( data ); + } + + @TileEvent(TileEventType.TICK) + public void Tick_TileCharger() + { + if ( lastUpdate > 60 && requiresUpdate ) + { + requiresUpdate = false; + markForUpdate(); + lastUpdate = 0; + } + lastUpdate++; + + tickTickTimer++; + if ( tickTickTimer < 20 ) + return; + tickTickTimer = 0; + + ItemStack myItem = getStackInSlot( 0 ); + + // charge from the network! + if ( internalCurrentPower < 1499 ) { try { - IAEItemStack item = AEItemStack.loadItemStackFromPacket( data ); - ItemStack is = item.getItemStack(); - inv.setInventorySlotContents( 0, is ); + injectExternalPower( PowerUnits.AE, + gridProxy.getEnergy().extractAEPower( Math.min( 150.0, 1500.0 - internalCurrentPower ), Actionable.MODULATE, PowerMultiplier.ONE ) ); + tickTickTimer = 20; // keep tickin... } - catch (Throwable t) + catch (GridAccessException e) { - inv.setInventorySlotContents( 0, null ); + // continue! } - return false; // TESR dosn't need updates! } - @Override - public void writeToStream(ByteBuf data) throws IOException + if ( myItem == null ) + return; + + if ( internalCurrentPower > 149 && Platform.isChargeable( myItem ) ) { - AEItemStack is = AEItemStack.create( getStackInSlot( 0 ) ); - if ( is != null ) - is.writeToPacket( data ); - } + IAEItemPowerStorage ps = (IAEItemPowerStorage) myItem.getItem(); + if ( ps.getAEMaxPower( myItem ) > ps.getAECurrentPower( myItem ) ) + { + double oldPower = internalCurrentPower; - @Override - public void Tick() + double adjustment = ps.injectAEPower( myItem, extractAEPower( 150.0, Actionable.MODULATE, PowerMultiplier.CONFIG ) ); + internalCurrentPower += adjustment; + if ( oldPower > internalCurrentPower ) + requiresUpdate = true; + tickTickTimer = 20; // keep tickin... + } + } + else if ( internalCurrentPower > 1499 && AEApi.instance().materials().materialCertusQuartzCrystal.sameAsStack( myItem ) ) { - if ( lastUpdate > 60 && requiresUpdate ) + if ( Platform.getRandomFloat() > 0.8f ) // simulate wait { - requiresUpdate = false; - markForUpdate(); - lastUpdate = 0; - } - lastUpdate++; - - tickTickTimer++; - if ( tickTickTimer < 20 ) - return; - tickTickTimer = 0; - - ItemStack myItem = getStackInSlot( 0 ); - - // charge from the network! - if ( internalCurrentPower < 1499 ) - { - try - { - injectExternalPower( PowerUnits.AE, - gridProxy.getEnergy().extractAEPower( Math.min( 150.0, 1500.0 - internalCurrentPower ), Actionable.MODULATE, PowerMultiplier.ONE ) ); - tickTickTimer = 20; // keep tickin... - } - catch (GridAccessException e) - { - // continue! - } - } - - if ( myItem == null ) - return; - - if ( internalCurrentPower > 149 && Platform.isChargeable( myItem ) ) - { - IAEItemPowerStorage ps = (IAEItemPowerStorage) myItem.getItem(); - if ( ps.getAEMaxPower( myItem ) > ps.getAECurrentPower( myItem ) ) - { - double oldPower = internalCurrentPower; - - double adjustment = ps.injectAEPower( myItem, extractAEPower( 150.0, Actionable.MODULATE, PowerMultiplier.CONFIG ) ); - internalCurrentPower += adjustment; - if ( oldPower > internalCurrentPower ) - requiresUpdate = true; - tickTickTimer = 20; // keep tickin... - } - } - else if ( internalCurrentPower > 1499 && AEApi.instance().materials().materialCertusQuartzCrystal.sameAsStack( myItem ) ) - { - if ( Platform.getRandomFloat() > 0.8f ) // simulate wait - { - extractAEPower( internalMaxPower, Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500 - setInventorySlotContents( 0, AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( myItem.stackSize ) ); - } + extractAEPower( internalMaxPower, Actionable.MODULATE, PowerMultiplier.CONFIG );// 1500 + setInventorySlotContents( 0, AEApi.instance().materials().materialCertusQuartzCrystalCharged.stack( myItem.stackSize ) ); } } - - }; + } public TileCharger() { gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); gridProxy.setFlags(); internalMaxPower = 1500; gridProxy.setIdlePowerUsage( 0 ); - addNewHandler( new TileChargerHandler() ); } @Override diff --git a/tile/misc/TileCondenser.java b/tile/misc/TileCondenser.java index 2021ba8d6..8e6434ab4 100644 --- a/tile/misc/TileCondenser.java +++ b/tile/misc/TileCondenser.java @@ -15,7 +15,7 @@ import appeng.api.implementations.items.IStorageComponent; import appeng.api.util.IConfigManager; import appeng.api.util.IConfigureableObject; import appeng.tile.AEBaseInvTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.IAEAppEngInventory; @@ -34,31 +34,21 @@ public class TileCondenser extends AEBaseInvTile implements IAEAppEngInventory, public double storedPower = 0; - private class TileCondenserHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileCondenser(NBTTagCompound data) { + cm.writeToNBT( data ); + data.setDouble( "storedPower", storedPower ); + } - public TileCondenserHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - cm.writeToNBT( data ); - data.setDouble( "storedPower", storedPower ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - cm.readFromNBT( data ); - storedPower = data.getDouble( "storedPower" ); - } - - }; + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileCondenser(NBTTagCompound data) + { + cm.readFromNBT( data ); + storedPower = data.getDouble( "storedPower" ); + } public TileCondenser() { - addNewHandler( new TileCondenserHandler() ); cm.registerSetting( Settings.CONDENSER_OUTPUT, CondenserOuput.TRASH ); } diff --git a/tile/misc/TileInscriber.java b/tile/misc/TileInscriber.java index 584b209bd..6aa5e9a6e 100644 --- a/tile/misc/TileInscriber.java +++ b/tile/misc/TileInscriber.java @@ -23,7 +23,7 @@ import appeng.core.settings.TickRates; import appeng.me.GridAccessException; import appeng.recipes.handlers.Inscribe; import appeng.recipes.handlers.Inscribe.InscriberRecipe; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkPowerTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -57,73 +57,64 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable return AECableType.COVERED; } - private class TileInscriberHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileInscriber(NBTTagCompound data) { + inv.writeToNBT( data, "inscriberInv" ); + } - public TileInscriberHandler() { - super( TileEventType.WORLD_NBT, TileEventType.NETWORK ); + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileInscriber(NBTTagCompound data) + { + inv.readFromNBT( data, "inscriberInv" ); + } + + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileInscriber(ByteBuf data) throws IOException + { + int slot = data.readByte(); + + boolean oldSmash = smash; + boolean newSmash = (slot & 64) == 64; + + if ( oldSmash != newSmash && newSmash ) + { + smash = true; + clientStart = System.currentTimeMillis(); } - @Override - public void writeToNBT(NBTTagCompound data) + for (int num = 0; num < inv.getSizeInventory(); num++) { - inv.writeToNBT( data, "inscriberInv" ); + if ( (slot & (1 << num)) > 0 ) + inv.setInventorySlotContents( num, AEItemStack.loadItemStackFromPacket( data ).getItemStack() ); + else + inv.setInventorySlotContents( num, null ); } - @Override - public void readFromNBT(NBTTagCompound data) + return false; + } + + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileInscriber(ByteBuf data) throws IOException + { + int slot = smash ? 64 : 0; + + for (int num = 0; num < inv.getSizeInventory(); num++) { - inv.readFromNBT( data, "inscriberInv" ); + if ( inv.getStackInSlot( num ) != null ) + slot = slot | (1 << num); } - @Override - public boolean readFromStream(ByteBuf data) throws IOException + data.writeByte( slot ); + for (int num = 0; num < inv.getSizeInventory(); num++) { - int slot = data.readByte(); - - boolean oldSmash = smash; - boolean newSmash = (slot & 64) == 64; - - if ( oldSmash != newSmash && newSmash ) + if ( (slot & (1 << num)) > 0 ) { - smash = true; - clientStart = System.currentTimeMillis(); - } - - for (int num = 0; num < inv.getSizeInventory(); num++) - { - if ( (slot & (1 << num)) > 0 ) - inv.setInventorySlotContents( num, AEItemStack.loadItemStackFromPacket( data ).getItemStack() ); - else - inv.setInventorySlotContents( num, null ); - } - - return false; - } - - @Override - public void writeToStream(ByteBuf data) throws IOException - { - int slot = smash ? 64 : 0; - - for (int num = 0; num < inv.getSizeInventory(); num++) - { - if ( inv.getStackInSlot( num ) != null ) - slot = slot | (1 << num); - } - - data.writeByte( slot ); - for (int num = 0; num < inv.getSizeInventory(); num++) - { - if ( (slot & (1 << num)) > 0 ) - { - AEItemStack st = AEItemStack.create( inv.getStackInSlot( num ) ); - st.writeToPacket( data ); - } + AEItemStack st = AEItemStack.create( inv.getStackInSlot( num ) ); + st.writeToPacket( data ); } } - - }; + } @Override public boolean requiresTESR() @@ -135,7 +126,6 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); internalMaxPower = 1500; gridProxy.setIdlePowerUsage( 0 ); - addNewHandler( new TileInscriberHandler() ); } @Override diff --git a/tile/misc/TileInterface.java b/tile/misc/TileInterface.java index 58bb98142..4742d1829 100644 --- a/tile/misc/TileInterface.java +++ b/tile/misc/TileInterface.java @@ -36,7 +36,7 @@ import appeng.api.util.IConfigureableObject; import appeng.helpers.DualityInterface; import appeng.helpers.IInterfaceHost; import appeng.helpers.IPriorityHost; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.InvOperation; @@ -100,36 +100,24 @@ public class TileInterface extends AENetworkInvTile implements IGridTickable, IS duality.gridChanged(); } - class TileInterfaceHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileInterface(NBTTagCompound data) { + data.setInteger( "pointAt", pointAt.ordinal() ); + duality.writeToNBT( data ); + } - public TileInterfaceHandler() { - super( TileEventType.WORLD_NBT ); - } + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileInterface(NBTTagCompound data) + { + int val = data.getInteger( "pointAt" ); - @Override - public void writeToNBT(NBTTagCompound data) - { - data.setInteger( "pointAt", pointAt.ordinal() ); - duality.writeToNBT( data ); - } + if ( val >= 0 && val < ForgeDirection.values().length ) + pointAt = ForgeDirection.values()[val]; + else + pointAt = ForgeDirection.UNKNOWN; - @Override - public void readFromNBT(NBTTagCompound data) - { - int val = data.getInteger( "pointAt" ); - - if ( val >= 0 && val < ForgeDirection.values().length ) - pointAt = ForgeDirection.values()[val]; - else - pointAt = ForgeDirection.UNKNOWN; - - duality.readFromNBT( data ); - } - }; - - public TileInterface() { - addNewHandler( new TileInterfaceHandler() ); + duality.readFromNBT( data ); } @Override diff --git a/tile/misc/TileLightDetector.java b/tile/misc/TileLightDetector.java index bb2bd972e..cc948c272 100644 --- a/tile/misc/TileLightDetector.java +++ b/tile/misc/TileLightDetector.java @@ -1,7 +1,7 @@ package appeng.tile.misc; import appeng.tile.AEBaseTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.util.Platform; @@ -16,28 +16,15 @@ public class TileLightDetector extends AEBaseTile return lastLight > 0; } - class LightDetectorHandler extends AETileEventHandler + @TileEvent(TileEventType.TICK) + public void Tick_TileLightDetector() { - - public LightDetectorHandler() { - super( TileEventType.TICK ); - } - - @Override - public void Tick() + lastCheck++; + if ( lastCheck > 30 ) { - lastCheck++; - if ( lastCheck > 30 ) - { - lastCheck = 0; - updateLight(); - } + lastCheck = 0; + updateLight(); } - - }; - - public TileLightDetector() { - addNewHandler( new LightDetectorHandler() ); } public void updateLight() diff --git a/tile/misc/TilePaint.java b/tile/misc/TilePaint.java index 2bc4c1ff8..a79cddf56 100644 --- a/tile/misc/TilePaint.java +++ b/tile/misc/TilePaint.java @@ -19,7 +19,7 @@ import appeng.api.util.AEColor; import appeng.helpers.Splot; import appeng.items.misc.ItemPaintBall; import appeng.tile.AEBaseTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import com.google.common.collect.ImmutableList; @@ -73,45 +73,33 @@ public class TilePaint extends AEBaseTile maxLit(); } - class PaintHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TilePaint(NBTTagCompound data) { - - public PaintHandler() { - super( TileEventType.NETWORK, TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - ByteBuf myDat = Unpooled.buffer(); - writeBuffer( myDat ); - if ( myDat.hasArray() ) - data.setByteArray( "dots", myDat.array() ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - if ( data.hasKey( "dots" ) ) - readBuffer( Unpooled.copiedBuffer( data.getByteArray( "dots" ) ) ); - } - - @Override - public void writeToStream(ByteBuf data) throws IOException - { - writeBuffer( data ); - } - - @Override - public boolean readFromStream(ByteBuf data) throws IOException - { - readBuffer( data ); - return true; - } + ByteBuf myDat = Unpooled.buffer(); + writeBuffer( myDat ); + if ( myDat.hasArray() ) + data.setByteArray( "dots", myDat.array() ); } - public TilePaint() { - addNewHandler( new PaintHandler() ); + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TilePaint(NBTTagCompound data) + { + if ( data.hasKey( "dots" ) ) + readBuffer( Unpooled.copiedBuffer( data.getByteArray( "dots" ) ) ); + } + + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TilePaint(ByteBuf data) throws IOException + { + writeBuffer( data ); + } + + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TilePaint(ByteBuf data) throws IOException + { + readBuffer( data ); + return true; } public void onNeighborBlockChange() diff --git a/tile/misc/TileQuartzGrowthAccelerator.java b/tile/misc/TileQuartzGrowthAccelerator.java index c20aa1d5b..b387bf453 100644 --- a/tile/misc/TileQuartzGrowthAccelerator.java +++ b/tile/misc/TileQuartzGrowthAccelerator.java @@ -11,7 +11,7 @@ import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.util.AECableType; import appeng.me.GridAccessException; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkTile; import appeng.util.Platform; @@ -33,41 +33,31 @@ public class TileQuartzGrowthAccelerator extends AENetworkTile implements IPower return AECableType.COVERED; } - private class TileChargerHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileQuartzGrowthAccelerator(ByteBuf data) throws IOException { + boolean hadPower = hasPower; + hasPower = data.readBoolean(); + return hasPower != hadPower; + } - public TileChargerHandler() { - super( TileEventType.NETWORK ); - } - - @Override - public boolean readFromStream(ByteBuf data) throws IOException + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileQuartzGrowthAccelerator(ByteBuf data) throws IOException + { + try { - boolean hadPower = hasPower; - hasPower = data.readBoolean(); - return hasPower != hadPower; + data.writeBoolean( gridProxy.getEnergy().isNetworkPowered() ); } - - @Override - public void writeToStream(ByteBuf data) throws IOException + catch (GridAccessException e) { - try - { - data.writeBoolean( gridProxy.getEnergy().isNetworkPowered() ); - } - catch (GridAccessException e) - { - data.writeBoolean( false ); - } + data.writeBoolean( false ); } - - }; + } public TileQuartzGrowthAccelerator() { gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); gridProxy.setFlags(); gridProxy.setIdlePowerUsage( 8 ); - addNewHandler( new TileChargerHandler() ); } @Override diff --git a/tile/misc/TileSecurity.java b/tile/misc/TileSecurity.java index 21b17c599..05f99f869 100644 --- a/tile/misc/TileSecurity.java +++ b/tile/misc/TileSecurity.java @@ -47,7 +47,7 @@ import appeng.api.util.IConfigManager; import appeng.helpers.PlayerSecuirtyWrapper; import appeng.me.GridAccessException; import appeng.me.storage.SecurityInventory; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -122,75 +122,67 @@ public class TileSecurity extends AENetworkTile implements ITerminalHost, IAEApp isActive = false; } - class SecurityHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileSecurity(ByteBuf data) throws IOException { + boolean wasActive = isActive; + isActive = data.readBoolean(); - public SecurityHandler() { - super( TileEventType.WORLD_NBT, TileEventType.NETWORK ); + AEColor oldPaintedColor = paintedColor; + paintedColor = AEColor.values()[data.readByte()]; + + return oldPaintedColor != paintedColor || wasActive != isActive; + } + + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileSecurity(ByteBuf data) throws IOException + { + data.writeBoolean( gridProxy.isActive() ); + data.writeByte( paintedColor.ordinal() ); + } + + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileSecurity(NBTTagCompound data) + { + cm.writeToNBT( data ); + data.setByte( "paintedColor", (byte) paintedColor.ordinal() ); + + data.setLong( "securityKey", securityKey ); + configSlot.writeToNBT( data, "config" ); + + NBTTagCompound storedItems = new NBTTagCompound(); + + int offset = 0; + for (IAEItemStack ais : inventory.storedItems) + { + NBTTagCompound it = new NBTTagCompound(); + ais.getItemStack().writeToNBT( it ); + storedItems.setTag( "" + (offset++), it ); } - @Override - public boolean readFromStream(ByteBuf data) throws IOException + data.setTag( "storedItems", storedItems ); + } + + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileSecurity(NBTTagCompound data) + { + cm.readFromNBT( data ); + if ( data.hasKey( "paintedColor" ) ) + paintedColor = AEColor.values()[data.getByte( "paintedColor" )]; + + securityKey = data.getLong( "securityKey" ); + configSlot.readFromNBT( data, "config" ); + + NBTTagCompound storedItems = data.getCompoundTag( "storedItems" ); + for (Object key : storedItems.func_150296_c()) { - boolean wasActive = isActive; - isActive = data.readBoolean(); - - AEColor oldPaintedColor = paintedColor; - paintedColor = AEColor.values()[data.readByte()]; - - return oldPaintedColor != paintedColor || wasActive != isActive; - } - - @Override - public void writeToStream(ByteBuf data) throws IOException - { - data.writeBoolean( gridProxy.isActive() ); - data.writeByte( paintedColor.ordinal() ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - cm.writeToNBT( data ); - data.setByte( "paintedColor", (byte) paintedColor.ordinal() ); - - data.setLong( "securityKey", securityKey ); - configSlot.writeToNBT( data, "config" ); - - NBTTagCompound storedItems = new NBTTagCompound(); - - int offset = 0; - for (IAEItemStack ais : inventory.storedItems) + NBTBase obj = storedItems.getTag( (String) key ); + if ( obj instanceof NBTTagCompound ) { - NBTTagCompound it = new NBTTagCompound(); - ais.getItemStack().writeToNBT( it ); - storedItems.setTag( "" + (offset++), it ); - } - - data.setTag( "storedItems", storedItems ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - cm.readFromNBT( data ); - if ( data.hasKey( "paintedColor" ) ) - paintedColor = AEColor.values()[data.getByte( "paintedColor" )]; - - securityKey = data.getLong( "securityKey" ); - configSlot.readFromNBT( data, "config" ); - - NBTTagCompound storedItems = data.getCompoundTag( "storedItems" ); - for (Object key : storedItems.func_150296_c()) - { - NBTBase obj = storedItems.getTag( (String) key ); - if ( obj instanceof NBTTagCompound ) - { - inventory.storedItems.add( AEItemStack.create( ItemStack.loadItemStackFromNBT( (NBTTagCompound) obj ) ) ); - } + inventory.storedItems.add( AEItemStack.create( ItemStack.loadItemStackFromNBT( (NBTTagCompound) obj ) ) ); } } - }; + } public void inventoryChanged() { @@ -243,7 +235,6 @@ public class TileSecurity extends AENetworkTile implements ITerminalHost, IAEApp } public TileSecurity() { - addNewHandler( new SecurityHandler() ); gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); gridProxy.setIdlePowerUsage( 2.0 ); diffrence++; diff --git a/tile/misc/TileVibrationChamber.java b/tile/misc/TileVibrationChamber.java index b34b6af9e..8f811a7da 100644 --- a/tile/misc/TileVibrationChamber.java +++ b/tile/misc/TileVibrationChamber.java @@ -19,7 +19,7 @@ import appeng.api.util.AECableType; import appeng.api.util.DimensionalCoord; import appeng.core.settings.TickRates; import appeng.me.GridAccessException; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -46,49 +46,39 @@ public class TileVibrationChamber extends AENetworkInvTile implements IGridTicka return AECableType.COVERED; } - private class TileVibrationChamberHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileVibrationChamber(ByteBuf data) throws IOException { + boolean wasOn = isOn; + isOn = data.readBoolean(); + return wasOn != isOn; // TESR dosn't need updates! + } - public TileVibrationChamberHandler() { - super( TileEventType.NETWORK, TileEventType.WORLD_NBT ); - } + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileVibrationChamber(ByteBuf data) throws IOException + { + data.writeBoolean( burnTime > 0 ); + } - @Override - public boolean readFromStream(ByteBuf data) throws IOException - { - boolean wasOn = isOn; - isOn = data.readBoolean(); - return wasOn != isOn; // TESR dosn't need updates! - } + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileVibrationChamber(NBTTagCompound data) + { + data.setDouble( "burnTime", burnTime ); + data.setDouble( "maxBurnTime", maxBurnTime ); + data.setInteger( "burnSpeed", burnSpeed ); + } - @Override - public void writeToStream(ByteBuf data) throws IOException - { - data.writeBoolean( burnTime > 0 ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - data.setDouble( "burnTime", burnTime ); - data.setDouble( "maxBurnTime", maxBurnTime ); - data.setInteger( "burnSpeed", burnSpeed ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - burnTime = data.getDouble( "burnTime" ); - maxBurnTime = data.getDouble( "maxBurnTime" ); - burnSpeed = data.getInteger( "burnSpeed" ); - } - - }; + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileVibrationChamber(NBTTagCompound data) + { + burnTime = data.getDouble( "burnTime" ); + maxBurnTime = data.getDouble( "maxBurnTime" ); + burnSpeed = data.getInteger( "burnSpeed" ); + } public TileVibrationChamber() { gridProxy.setIdlePowerUsage( 0 ); gridProxy.setFlags(); - addNewHandler( new TileVibrationChamberHandler() ); } @Override diff --git a/tile/networking/TileCableBus.java b/tile/networking/TileCableBus.java index fddda7da5..6fc238f59 100644 --- a/tile/networking/TileCableBus.java +++ b/tile/networking/TileCableBus.java @@ -33,7 +33,7 @@ import appeng.integration.IntegrationType; import appeng.integration.abstraction.IImmibisMicroblocks; import appeng.parts.CableBusContainer; import appeng.tile.AEBaseTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.util.Platform; @@ -43,49 +43,40 @@ public class TileCableBus extends AEBaseTile implements AEMultiTile, ICustomColl public CableBusContainer cb = new CableBusContainer( this ); private int oldLV = -1; // on re-calculate light when it changes - class CableBusHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileCableBus(NBTTagCompound data) { + cb.readFromNBT( data ); + } - public CableBusHandler() { - super( TileEventType.NETWORK, TileEventType.WORLD_NBT ); - } + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileCableBus(NBTTagCompound data) + { + cb.writeToNBT( data ); + } - @Override - public void readFromNBT(NBTTagCompound data) + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileCableBus(ByteBuf data) throws IOException + { + boolean ret = cb.readFromStream( data ); + + int newLV = cb.getLightValue(); + if ( newLV != oldLV ) { - cb.readFromNBT( data ); + oldLV = newLV; + worldObj.func_147451_t( xCoord, yCoord, zCoord ); + // worldObj.updateAllLightTypes( xCoord, yCoord, zCoord ); } - @Override - public void writeToNBT(NBTTagCompound data) - { - cb.writeToNBT( data ); - } + updateTileSetting(); + return ret; + } - @Override - public boolean readFromStream(ByteBuf data) throws IOException - { - boolean ret = cb.readFromStream( data ); - - int newLV = cb.getLightValue(); - if ( newLV != oldLV ) - { - oldLV = newLV; - worldObj.func_147451_t( xCoord, yCoord, zCoord ); - // worldObj.updateAllLightTypes( xCoord, yCoord, zCoord ); - } - - updateTileSetting(); - return ret; - } - - @Override - public void writeToStream(ByteBuf data) throws IOException - { - cb.writeToStream( data ); - } - - }; + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileCableBus(ByteBuf data) throws IOException + { + cb.writeToStream( data ); + } @Override public boolean isInWorld() @@ -171,10 +162,6 @@ public class TileCableBus extends AEBaseTile implements AEMultiTile, ICustomColl cb.getDrops( drops ); } - public TileCableBus() { - addNewHandler( new CableBusHandler() ); - } - @Override public IGridNode getGridNode(ForgeDirection dir) { diff --git a/tile/networking/TileEnergyAcceptor.java b/tile/networking/TileEnergyAcceptor.java index 73766480a..c35b29368 100644 --- a/tile/networking/TileEnergyAcceptor.java +++ b/tile/networking/TileEnergyAcceptor.java @@ -8,7 +8,7 @@ import appeng.api.config.PowerMultiplier; import appeng.api.networking.energy.IEnergyGrid; import appeng.api.util.AECableType; import appeng.me.GridAccessException; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkPowerTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -26,36 +26,28 @@ public class TileEnergyAcceptor extends AENetworkPowerTile return AECableType.COVERED; } - private class TilePowerRelayHandler extends AETileEventHandler + @TileEvent(TileEventType.TICK) + public void Tick_TileEnergyAcceptor() { - - public TilePowerRelayHandler() { - super( TileEventType.TICK ); - } - - @Override - public void Tick() + if ( internalCurrentPower > 0 ) { - if ( internalCurrentPower > 0 ) + try { - try - { - IEnergyGrid eg = gridProxy.getEnergy(); - double powerRequested = internalCurrentPower - eg.injectPower( internalCurrentPower, Actionable.SIMULATE ); + IEnergyGrid eg = gridProxy.getEnergy(); + double powerRequested = internalCurrentPower - eg.injectPower( internalCurrentPower, Actionable.SIMULATE ); - if ( powerRequested > 0 ) - { - eg.injectPower( extractAEPower( powerRequested, Actionable.MODULATE, PowerMultiplier.ONE ), Actionable.MODULATE ); - } - } - catch (GridAccessException e) + if ( powerRequested > 0 ) { - // null net, probably bads. + eg.injectPower( extractAEPower( powerRequested, Actionable.MODULATE, PowerMultiplier.ONE ), Actionable.MODULATE ); } - } + catch (GridAccessException e) + { + // null net, probably bads. + } + } - }; + } @Override protected double getFunnelPowerDemand(double maxRequired) @@ -90,7 +82,6 @@ public class TileEnergyAcceptor extends AENetworkPowerTile public TileEnergyAcceptor() { gridProxy.setIdlePowerUsage( 0.0 ); - addNewHandler( new TilePowerRelayHandler() ); internalMaxPower = 100; } diff --git a/tile/networking/TileEnergyCell.java b/tile/networking/TileEnergyCell.java index 4aa143dd1..ebd259ee9 100644 --- a/tile/networking/TileEnergyCell.java +++ b/tile/networking/TileEnergyCell.java @@ -10,7 +10,7 @@ import appeng.api.networking.events.MENetworkPowerStorage; import appeng.api.networking.events.MENetworkPowerStorage.PowerEventType; import appeng.api.util.AECableType; import appeng.me.GridAccessException; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkTile; import appeng.util.SettingsFrom; @@ -48,31 +48,21 @@ public class TileEnergyCell extends AENetworkTile implements IAEPowerStorage } } - private class TileEnergyCellHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileEnergyCell(NBTTagCompound data) { + if ( !worldObj.isRemote ) + data.setDouble( "internalCurrentPower", internalCurrentPower ); + } - public TileEnergyCellHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - if ( !worldObj.isRemote ) - data.setDouble( "internalCurrentPower", internalCurrentPower ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - internalCurrentPower = data.getDouble( "internalCurrentPower" ); - } - - }; + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileEnergyCell(NBTTagCompound data) + { + internalCurrentPower = data.getDouble( "internalCurrentPower" ); + } public TileEnergyCell() { gridProxy.setIdlePowerUsage( 0 ); - addNewHandler( new TileEnergyCellHandler() ); } @Override diff --git a/tile/networking/TileWireless.java b/tile/networking/TileWireless.java index b2a91d00a..501343ea9 100644 --- a/tile/networking/TileWireless.java +++ b/tile/networking/TileWireless.java @@ -19,7 +19,7 @@ import appeng.api.util.AECableType; import appeng.api.util.DimensionalCoord; import appeng.core.AEConfig; import appeng.me.GridAccessException; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -40,7 +40,6 @@ public class TileWireless extends AENetworkInvTile implements IWirelessAccessPoi public TileWireless() { gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); - addNewHandler( new TileWirelessHandler() ); } @Override @@ -62,45 +61,34 @@ public class TileWireless extends AENetworkInvTile implements IWirelessAccessPoi markForUpdate(); } - class TileWirelessHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileWireless(ByteBuf data) throws IOException { + int old = clientFlags; + clientFlags = data.readByte(); - public TileWirelessHandler() { - super( TileEventType.NETWORK ); - } + return old != clientFlags; + } - @Override - public boolean readFromStream(ByteBuf data) throws IOException + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileWireless(ByteBuf data) throws IOException + { + clientFlags = 0; + + try { - boolean eh = super.readFromStream( data ); + if ( gridProxy.getEnergy().isNetworkPowered() ) + clientFlags |= POWERED_FLAG; - int old = clientFlags; - clientFlags = data.readByte(); - - return eh || old != clientFlags; + if ( gridProxy.getNode().meetsChannelRequirements() ) + clientFlags |= CHANNEL_FLAG; } - - @Override - public void writeToStream(ByteBuf data) throws IOException + catch (GridAccessException e) { - - clientFlags = 0; - - try - { - if ( gridProxy.getEnergy().isNetworkPowered() ) - clientFlags |= POWERED_FLAG; - - if ( gridProxy.getNode().meetsChannelRequirements() ) - clientFlags |= CHANNEL_FLAG; - } - catch (GridAccessException e) - { - // meh - } - - data.writeByte( (byte) clientFlags ); + // meh } + + data.writeByte( (byte) clientFlags ); } @Override diff --git a/tile/powersink/AERootPoweredTile.java b/tile/powersink/AERootPoweredTile.java index b6c3cadfd..c23f1d27a 100644 --- a/tile/powersink/AERootPoweredTile.java +++ b/tile/powersink/AERootPoweredTile.java @@ -11,7 +11,7 @@ import appeng.api.config.PowerUnits; import appeng.api.networking.energy.IAEPowerStorage; import appeng.api.networking.events.MENetworkPowerStorage.PowerEventType; import appeng.tile.AEBaseInvTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowerStorage @@ -40,29 +40,16 @@ public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowe return internalPowerSides.clone(); } - private class AEPoweredRootHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_AERootPoweredTile(NBTTagCompound data) { + data.setDouble( "internalCurrentPower", internalCurrentPower ); + } - public AEPoweredRootHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - data.setDouble( "internalCurrentPower", internalCurrentPower ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - internalCurrentPower = data.getDouble( "internalCurrentPower" ); - } - - }; - - public AERootPoweredTile() { - addNewHandler( new AEPoweredRootHandler() ); + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_AERootPoweredTile(NBTTagCompound data) + { + internalCurrentPower = data.getDouble( "internalCurrentPower" ); } final protected double getExternalPowerDemand(PowerUnits externalUnit, double maxPowerRequired) diff --git a/tile/powersink/MinecraftJoules5.java b/tile/powersink/MinecraftJoules5.java index c0e3a37a8..8f1310c3f 100644 --- a/tile/powersink/MinecraftJoules5.java +++ b/tile/powersink/MinecraftJoules5.java @@ -7,6 +7,8 @@ import appeng.core.AppEng; import appeng.integration.IntegrationType; import appeng.integration.abstraction.IMJ5; import appeng.integration.abstraction.helpers.BaseMJperdition; +import appeng.tile.TileEvent; +import appeng.tile.events.TileEventType; import appeng.transformer.annotations.integration.Interface; import appeng.transformer.annotations.integration.Method; import appeng.util.Platform; @@ -20,6 +22,14 @@ public abstract class MinecraftJoules5 extends AERootPoweredTile implements IPow BaseMJperdition bcPowerWrapper; + @Method(iname = "MJ5") + @TileEvent(TileEventType.TICK) + public void Tick_MinecraftJoules5() + { + if ( bcPowerWrapper != null ) + bcPowerWrapper.Tick(); + } + public MinecraftJoules5() { if ( Platform.isServer() ) { @@ -30,7 +40,7 @@ public abstract class MinecraftJoules5 extends AERootPoweredTile implements IPow IMJ5 mjIntegration = (IMJ5) AppEng.instance.getIntegration( IntegrationType.MJ5 ); if ( mjIntegration != null ) { - addNewHandler( bcPowerWrapper = (BaseMJperdition) mjIntegration.createPerdition( this ) ); + bcPowerWrapper = (BaseMJperdition) mjIntegration.createPerdition( this ); if ( bcPowerWrapper != null ) bcPowerWrapper.configure( 1, 380, 1.0f / 5.0f, 1000 ); } diff --git a/tile/powersink/RotaryCraft.java b/tile/powersink/RotaryCraft.java index 8b7ecfee8..d0a157869 100644 --- a/tile/powersink/RotaryCraft.java +++ b/tile/powersink/RotaryCraft.java @@ -3,9 +3,10 @@ package appeng.tile.powersink; import net.minecraftforge.common.util.ForgeDirection; import Reika.RotaryCraft.API.ShaftPowerReceiver; import appeng.api.config.PowerUnits; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.transformer.annotations.integration.Interface; +import appeng.transformer.annotations.integration.Method; import appeng.util.Platform; @Interface(iname = "RotaryCraft", iface = "Reika.RotaryCraft.API.ShaftPowerReceiver") @@ -17,25 +18,12 @@ public abstract class RotaryCraft extends IC2 implements ShaftPowerReceiver private long power = 0; private int alpha = 0; - class RotaryCraftHandler extends AETileEventHandler + @TileEvent(TileEventType.TICK) + @Method(iname = "RotaryCraft") + public void Tick_RotaryCraft() { - - public RotaryCraftHandler() { - super( TileEventType.TICK ); - } - - @Override - public void Tick() - { - if ( power > 0 ) - injectExternalPower( PowerUnits.WA, power ); - } - - }; - - public RotaryCraft() { - if ( Platform.isServer() ) - addNewHandler( new RotaryCraftHandler() ); + if ( worldObj != null && !worldObj.isRemote && power > 0 ) + injectExternalPower( PowerUnits.WA, power ); } @Override diff --git a/tile/qnb/TileQuantumBridge.java b/tile/qnb/TileQuantumBridge.java index 14f7b8e7a..c95cd18c0 100644 --- a/tile/qnb/TileQuantumBridge.java +++ b/tile/qnb/TileQuantumBridge.java @@ -21,7 +21,7 @@ import appeng.me.cluster.IAECluster; import appeng.me.cluster.IAEMultiBlock; import appeng.me.cluster.implementations.QuantumCalculator; import appeng.me.cluster.implementations.QuantumCluster; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -50,57 +50,46 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock private boolean updateStatus = false; - class QBridgeHandler extends AETileEventHandler + @TileEvent(TileEventType.TICK) + public void Tick_TileQuantumBridge() { - - public QBridgeHandler() { - super( TileEventType.NETWORK, TileEventType.TICK ); - gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); - gridProxy.setFlags( GridFlags.DENSE_CAPACITY ); - gridProxy.setIdlePowerUsage( 22 ); - inv.setMaxStackSize( 1 ); - } - - @Override - public void Tick() + if ( updateStatus ) { - if ( updateStatus ) - { - updateStatus = false; - if ( clust != null ) - clust.updateStatus( true ); - markForUpdate(); - } + updateStatus = false; + if ( clust != null ) + clust.updateStatus( true ); + markForUpdate(); } + } - @Override - public void writeToStream(ByteBuf data) throws IOException - { - int out = xdex; + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileQuantumBridge(ByteBuf data) throws IOException + { + int out = xdex; - if ( getStackInSlot( 0 ) != null && xdex != -1 ) - out = out | hasSingularity; + if ( getStackInSlot( 0 ) != null && xdex != -1 ) + out = out | hasSingularity; - if ( gridProxy.isActive() && xdex != -1 ) - out = out | powered; + if ( gridProxy.isActive() && xdex != -1 ) + out = out | powered; - data.writeByte( (byte) out ); - } + data.writeByte( (byte) out ); + } - @Override - public boolean readFromStream(ByteBuf data) throws IOException - { - int oldValue = xdex; - xdex = data.readByte(); - bridgePowered = (xdex | powered) == powered; - return xdex != oldValue; - } - - }; + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileQuantumBridge(ByteBuf data) throws IOException + { + int oldValue = xdex; + xdex = data.readByte(); + bridgePowered = (xdex | powered) == powered; + return xdex != oldValue; + } public TileQuantumBridge() { - addNewHandler( new QBridgeHandler() ); + gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); gridProxy.setFlags( GridFlags.DENSE_CAPACITY ); + gridProxy.setIdlePowerUsage( 22 ); + inv.setMaxStackSize( 1 ); } public IInventory getInternalInventory() diff --git a/tile/spatial/TileSpatialIOPort.java b/tile/spatial/TileSpatialIOPort.java index 70762de40..62da40443 100644 --- a/tile/spatial/TileSpatialIOPort.java +++ b/tile/spatial/TileSpatialIOPort.java @@ -22,7 +22,7 @@ import appeng.api.util.DimensionalCoord; import appeng.hooks.TickHandler; import appeng.items.storage.ItemSpatialStorageCell; import appeng.me.cache.SpatialPylonCache; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -36,29 +36,20 @@ public class TileSpatialIOPort extends AENetworkInvTile implements Callable AppEngInternalInventory inv = new AppEngInternalInventory( this, 2 ); YesNo lastRedstoneState = YesNo.UNDECIDED; - class SpatialTileIOPortHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileSpatialIOPort(NBTTagCompound data) { + data.setInteger( "lastRedstoneState", lastRedstoneState.ordinal() ); + } - public SpatialTileIOPortHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - data.setInteger( "lastRedstoneState", lastRedstoneState.ordinal() ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - if ( data.hasKey( "lastRedstoneState" ) ) - lastRedstoneState = YesNo.values()[data.getInteger( "lastRedstoneState" )]; - } - }; + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileSpatialIOPort(NBTTagCompound data) + { + if ( data.hasKey( "lastRedstoneState" ) ) + lastRedstoneState = YesNo.values()[data.getInteger( "lastRedstoneState" )]; + } public TileSpatialIOPort() { - addNewHandler( new SpatialTileIOPortHandler() ); gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); } diff --git a/tile/spatial/TileSpatialPylon.java b/tile/spatial/TileSpatialPylon.java index 6db11c320..a7ba19f8d 100644 --- a/tile/spatial/TileSpatialPylon.java +++ b/tile/spatial/TileSpatialPylon.java @@ -16,7 +16,7 @@ import appeng.me.cluster.implementations.SpatialPylonCalculator; import appeng.me.cluster.implementations.SpatialPylonCluster; import appeng.me.helpers.AENetworkProxy; import appeng.me.helpers.AENetworkProxyMultiblock; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkTile; @@ -53,34 +53,24 @@ public class TileSpatialPylon extends AENetworkTile implements IAEMultiBlock return false; } - private class TileSpatialPylonHandler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileSpatialPylon(ByteBuf data) throws IOException { + int old = displayBits; + displayBits = data.readByte(); + return old != displayBits; + } - public TileSpatialPylonHandler() { - super( TileEventType.NETWORK ); - } - - @Override - public boolean readFromStream(ByteBuf data) throws IOException - { - int old = displayBits; - displayBits = data.readByte(); - return old != displayBits; - } - - @Override - public void writeToStream(ByteBuf data) throws IOException - { - data.writeByte( displayBits ); - } - - }; + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileSpatialPylon(ByteBuf data) throws IOException + { + data.writeByte( displayBits ); + } public TileSpatialPylon() { gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL, GridFlags.MULTIBLOCK ); gridProxy.setIdlePowerUsage( 0.5 ); gridProxy.setValidSides( EnumSet.noneOf( ForgeDirection.class ) ); - addNewHandler( new TileSpatialPylonHandler() ); } @Override @@ -127,14 +117,14 @@ public class TileSpatialPylon extends AENetworkTile implements IAEMultiBlock @Override public void invalidate() { - disconnect(false); + disconnect( false ); super.invalidate(); } @Override public void onChunkUnload() { - disconnect(false); + disconnect( false ); super.onChunkUnload(); } diff --git a/tile/storage/TileChest.java b/tile/storage/TileChest.java index 92e93fa63..036a9a846 100644 --- a/tile/storage/TileChest.java +++ b/tile/storage/TileChest.java @@ -57,7 +57,7 @@ import appeng.api.util.IConfigManager; import appeng.helpers.IPriorityHost; import appeng.me.GridAccessException; import appeng.me.storage.MEInventoryHandler; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkPowerTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -143,114 +143,105 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan recalculateDisplay(); } - private class invManger extends AETileEventHandler + @TileEvent(TileEventType.TICK) + public void Tick_TileChest() { + if ( worldObj.isRemote ) + return; - public invManger() { - super( TileEventType.TICK, TileEventType.NETWORK, TileEventType.WORLD_NBT ); - } + double idleUsage = gridProxy.getIdlePowerUsage(); - @Override - public void Tick() + try { - if ( worldObj.isRemote ) - return; - - double idleUsage = gridProxy.getIdlePowerUsage(); - - try + if ( !gridProxy.getEnergy().isNetworkPowered() ) { - if ( !gridProxy.getEnergy().isNetworkPowered() ) - { - double powerUsed = extractAEPower( idleUsage, Actionable.MODULATE, PowerMultiplier.CONFIG ); // drain - if ( powerUsed + 0.1 >= idleUsage != (state & 0x40) > 0 ) - recalculateDisplay(); - } - } - catch (GridAccessException e) - { - double powerUsed = extractAEPower( gridProxy.getIdlePowerUsage(), Actionable.MODULATE, PowerMultiplier.CONFIG ); // drain + double powerUsed = extractAEPower( idleUsage, Actionable.MODULATE, PowerMultiplier.CONFIG ); // drain if ( powerUsed + 0.1 >= idleUsage != (state & 0x40) > 0 ) recalculateDisplay(); } - - if ( inv.getStackInSlot( 0 ) != null ) - { - tryToStoreContents(); - } } - - @Override - public void writeToStream(ByteBuf data) throws IOException + catch (GridAccessException e) { - if ( worldObj.getTotalWorldTime() - lastStateChange > 8 ) - state = 0; - else - state &= 0x24924924; // just keep the blinks... - - for (int x = 0; x < getCellCount(); x++) - state |= (getCellStatus( x ) << (3 * x)); - - if ( isPowered() ) - state |= 0x40; - else - state &= ~0x40; - - data.writeByte( state ); - data.writeByte( paintedColor.ordinal() ); - - ItemStack is = inv.getStackInSlot( 1 ); - - if ( is == null ) - { - data.writeInt( 0 ); - } - else - { - data.writeInt( (is.getItemDamage() << Platform.DEF_OFFSET) | Item.getIdFromItem( is.getItem() ) ); - } + double powerUsed = extractAEPower( gridProxy.getIdlePowerUsage(), Actionable.MODULATE, PowerMultiplier.CONFIG ); // drain + if ( powerUsed + 0.1 >= idleUsage != (state & 0x40) > 0 ) + recalculateDisplay(); } - @Override - public boolean readFromStream(ByteBuf data) throws IOException + if ( inv.getStackInSlot( 0 ) != null ) { - int oldState = state; - ItemStack oldType = storageType; - - state = data.readByte(); - AEColor oldPaintedColor = paintedColor; - paintedColor = AEColor.values()[data.readByte()]; - - int item = data.readInt(); - - if ( item == 0 ) - storageType = null; - else - storageType = new ItemStack( Item.getItemById( item & 0xffff ), 1, item >> Platform.DEF_OFFSET ); - - lastStateChange = worldObj.getTotalWorldTime(); - - return oldPaintedColor != paintedColor || (state & 0xDB6DB6DB) != (oldState & 0xDB6DB6DB) || !Platform.isSameItemPrecise( oldType, storageType ); + tryToStoreContents(); } + } - @Override - public void readFromNBT(NBTTagCompound data) + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileChest(ByteBuf data) throws IOException + { + if ( worldObj.getTotalWorldTime() - lastStateChange > 8 ) + state = 0; + else + state &= 0x24924924; // just keep the blinks... + + for (int x = 0; x < getCellCount(); x++) + state |= (getCellStatus( x ) << (3 * x)); + + if ( isPowered() ) + state |= 0x40; + else + state &= ~0x40; + + data.writeByte( state ); + data.writeByte( paintedColor.ordinal() ); + + ItemStack is = inv.getStackInSlot( 1 ); + + if ( is == null ) { - config.readFromNBT( data ); - priority = data.getInteger( "priority" ); - if ( data.hasKey( "paintedColor" ) ) - paintedColor = AEColor.values()[data.getByte( "paintedColor" )]; + data.writeInt( 0 ); } - - @Override - public void writeToNBT(NBTTagCompound data) + else { - config.writeToNBT( data ); - data.setInteger( "priority", priority ); - data.setByte( "paintedColor", (byte) paintedColor.ordinal() ); + data.writeInt( (is.getItemDamage() << Platform.DEF_OFFSET) | Item.getIdFromItem( is.getItem() ) ); } + } - }; + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileChest(ByteBuf data) throws IOException + { + int oldState = state; + ItemStack oldType = storageType; + + state = data.readByte(); + AEColor oldPaintedColor = paintedColor; + paintedColor = AEColor.values()[data.readByte()]; + + int item = data.readInt(); + + if ( item == 0 ) + storageType = null; + else + storageType = new ItemStack( Item.getItemById( item & 0xffff ), 1, item >> Platform.DEF_OFFSET ); + + lastStateChange = worldObj.getTotalWorldTime(); + + return oldPaintedColor != paintedColor || (state & 0xDB6DB6DB) != (oldState & 0xDB6DB6DB) || !Platform.isSameItemPrecise( oldType, storageType ); + } + + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileChest(NBTTagCompound data) + { + config.readFromNBT( data ); + priority = data.getInteger( "priority" ); + if ( data.hasKey( "paintedColor" ) ) + paintedColor = AEColor.values()[data.getByte( "paintedColor" )]; + } + + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileChest(NBTTagCompound data) + { + config.writeToNBT( data ); + data.setInteger( "priority", priority ); + data.setByte( "paintedColor", (byte) paintedColor.ordinal() ); + } @MENetworkEventSubscribe public void powerRender(MENetworkPowerStatusChange c) @@ -267,7 +258,6 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan public TileChest() { internalMaxPower = PowerMultiplier.CONFIG.multiply( 40 ); gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); - addNewHandler( new invManger() ); config.registerSetting( Settings.SORT_BY, SortOrder.NAME ); config.registerSetting( Settings.VIEW_MODE, ViewItems.ALL ); config.registerSetting( Settings.SORT_DIRECTION, SortDir.ASCENDING ); diff --git a/tile/storage/TileDrive.java b/tile/storage/TileDrive.java index 52e318716..86adbaefd 100644 --- a/tile/storage/TileDrive.java +++ b/tile/storage/TileDrive.java @@ -32,7 +32,7 @@ import appeng.helpers.IPriorityHost; import appeng.me.GridAccessException; import appeng.me.storage.DriveWatcher; import appeng.me.storage.MEInventoryHandler; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -87,55 +87,46 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior markForUpdate(); } - private class invManger extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileDrive(ByteBuf data) throws IOException { + if ( worldObj.getTotalWorldTime() - lastStateChange > 8 ) + state = 0; + else + state &= 0x24924924; // just keep the blinks... - public invManger() { - super( TileEventType.WORLD_NBT, TileEventType.NETWORK ); - } + if ( gridProxy.isActive() ) + state |= 0x80000000; + else + state &= ~0x80000000; - @Override - public void writeToStream(ByteBuf data) throws IOException - { - if ( worldObj.getTotalWorldTime() - lastStateChange > 8 ) - state = 0; - else - state &= 0x24924924; // just keep the blinks... + for (int x = 0; x < getCellCount(); x++) + state |= (getCellStatus( x ) << (3 * x)); - if ( gridProxy.isActive() ) - state |= 0x80000000; - else - state &= ~0x80000000; + data.writeInt( state ); + } - for (int x = 0; x < getCellCount(); x++) - state |= (getCellStatus( x ) << (3 * x)); + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileDrive(ByteBuf data) throws IOException + { + int oldState = state; + state = data.readInt(); + lastStateChange = worldObj.getTotalWorldTime(); + return (state & 0xDB6DB6DB) != (oldState & 0xDB6DB6DB); + } - data.writeInt( state ); - } + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileDrive(NBTTagCompound data) + { + isCached = false; + priority = data.getInteger( "priority" ); + } - @Override - public boolean readFromStream(ByteBuf data) throws IOException - { - int oldState = state; - state = data.readInt(); - lastStateChange = worldObj.getTotalWorldTime(); - return (state & 0xDB6DB6DB) != (oldState & 0xDB6DB6DB); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - isCached = false; - priority = data.getInteger( "priority" ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - data.setInteger( "priority", priority ); - } - - }; + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileDrive(NBTTagCompound data) + { + data.setInteger( "priority", priority ); + } @MENetworkEventSubscribe public void powerRender(MENetworkPowerStatusChange c) @@ -152,7 +143,6 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior public TileDrive() { mySrc = new MachineSource( this ); gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); - addNewHandler( new invManger() ); } @Override diff --git a/tile/storage/TileIOPort.java b/tile/storage/TileIOPort.java index 8adebd5c7..ea03ee150 100644 --- a/tile/storage/TileIOPort.java +++ b/tile/storage/TileIOPort.java @@ -34,7 +34,7 @@ import appeng.api.util.IConfigManager; import appeng.core.settings.TickRates; import appeng.me.GridAccessException; import appeng.parts.automation.UpgradeInventory; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.grid.AENetworkInvTile; import appeng.tile.inventory.AppEngInternalInventory; @@ -62,35 +62,26 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC YesNo lastRedstoneState = YesNo.UNDECIDED; - class TileIOPortHandler extends AETileEventHandler + @TileEvent(TileEventType.WORLD_NBT_WRITE) + public void writeToNBT_TileIOPort(NBTTagCompound data) { + cm.writeToNBT( data ); + cells.writeToNBT( data, "cells" ); + upgrades.writeToNBT( data, "upgrades" ); + data.setInteger( "lastRedstoneState", lastRedstoneState.ordinal() ); + } - public TileIOPortHandler() { - super( TileEventType.WORLD_NBT ); - } - - @Override - public void writeToNBT(NBTTagCompound data) - { - cm.writeToNBT( data ); - cells.writeToNBT( data, "cells" ); - upgrades.writeToNBT( data, "upgrades" ); - data.setInteger( "lastRedstoneState", lastRedstoneState.ordinal() ); - } - - @Override - public void readFromNBT(NBTTagCompound data) - { - cm.readFromNBT( data ); - cells.readFromNBT( data, "cells" ); - upgrades.readFromNBT( data, "upgrades" ); - if ( data.hasKey( "lastRedstoneState" ) ) - lastRedstoneState = YesNo.values()[data.getInteger( "lastRedstoneState" )]; - } - }; + @TileEvent(TileEventType.WORLD_NBT_READ) + public void readFromNBT_TileIOPort(NBTTagCompound data) + { + cm.readFromNBT( data ); + cells.readFromNBT( data, "cells" ); + upgrades.readFromNBT( data, "upgrades" ); + if ( data.hasKey( "lastRedstoneState" ) ) + lastRedstoneState = YesNo.values()[data.getInteger( "lastRedstoneState" )]; + } public TileIOPort() { - addNewHandler( new TileIOPortHandler() ); gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); cm.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE ); cm.registerSetting( Settings.FULLNESS_MODE, FullnessMode.EMPTY ); diff --git a/tile/storage/TileSkyChest.java b/tile/storage/TileSkyChest.java index c9326a769..515c57dd7 100644 --- a/tile/storage/TileSkyChest.java +++ b/tile/storage/TileSkyChest.java @@ -8,7 +8,7 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.ForgeDirection; import appeng.tile.AEBaseInvTile; -import appeng.tile.events.AETileEventHandler; +import appeng.tile.TileEvent; import appeng.tile.events.TileEventType; import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.InvOperation; @@ -20,35 +20,22 @@ public class TileSkyChest extends AEBaseInvTile final int sides[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 }; final AppEngInternalInventory inv = new AppEngInternalInventory( this, 9 * 4 ); - class SkyChestHnadler extends AETileEventHandler + @TileEvent(TileEventType.NETWORK_WRITE) + public void writeToStream_TileSkyChest(ByteBuf data) throws IOException { + data.writeBoolean( playerOpen > 0 ); + } - public SkyChestHnadler() { - super( TileEventType.NETWORK ); - } + @TileEvent(TileEventType.NETWORK_READ) + public boolean readFromStream_TileSkyChest(ByteBuf data) throws IOException + { + int wasOpen = playerOpen; + playerOpen = data.readBoolean() ? 1 : 0; - @Override - public void writeToStream(ByteBuf data) throws IOException - { - data.writeBoolean( playerOpen > 0 ); - } + if ( wasOpen != playerOpen ) + lastEvent = System.currentTimeMillis(); - @Override - public boolean readFromStream(ByteBuf data) throws IOException - { - int wasOpen = playerOpen; - playerOpen = data.readBoolean() ? 1 : 0; - - if ( wasOpen != playerOpen ) - lastEvent = System.currentTimeMillis(); - - return false; // TESR yo! - } - - }; - - public TileSkyChest() { - addNewHandler( new SkyChestHnadler() ); + return false; // TESR yo! } // server