From 87d82d6f2b803b9a9a24350e5c84a6f6386a0c14 Mon Sep 17 00:00:00 2001 From: xsun <1563770452@qq.com> Date: Thu, 13 Apr 2017 19:57:22 +0800 Subject: [PATCH] fire events on some special AE items used, such as Wrench and MemoryCard. #6 --- src/main/java/appeng/block/AEBaseTileBlock.java | 5 +++++ src/main/java/appeng/items/tools/ToolBiometricCard.java | 3 ++- src/main/java/appeng/items/tools/ToolMemoryCard.java | 3 +++ src/main/java/appeng/items/tools/ToolNetworkTool.java | 4 ++++ .../java/appeng/items/tools/powered/ToolChargedStaff.java | 5 +++++ .../appeng/items/tools/powered/ToolWirelessTerminal.java | 4 +++- .../java/appeng/items/tools/quartz/ToolQuartzWrench.java | 4 ++++ src/main/java/appeng/parts/p2p/PartP2PTunnel.java | 7 +++++++ 8 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/main/java/appeng/block/AEBaseTileBlock.java b/src/main/java/appeng/block/AEBaseTileBlock.java index 3adc87f0..1f1c3259 100644 --- a/src/main/java/appeng/block/AEBaseTileBlock.java +++ b/src/main/java/appeng/block/AEBaseTileBlock.java @@ -50,6 +50,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.ForgeEventFactory; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -243,6 +244,8 @@ public abstract class AEBaseTileBlock extends AEBaseBlock implements IAEFeature, { if( Platform.isWrench( player, is, x, y, z ) && player.isSneaking() ) { + if( ForgeEventFactory.onItemUseStart( player, is, 1 ) <= 0 ) + return false; final Block id = w.getBlock( x, y, z ); if( id != null ) { @@ -284,6 +287,8 @@ public abstract class AEBaseTileBlock extends AEBaseBlock implements IAEFeature, if( is.getItem() instanceof IMemoryCard && !( this instanceof BlockCableBus ) ) { + if( ForgeEventFactory.onItemUseStart( player, is, 1 ) <= 0 ) + return false; final IMemoryCard memoryCard = (IMemoryCard) is.getItem(); if( player.isSneaking() ) { diff --git a/src/main/java/appeng/items/tools/ToolBiometricCard.java b/src/main/java/appeng/items/tools/ToolBiometricCard.java index b670bed6..1cd86812 100644 --- a/src/main/java/appeng/items/tools/ToolBiometricCard.java +++ b/src/main/java/appeng/items/tools/ToolBiometricCard.java @@ -36,6 +36,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTUtil; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.event.ForgeEventFactory; import java.util.EnumSet; import java.util.List; @@ -57,7 +58,7 @@ public class ToolBiometricCard extends AEBaseItem implements IBiometricCard @Override public ItemStack onItemRightClick( final ItemStack is, final World w, final EntityPlayer p ) { - if( p.isSneaking() ) + if( ForgeEventFactory.onItemUseStart( p, is, 1 ) > 0 && p.isSneaking() ) { this.encode( is, p ); p.swingItem(); diff --git a/src/main/java/appeng/items/tools/ToolMemoryCard.java b/src/main/java/appeng/items/tools/ToolMemoryCard.java index 2b527f94..48f66d13 100644 --- a/src/main/java/appeng/items/tools/ToolMemoryCard.java +++ b/src/main/java/appeng/items/tools/ToolMemoryCard.java @@ -31,6 +31,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import net.minecraftforge.event.ForgeEventFactory; import java.util.EnumSet; import java.util.List; @@ -140,6 +141,8 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard { if( player.isSneaking() && !w.isRemote ) { + if( ForgeEventFactory.onItemUseStart( player, is, 1 ) <= 0 ) + return false; final IMemoryCard mem = (IMemoryCard) is.getItem(); mem.notifyUser( player, MemoryCardMessages.SETTINGS_CLEARED ); is.setTagCompound( null ); diff --git a/src/main/java/appeng/items/tools/ToolNetworkTool.java b/src/main/java/appeng/items/tools/ToolNetworkTool.java index afc16871..db77176b 100644 --- a/src/main/java/appeng/items/tools/ToolNetworkTool.java +++ b/src/main/java/appeng/items/tools/ToolNetworkTool.java @@ -48,6 +48,7 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.ForgeEventFactory; import java.util.EnumSet; @@ -102,6 +103,9 @@ public class ToolNetworkTool extends AEBaseItem implements IGuiItem, IAEWrench, @Override public boolean onItemUseFirst( final ItemStack is, final EntityPlayer player, final World world, final int x, final int y, final int z, final int side, final float hitX, final float hitY, final float hitZ ) { + if( ForgeEventFactory.onItemUseStart( player, is, 1 ) <= 0 ) + return false; + final MovingObjectPosition mop = new MovingObjectPosition( x, y, z, side, Vec3.createVectorHelper( hitX, hitY, hitZ ) ); final TileEntity te = world.getTileEntity( x, y, z ); if( te instanceof IPartHost ) diff --git a/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java b/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java index 946edee4..65c2e54d 100644 --- a/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java +++ b/src/main/java/appeng/items/tools/powered/ToolChargedStaff.java @@ -27,8 +27,10 @@ import appeng.server.ServerHelper; import appeng.util.Platform; import com.google.common.base.Optional; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; +import net.minecraftforge.event.ForgeEventFactory; import java.util.EnumSet; @@ -45,6 +47,9 @@ public class ToolChargedStaff extends AEBasePoweredItem @Override public boolean hitEntity( final ItemStack item, final EntityLivingBase target, final EntityLivingBase hitter ) { + if( hitter instanceof EntityPlayer && ForgeEventFactory.onItemUseStart( (EntityPlayer) hitter, item, 1 ) <= 0 ) + return false; + if( this.getAECurrentPower( item ) > 300 ) { this.extractAEPower( item, 300 ); diff --git a/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java b/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java index 09b81243..07178313 100644 --- a/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java +++ b/src/main/java/appeng/items/tools/powered/ToolWirelessTerminal.java @@ -41,6 +41,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import net.minecraftforge.event.ForgeEventFactory; import java.util.EnumSet; import java.util.List; @@ -58,7 +59,8 @@ public class ToolWirelessTerminal extends AEBasePoweredItem implements IWireless @Override public ItemStack onItemRightClick( final ItemStack item, final World w, final EntityPlayer player ) { - AEApi.instance().registries().wireless().openWirelessTerminalGui( item, w, player ); + if( ForgeEventFactory.onItemUseStart( player, item, 1 ) > 0 ) + AEApi.instance().registries().wireless().openWirelessTerminalGui( item, w, player ); return item; } diff --git a/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java b/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java index 06bc208d..28706d8c 100644 --- a/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java +++ b/src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java @@ -33,6 +33,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.ForgeEventFactory; import java.util.EnumSet; @@ -53,6 +54,9 @@ public class ToolQuartzWrench extends AEBaseItem implements IAEWrench, IToolWren @Override public boolean onItemUseFirst( final ItemStack is, final EntityPlayer player, final World world, final int x, final int y, final int z, final int side, final float hitX, final float hitY, final float hitZ ) { + if( ForgeEventFactory.onItemUseStart( player, is, 1 ) <= 0 ) + return false; + final Block b = world.getBlock( x, y, z ); if( b != null && !player.isSneaking() && Platform.hasPermissions( new DimensionalCoord( world, x, y, z ), player ) ) { diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java index 7bc83725..10e37102 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnel.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnel.java @@ -47,6 +47,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.ForgeEventFactory; import java.util.ArrayList; import java.util.Collection; @@ -229,6 +230,9 @@ public abstract class PartP2PTunnel extends PartBasicSt final TunnelType tt = AEApi.instance().registries().p2pTunnel().getTunnelTypeByItem( is ); if( is != null && is.getItem() instanceof IMemoryCard ) { + if( ForgeEventFactory.onItemUseStart( player, is, 1 ) <= 0 ) + return false; + final IMemoryCard mc = (IMemoryCard) is.getItem(); final NBTTagCompound data = mc.getData( is ); @@ -386,6 +390,9 @@ public abstract class PartP2PTunnel extends PartBasicSt final ItemStack is = player.inventory.getCurrentItem(); if( is != null && is.getItem() instanceof IMemoryCard ) { + if( ForgeEventFactory.onItemUseStart( player, is, 1 ) <= 0 ) + return false; + final IMemoryCard mc = (IMemoryCard) is.getItem(); final NBTTagCompound data = new NBTTagCompound();