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 2ed78cf83c0ae66a6ddba1ff307da89a24b0d0a8..15d4d703762d54ebab57814a28ad8d0e6500df6d 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java @@ -56,25 +56,47 @@ 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); - - if (hand == InteractionHand.MAIN_HAND && !RespawnAnchorBlock.isRespawnFuel(itemstack) && RespawnAnchorBlock.isRespawnFuel(player.getItemInHand(InteractionHand.OFF_HAND))) { + 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 (RespawnAnchorBlock.isRespawnFuel(itemstack) && RespawnAnchorBlock.canBeCharged(state)) { - RespawnAnchorBlock.charge(player, world, pos, state); + } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE) { + // Parchment end + charge(player, world, pos, state); if (!player.getAbilities().instabuild) { itemstack.shrink(1); } return InteractionResult.sidedSuccess(world.isClientSide); - } else if ((Integer) state.getValue(RespawnAnchorBlock.CHARGE) == 0) { - return InteractionResult.PASS; - } else if (!RespawnAnchorBlock.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 entityplayer = (ServerPlayer) player;