45 lines
3.0 KiB
Diff
45 lines
3.0 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 94d067e9eeee73183de25165d8c97043fe256103..3d6e33abbebe526796359fab76768601c227fbe8 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java
|
|
@@ -65,7 +65,33 @@ public class RespawnAnchorBlock extends Block {
|
|
|
|
@Override
|
|
protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
|
|
+ // 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 (RespawnAnchorBlock.isRespawnFuel(stack) && RespawnAnchorBlock.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 ItemInteractionResult.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 ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION;
|
|
+ } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE) {
|
|
+ // Parchment end
|
|
RespawnAnchorBlock.charge(player, world, pos, state);
|
|
stack.consume(1, player);
|
|
return ItemInteractionResult.sidedSuccess(world.isClientSide);
|