From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sat, 19 Jun 2021 01:14:13 -0400 Subject: [PATCH] Add PlayerUseRespawnAnchorEvent diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java index 491ad2098e982f3c947fcae6f258f0b1aa44a562..7d33dae2617991bce244ad906df7053c22e3f515 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java @@ -51,23 +51,48 @@ public class RespawnAnchorBlock extends Block { @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { ItemStack itemStack = player.getItemInHand(hand); + + // Parchment start -- PlayerUseRespawnAnchorEvent + org.bukkit.entity.Player bukkitPlayer = player.getBukkitEntity() instanceof org.bukkit.entity.Player ? (org.bukkit.entity.Player) player.getBukkitEntity() : null; + org.bukkit.block.Block block = org.bukkit.craftbukkit.block.CraftBlock.at(world, pos); + gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult result; + // Parchment end if (hand == InteractionHand.MAIN_HAND && !isRespawnFuel(itemStack) && isRespawnFuel(player.getItemInHand(InteractionHand.OFF_HAND))) { return InteractionResult.PASS; } else if (isRespawnFuel(itemStack) && canBeCharged(state)) { + // Parchment start -- PlayerUseRespawnAnchorEvent + result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE; + } else if (state.getValue(CHARGE) == 0) { + result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.NOTHING; + } else if (!canSetSpawn(world) && !world.isClientSide) { + result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.EXPLODE; + } else if (!world.isClientSide) { + result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.SET_SPAWN; + } else { + return InteractionResult.SUCCESS; + } + + if (bukkitPlayer != null) { + gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent event = new gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent(bukkitPlayer, block, result); + event.callEvent(); + result = event.getResult(); + } + + if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.NOTHING) { + return InteractionResult.PASS; + } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE) { + // Parchment end charge(world, pos, state); if (!player.getAbilities().instabuild) { itemStack.shrink(1); } return InteractionResult.sidedSuccess(world.isClientSide); - } else if (state.getValue(CHARGE) == 0) { - return InteractionResult.PASS; - } else if (!canSetSpawn(world)) { - if (!world.isClientSide) { - this.explode(state, world, pos); - } - - return InteractionResult.sidedSuccess(world.isClientSide); + // Parchment start -- PlayerUseRespawnAnchorEvent + } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.EXPLODE) { + this.explode(state, world, pos); + return InteractionResult.CONSUME; + // Parchment end } else { if (!world.isClientSide) { ServerPlayer serverPlayer = (ServerPlayer)player; @@ -82,7 +107,6 @@ public class RespawnAnchorBlock extends Block { // Paper end } } - return InteractionResult.CONSUME; } }