aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0807-Fix-new-block-data-for-EntityChangeBlockEvent.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0807-Fix-new-block-data-for-EntityChangeBlockEvent.patch')
-rw-r--r--patches/server/0807-Fix-new-block-data-for-EntityChangeBlockEvent.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/patches/server/0807-Fix-new-block-data-for-EntityChangeBlockEvent.patch b/patches/server/0807-Fix-new-block-data-for-EntityChangeBlockEvent.patch
new file mode 100644
index 0000000000..0ee11ae770
--- /dev/null
+++ b/patches/server/0807-Fix-new-block-data-for-EntityChangeBlockEvent.patch
@@ -0,0 +1,76 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: SoSeDiK <[email protected]>
+Date: Mon, 21 Mar 2022 20:00:53 +0200
+Subject: [PATCH] Fix new block data for EntityChangeBlockEvent
+
+Co-authored-by: Lulu13022002 <[email protected]>
+
+diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
+index 06b7ff21a6e3817e92bc135a573b2419e8900c5f..abf796c3369da6b73c8587dfc05f56d0b8933fde 100644
+--- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
++++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
+@@ -79,7 +79,7 @@ public class EatBlockGoal extends Goal {
+
+ if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) {
+ // CraftBukkit
+- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) {
++ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state
+ this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState()));
+ this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2);
+ }
+diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+index de97ded68bca375d81c77e30afa6622e74a299b7..f69e0b11be74ac83694f59999b3f07a318410c19 100644
+--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
++++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+@@ -373,7 +373,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+
+ if (WitherBoss.canDestroy(iblockdata)) {
+ // CraftBukkit start
+- if (CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, Blocks.AIR.defaultBlockState()).isCancelled()) {
++ if (CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // Paper
+ continue;
+ }
+ // CraftBukkit end
+diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+index aad1fb5cf231b400dc8c192871aa4429536d53ee..75d661c23cde1ba09ea0b673860c9659c32ef77e 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
++++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+@@ -170,7 +170,7 @@ public class Ravager extends Raider {
+ BlockState iblockdata = this.level().getBlockState(blockposition);
+ Block block = iblockdata.getBlock();
+
+- if (block instanceof LeavesBlock && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()).isCancelled()) { // CraftBukkit
++ if (block instanceof LeavesBlock && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper
+ flag = this.level().destroyBlock(blockposition, true, this) || flag;
+ }
+ }
+diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
+index d99923c355e50bfa4682dd147d83dd1cf58553f1..9d3f0f413120e825a44f3eea6b9089761840ff1f 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
++++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
+@@ -176,7 +176,11 @@ public class Silverfish extends Monster {
+
+ if (block instanceof InfestedBlock) {
+ // CraftBukkit start
+- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, blockposition1, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()).isCancelled()) {
++ // Paper start
++ BlockState afterState = world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? net.minecraft.world.level.block.Blocks.AIR.defaultBlockState() : ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1));
++ org.bukkit.event.entity.EntityChangeBlockEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, blockposition1, afterState);
++ if (event.isCancelled()) {
++ // Paper end
+ continue;
+ }
+ // CraftBukkit end
+diff --git a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
+index 918dd360a8cac3fe2b7d73f3f7d2b5c687400683..58a966e3aefad6c812cc64f65780e7b4953191eb 100644
+--- a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
++++ b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
+@@ -129,7 +129,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate
+
+ if (!world.isClientSide && projectile.mayInteract(world, blockposition) && projectile instanceof ThrownTrident && projectile.getDeltaMovement().length() > 0.6D) {
+ // CraftBukkit start
+- if (CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, Blocks.AIR.defaultBlockState()).isCancelled()) {
++ if (CraftEventFactory.callEntityChangeBlockEvent(projectile, blockposition, state.getFluidState().createLegacyBlock()).isCancelled()) { // Paper
+ return;
+ }
+ // CraftBukkit end