Skip to content

Commit

Permalink
修改铁砧锤cd实现
Browse files Browse the repository at this point in the history
  • Loading branch information
DancingSnow0517 committed Oct 6, 2024
1 parent e739008 commit 1478e12
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ public class BlockEventListener {
public static void anvilHammerAttack(@NotNull PlayerInteractEvent.LeftClickBlock event) {
InteractionHand hand = event.getHand();
if (event.getEntity().getItemInHand(hand).getItem() instanceof AnvilHammerItem) {
AnvilHammerItem.attackBlock(event.getEntity(), event.getPos(), event.getLevel());
if (!AnvilHammerItem.dropAnvil(event.getEntity(), event.getLevel(), event.getPos())) {
event.setCanceled(true);
}
}
}

Expand Down
27 changes: 9 additions & 18 deletions src/main/java/dev/dubhe/anvilcraft/item/AnvilHammerItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import java.util.List;

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

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

private static void dropAnvil(Player player, Level level, BlockPos blockPos) {
if (player == null || level.isClientSide) return;
if (System.currentTimeMillis() - lastDropAnvilTime <= 150) return;
lastDropAnvilTime = System.currentTimeMillis();
public static boolean dropAnvil(Player player, Level level, BlockPos blockPos) {
if (player == null || level.isClientSide) return false;
ItemStack itemStack = player.getItemInHand(player.getUsedItemHand());
if (player.getCooldowns().isOnCooldown(itemStack.getItem())) {
return false;
}
player.getCooldowns().addCooldown(itemStack.getItem(), 5);
AnvilFallOnLandEvent event = new AnvilFallOnLandEvent(
level, blockPos.above(), new FallingBlockEntity(EntityType.FALLING_BLOCK, level), player.fallDistance);
AnvilCraft.EVENT_BUS.post(event);
level.playSound(null, blockPos, SoundEvents.ANVIL_LAND, SoundSource.BLOCKS, 1f, 1f);
ItemStack itemStack = player.getItemInHand(player.getUsedItemHand());
if (itemStack.getItem() instanceof AnvilHammerItem) {
itemStack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(player.getUsedItemHand()));
}
return true;
}

/**
Expand All @@ -132,7 +134,7 @@ public static void useBlock(

private static boolean rocketJump(ServerPlayer serverPlayer, ServerLevel level, BlockPos blockPos) {
if (serverPlayer == null) return false;
ItemStack itemStack = serverPlayer.getInventory().offhand.get(0);
ItemStack itemStack = serverPlayer.getInventory().offhand.getFirst();
if (!itemStack.is(Items.FIREWORK_ROCKET)) return false;
if (!itemStack.has(DataComponents.FIREWORKS)) return false;
int i = itemStack.get(DataComponents.FIREWORKS).flightDuration();
Expand All @@ -157,17 +159,6 @@ private static boolean rocketJump(ServerPlayer serverPlayer, ServerLevel level,
return false;
}

/**
* 左键方块
*
* @param player 玩家
* @param blockPos 位置
* @param level 世界
*/
public static void attackBlock(Player player, BlockPos blockPos, Level level) {
if (player == null || level.isClientSide) return;
dropAnvil(player, level, blockPos);
}

@Override
public boolean canAttackBlock(
Expand Down

0 comments on commit 1478e12

Please sign in to comment.