mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 06:24:06 +01:00
647cf31e61
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: fdef9473 Correct Material#isFuel for new experimental materials 42811598 SPIGOT-7293: Add Biome#CHERRY_GROVE CraftBukkit Changes: 968d28df0 Fix availability of experimental datapack features in unit tests
69 lines
3.5 KiB
Diff
69 lines
3.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Noah van der Aa <ndvdaa@gmail.com>
|
|
Date: Sun, 8 Aug 2021 19:56:02 +0200
|
|
Subject: [PATCH] Add CompostItemEvent and EntityCompostItemEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
|
|
index e81bda56c58df6c3109382c17e86f4cc0f16cf81..ae90e86327957bb784e2d81694ee7eea288bb455 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
|
|
@@ -236,6 +236,9 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
|
return InteractionResult.sidedSuccess(world.isClientSide);
|
|
}
|
|
BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack, rand);
|
|
+ if (iblockdata1 == null) {
|
|
+ return InteractionResult.PASS;
|
|
+ }
|
|
// Paper end
|
|
|
|
world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0);
|
|
@@ -265,6 +268,11 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
|
return state;
|
|
}
|
|
iblockdata1 = ComposterBlock.addItem(user, state, world, pos, stack, rand);
|
|
+ // Paper start
|
|
+ if (iblockdata1 == null) {
|
|
+ return state;
|
|
+ }
|
|
+ // Paper end
|
|
// CraftBukkit end
|
|
|
|
stack.shrink(1);
|
|
@@ -315,7 +323,22 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
|
int i = (Integer) iblockdata.getValue(ComposterBlock.LEVEL);
|
|
float f = ComposterBlock.COMPOSTABLES.getFloat(itemstack.getItem());
|
|
|
|
- if ((i != 0 || f <= 0.0F) && rand >= (double) f) {
|
|
+ // Paper start
|
|
+ boolean willRaiseLevel = !((i != 0 || f <= 0.0F) && rand >= (double) f);
|
|
+ if (generatoraccess == DummyGeneratorAccess.INSTANCE || entity == null) { // call event on test run or when entity is null (via hopper)
|
|
+ final io.papermc.paper.event.block.CompostItemEvent event;
|
|
+ if (entity == null) {
|
|
+ event = new io.papermc.paper.event.block.CompostItemEvent(org.bukkit.craftbukkit.block.CraftBlock.at(generatoraccess, blockposition), itemstack.getBukkitStack(), willRaiseLevel);
|
|
+ } else {
|
|
+ event = new io.papermc.paper.event.entity.EntityCompostItemEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(generatoraccess, blockposition), itemstack.getBukkitStack(), willRaiseLevel);
|
|
+ }
|
|
+ if (!event.callEvent()) {
|
|
+ return null;
|
|
+ }
|
|
+ willRaiseLevel = event.willRaiseLevel();
|
|
+ }
|
|
+ if (!willRaiseLevel) {
|
|
+ // Paper end
|
|
return iblockdata;
|
|
} else {
|
|
int j = i + 1;
|
|
@@ -460,6 +483,11 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
|
|
this.changed = true;
|
|
BlockState iblockdata = ComposterBlock.addItem((Entity) null, this.state, this.level, this.pos, itemstack);
|
|
|
|
+ // Paper start
|
|
+ if (iblockdata == null) {
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
this.level.levelEvent(1500, this.pos, iblockdata != this.state ? 1 : 0);
|
|
this.removeItemNoUpdate(0);
|
|
}
|