Fix new block data in EntityChangeBlockEvent for silverfish when mobGriefing isn't enabled (#8099)
This commit is contained in:
		
					parent
					
						
							
								96871bcde1
							
						
					
				
			
			
				commit
				
					
						0af5c64201
					
				
			
		
					 2 changed files with 37 additions and 20 deletions
				
			
		|  | @ -1,20 +0,0 @@ | |||
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||
| From: SoSeDiK <mrsosedik@gmail.com> | ||||
| Date: Mon, 21 Mar 2022 20:00:53 +0200 | ||||
| Subject: [PATCH] Fix new block data for EntityChangeBlockEvent when sheep eats | ||||
|  grass block | ||||
| 
 | ||||
| 
 | ||||
| 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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
 | ||||
| @@ -0,0 +0,0 @@ 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); | ||||
|                      } | ||||
|  | @ -0,0 +1,37 @@ | |||
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||
| From: SoSeDiK <mrsosedik@gmail.com> | ||||
| Date: Mon, 21 Mar 2022 20:00:53 +0200 | ||||
| Subject: [PATCH] Fix new block data for EntityChangeBlockEvent | ||||
| 
 | ||||
| Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> | ||||
| 
 | ||||
| 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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
 | ||||
| @@ -0,0 +0,0 @@ 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/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
 | ||||
| index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | ||||
| --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
 | ||||
| +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
 | ||||
| @@ -0,0 +0,0 @@ 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 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lulu13022002
				Lulu13022002