Skip to content

Commit 1478e12

Browse files
修改铁砧锤cd实现
1 parent e739008 commit 1478e12

File tree

2 files changed

+12
-19
lines changed

2 files changed

+12
-19
lines changed

src/main/java/dev/dubhe/anvilcraft/event/forge/BlockEventListener.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ public class BlockEventListener {
2424
public static void anvilHammerAttack(@NotNull PlayerInteractEvent.LeftClickBlock event) {
2525
InteractionHand hand = event.getHand();
2626
if (event.getEntity().getItemInHand(hand).getItem() instanceof AnvilHammerItem) {
27-
AnvilHammerItem.attackBlock(event.getEntity(), event.getPos(), event.getLevel());
27+
if (!AnvilHammerItem.dropAnvil(event.getEntity(), event.getLevel(), event.getPos())) {
28+
event.setCanceled(true);
29+
}
2830
}
2931
}
3032

src/main/java/dev/dubhe/anvilcraft/item/AnvilHammerItem.java

+9-18
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import java.util.List;
4040

4141
public class AnvilHammerItem extends Item implements Equipable, IEngineerGoggles {
42-
private static long lastDropAnvilTime = 0;
4342
private final ItemAttributeModifiers modifiers;
4443

4544
/**
@@ -102,18 +101,21 @@ public static boolean ableToUseAnvilHammer(Level level, BlockPos blockPos, Playe
102101
|| player.getOffhandItem().is(Items.FIREWORK_ROCKET);
103102
}
104103

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);
109111
AnvilFallOnLandEvent event = new AnvilFallOnLandEvent(
110112
level, blockPos.above(), new FallingBlockEntity(EntityType.FALLING_BLOCK, level), player.fallDistance);
111113
AnvilCraft.EVENT_BUS.post(event);
112114
level.playSound(null, blockPos, SoundEvents.ANVIL_LAND, SoundSource.BLOCKS, 1f, 1f);
113-
ItemStack itemStack = player.getItemInHand(player.getUsedItemHand());
114115
if (itemStack.getItem() instanceof AnvilHammerItem) {
115116
itemStack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(player.getUsedItemHand()));
116117
}
118+
return true;
117119
}
118120

119121
/**
@@ -132,7 +134,7 @@ public static void useBlock(
132134

133135
private static boolean rocketJump(ServerPlayer serverPlayer, ServerLevel level, BlockPos blockPos) {
134136
if (serverPlayer == null) return false;
135-
ItemStack itemStack = serverPlayer.getInventory().offhand.get(0);
137+
ItemStack itemStack = serverPlayer.getInventory().offhand.getFirst();
136138
if (!itemStack.is(Items.FIREWORK_ROCKET)) return false;
137139
if (!itemStack.has(DataComponents.FIREWORKS)) return false;
138140
int i = itemStack.get(DataComponents.FIREWORKS).flightDuration();
@@ -157,17 +159,6 @@ private static boolean rocketJump(ServerPlayer serverPlayer, ServerLevel level,
157159
return false;
158160
}
159161

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-
}
171162

172163
@Override
173164
public boolean canAttackBlock(

0 commit comments

Comments
 (0)