66 lines
3.9 KiB
Diff
66 lines
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: lexikiq <noellekiq@gmail.com>
|
|
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 bcea8af63b9911c36873290e5c34567b1eeaacf4..a630bba5d7b8e5e18346cd2b8cc5d6dbc66c8a53 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
|
@@ -52,23 +52,46 @@ 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(player, 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;
|