Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-16 19:40:07 +01:00
ef0e5a642d
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 9ae3f10f SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API 48c0c547 PR-786: Add methods to get sounds from entities CraftBukkit Changes: 5cc9c022a SPIGOT-7152: Handle hand item changing during air interact event 4ffa1acf6 SPIGOT-7154: Players get kicked when interacting with a conversation 4daa21123 SPIGOT-3842: Add Player#fireworkBoost() and expand Firework API e5d6a9bbf PR-1100: Add methods to get sounds from entities b7e9f1c8b SPIGOT-7146: Reduce use of Material switch in ItemMeta Spigot Changes: 4c157bb4 Rebuild patches
51 Zeilen
3.1 KiB
Diff
51 Zeilen
3.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: TheViperShow <29604693+TheViperShow@users.noreply.github.com>
|
|
Date: Wed, 22 Apr 2020 09:40:38 +0200
|
|
Subject: [PATCH] Implemented BlockFailedDispenseEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
|
index c0e19826163b0eaa429d217b54bb67b8b582a669..85c5319837295bd2f85baebfe8d6660b267f1d5f 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java
|
|
@@ -84,8 +84,10 @@ public class DispenserBlock extends BaseEntityBlock {
|
|
int i = tileentitydispenser.getRandomSlot(world.random);
|
|
|
|
if (i < 0) {
|
|
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFailedDispenseEvent(world, pos)) {// Paper - BlockFailedDispenseEvent is called here
|
|
world.levelEvent(1001, pos, 0);
|
|
world.gameEvent((Entity) null, GameEvent.DISPENSE_FAIL, pos);
|
|
+ } // Paper
|
|
} else {
|
|
ItemStack itemstack = tileentitydispenser.getItem(i);
|
|
DispenseItemBehavior idispensebehavior = this.getDispenseMethod(itemstack);
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/DropperBlock.java b/src/main/java/net/minecraft/world/level/block/DropperBlock.java
|
|
index 1415ad60163f6584619cc7caa61f1848d6ebaa93..801c4c120e98584bcf218a4ef9bd66d7d18c1097 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/DropperBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/DropperBlock.java
|
|
@@ -44,6 +44,7 @@ public class DropperBlock extends DispenserBlock {
|
|
int i = tileentitydispenser.getRandomSlot(world.random);
|
|
|
|
if (i < 0) {
|
|
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFailedDispenseEvent(world, pos)) // Paper - BlockFailedDispenseEvent is called here
|
|
world.levelEvent(1001, pos, 0);
|
|
} else {
|
|
ItemStack itemstack = tileentitydispenser.getItem(i);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
index 7f8dbc94ad04ff58e0ee7591b42e268ee4b75576..5162109ea1f8284f0302306f8dac3048ce0b7010 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
@@ -1868,4 +1868,12 @@ public class CraftEventFactory {
|
|
EntitiesUnloadEvent event = new EntitiesUnloadEvent(new CraftChunk((ServerLevel) world, coords.x, coords.z), bukkitEntities);
|
|
Bukkit.getPluginManager().callEvent(event);
|
|
}
|
|
+
|
|
+ // Paper start
|
|
+ public static boolean handleBlockFailedDispenseEvent(ServerLevel serverLevel, BlockPos blockposition) {
|
|
+ org.bukkit.block.Block block = serverLevel.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
|
+ io.papermc.paper.event.block.BlockFailedDispenseEvent event = new io.papermc.paper.event.block.BlockFailedDispenseEvent(block);
|
|
+ return event.callEvent();
|
|
+ }
|
|
+ // Paper end
|
|
}
|