39
39
import java .util .List ;
40
40
41
41
public class AnvilHammerItem extends Item implements Equipable , IEngineerGoggles {
42
- private static long lastDropAnvilTime = 0 ;
43
42
private final ItemAttributeModifiers modifiers ;
44
43
45
44
/**
@@ -102,18 +101,21 @@ public static boolean ableToUseAnvilHammer(Level level, BlockPos blockPos, Playe
102
101
|| player .getOffhandItem ().is (Items .FIREWORK_ROCKET );
103
102
}
104
103
105
- private static void dropAnvil (Player player , Level level , BlockPos blockPos ) {
106
- if (player == null || level .isClientSide ) return ;
107
- if (System .currentTimeMillis () - lastDropAnvilTime <= 150 ) return ;
108
- lastDropAnvilTime = System .currentTimeMillis ();
104
+ public static boolean dropAnvil (Player player , Level level , BlockPos blockPos ) {
105
+ if (player == null || level .isClientSide ) return false ;
106
+ ItemStack itemStack = player .getItemInHand (player .getUsedItemHand ());
107
+ if (player .getCooldowns ().isOnCooldown (itemStack .getItem ())) {
108
+ return false ;
109
+ }
110
+ player .getCooldowns ().addCooldown (itemStack .getItem (), 5 );
109
111
AnvilFallOnLandEvent event = new AnvilFallOnLandEvent (
110
112
level , blockPos .above (), new FallingBlockEntity (EntityType .FALLING_BLOCK , level ), player .fallDistance );
111
113
AnvilCraft .EVENT_BUS .post (event );
112
114
level .playSound (null , blockPos , SoundEvents .ANVIL_LAND , SoundSource .BLOCKS , 1f , 1f );
113
- ItemStack itemStack = player .getItemInHand (player .getUsedItemHand ());
114
115
if (itemStack .getItem () instanceof AnvilHammerItem ) {
115
116
itemStack .hurtAndBreak (1 , player , LivingEntity .getSlotForHand (player .getUsedItemHand ()));
116
117
}
118
+ return true ;
117
119
}
118
120
119
121
/**
@@ -132,7 +134,7 @@ public static void useBlock(
132
134
133
135
private static boolean rocketJump (ServerPlayer serverPlayer , ServerLevel level , BlockPos blockPos ) {
134
136
if (serverPlayer == null ) return false ;
135
- ItemStack itemStack = serverPlayer .getInventory ().offhand .get ( 0 );
137
+ ItemStack itemStack = serverPlayer .getInventory ().offhand .getFirst ( );
136
138
if (!itemStack .is (Items .FIREWORK_ROCKET )) return false ;
137
139
if (!itemStack .has (DataComponents .FIREWORKS )) return false ;
138
140
int i = itemStack .get (DataComponents .FIREWORKS ).flightDuration ();
@@ -157,17 +159,6 @@ private static boolean rocketJump(ServerPlayer serverPlayer, ServerLevel level,
157
159
return false ;
158
160
}
159
161
160
- /**
161
- * 左键方块
162
- *
163
- * @param player 玩家
164
- * @param blockPos 位置
165
- * @param level 世界
166
- */
167
- public static void attackBlock (Player player , BlockPos blockPos , Level level ) {
168
- if (player == null || level .isClientSide ) return ;
169
- dropAnvil (player , level , blockPos );
170
- }
171
162
172
163
@ Override
173
164
public boolean canAttackBlock (
0 commit comments