2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								From: Aikar <aikar@aikar.co>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Date: Tue, 19 Dec 2017 16:31:46 -0500
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Subject: [PATCH] ExperienceOrbs API for Reason/Source/Triggering player
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Adds lots of information about why this orb exists.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Replaces isFromBottle() with logic that persists entity reloads too.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 22:13:07 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index f772924217c0531b09662a145d8ee5d22dd5ca51..ecfb88b4d9727ad20a2c33475cc6b1ec88821a19 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 22:13:07 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -415,7 +415,7 @@ public class ServerPlayerGameMode {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 // Drop event experience
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 if (flag && event != null) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                    iblockdata.getBlock().popExperience(this.level, pos, event.getExpToDrop());
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+                    iblockdata.getBlock().popExperience(this.level, pos, event.getExpToDrop(), this.player); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                 }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 return true;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-03 19:57:21 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 41556294841b2c280ba4eff861405ccb6aee19e5..5220e3ee9fab4c4cbc95e0cf1928392316a35e34 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -38,13 +38,63 @@ public class ExperienceOrb extends Entity {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     public int value;
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     private int count;
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     private Player followingPlayer;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper start
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public java.util.UUID sourceEntityId;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public java.util.UUID triggerEntityId;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public org.bukkit.entity.ExperienceOrb.SpawnReason spawnReason = org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    private void loadPaperNBT(CompoundTag nbttagcompound) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (!nbttagcompound.contains("Paper.ExpData", 10)) { // 10 = compound
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            return;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        CompoundTag comp = nbttagcompound.getCompound("Paper.ExpData");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (comp.hasUUID("source")) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            this.sourceEntityId = comp.getUUID("source");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (comp.hasUUID("trigger")) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            this.triggerEntityId = comp.getUUID("trigger");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (comp.contains("reason")) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            String reason = comp.getString("reason");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            try {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                this.spawnReason = org.bukkit.entity.ExperienceOrb.SpawnReason.valueOf(reason);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            } catch (Exception e) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                this.level.getCraftServer().getLogger().warning("Invalid spawnReason set for experience orb: " + e.getMessage() + " - " + reason);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    private void savePaperNBT(CompoundTag nbttagcompound) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        CompoundTag comp = new CompoundTag();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (this.sourceEntityId != null) {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-17 14:39:36 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+            comp.putUUID("source", this.sourceEntityId);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (this.triggerEntityId != null) {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-17 14:39:36 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+            comp.putUUID("trigger", triggerEntityId);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (this.spawnReason != null && this.spawnReason != org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            comp.putString("reason", this.spawnReason.name());
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        nbttagcompound.put("Paper.ExpData", comp);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public ExperienceOrb(Level world, double x, double y, double z, int amount) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this(world, x, y, z, amount, null, null);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+    public ExperienceOrb(Level world, double d0, double d1, double d2, int i, org.bukkit.entity.ExperienceOrb.SpawnReason reason, Entity triggerId) {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								+        this(world, d0, d1, d2, i, reason, triggerId, null);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+    public ExperienceOrb(Level world, double d0, double d1, double d2, int i, org.bukkit.entity.ExperienceOrb.SpawnReason reason, Entity triggerId, Entity sourceId) {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         this(EntityType.EXPERIENCE_ORB, world);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        this.setPos(x, y, z);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this.sourceEntityId = sourceId != null ? sourceId.getUUID() : null;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this.triggerEntityId = triggerId != null ? triggerId.getUUID() : null;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this.spawnReason = reason != null ? reason : org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this.setPos(d0, d1, d2);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         this.setYRot((float) (this.random.nextDouble() * 360.0D));
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         this.setDeltaMovement((this.random.nextDouble() * 0.20000000298023224D - 0.10000000149011612D) * 2.0D, this.random.nextDouble() * 0.2D * 2.0D, (this.random.nextDouble() * 0.20000000298023224D - 0.10000000149011612D) * 2.0D);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        this.value = amount;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this.value = i;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public ExperienceOrb(EntityType<? extends ExperienceOrb> type, Level world) {
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -154,12 +204,20 @@ public class ExperienceOrb extends Entity {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public static void award(ServerLevel world, Vec3 pos, int amount) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper start - add reasons for orbs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        award(world, pos, amount, null, null, null);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public static void award(ServerLevel world, Vec3 pos, int amount, org.bukkit.entity.ExperienceOrb.SpawnReason reason, Entity triggerId) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        award(world, pos, amount, reason, triggerId, null);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public static void award(ServerLevel world, Vec3 pos, int amount, org.bukkit.entity.ExperienceOrb.SpawnReason reason, Entity triggerId, Entity sourceId) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper end - add reasons for orbs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         while (amount > 0) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             int j = ExperienceOrb.getExperienceValue(amount);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             amount -= j;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             if (!ExperienceOrb.tryMergeToExisting(world, pos, j)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                world.addFreshEntity(new ExperienceOrb(world, pos.x(), pos.y(), pos.z(), j));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                world.addFreshEntity(new ExperienceOrb(world, pos.x(), pos.y(), pos.z(), j, reason, triggerId, sourceId)); // Paper - add reason
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 22:13:07 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -227,6 +285,7 @@ public class ExperienceOrb extends Entity {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         nbt.putShort("Age", (short) this.age);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         nbt.putShort("Value", (short) this.value);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         nbt.putInt("Count", this.count);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this.savePaperNBT(nbt); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 22:13:07 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -235,6 +294,7 @@ public class ExperienceOrb extends Entity {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         this.age = nbt.getShort("Age");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         this.value = nbt.getShort("Value");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         this.count = Math.max(nbt.getInt("Count"), 1);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        this.loadPaperNBT(nbt); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 22:14:11 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index f6761a4bfa7a73cdbd1ecd4be1f9e78f61a67ae3..4f915072f9847327ec4fa5b33541f7105bc7fff6 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-06 11:26:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -1704,7 +1704,8 @@ public abstract class LivingEntity extends Entity {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     protected void dropExperience() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         // CraftBukkit start - Update getExpReward() above if the removed if() changes!
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         if (true) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            ExperienceOrb.award((ServerLevel) this.level, this.position(), this.expToDrop);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            LivingEntity attacker = this.lastHurtByPlayer != null ? this.lastHurtByPlayer : this.lastHurtByMob; // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            ExperienceOrb.award((ServerLevel) this.level, this.position(), this.expToDrop, this instanceof ServerPlayer ? org.bukkit.entity.ExperienceOrb.SpawnReason.PLAYER_DEATH : org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, attacker, this); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								             this.expToDrop = 0;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         // CraftBukkit end
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 09:59:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index c955f34e9c92f3310d2ead4eb887b5fe94180619..43841b5c77beb73169e2ff1645afe1234d8f74c7 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/animal/Animal.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -264,7 +264,7 @@ public abstract class Animal extends AgeableMob {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             if (world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                 // CraftBukkit start - use event experience
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 if (experience > 0) {
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                    world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), experience));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                    world.addFreshEntity(new ExperienceOrb(world, this.getX(), this.getY(), this.getZ(), experience, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, entityplayer, entityageable)); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                 }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 // CraftBukkit end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 22:14:11 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index a493b9998cd08eda1aeb34087736c5646ee2d8d3..7de3d73232d985ab18d7266371d301c490b79b9f 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -883,7 +883,7 @@ public class Fox extends Animal {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                 if (this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     // CraftBukkit start - use event experience
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     if (experience > 0) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        this.level.addFreshEntity(new ExperienceOrb(this.level, this.animal.getX(), this.animal.getY(), this.animal.getZ(), experience));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                        this.level.addFreshEntity(new ExperienceOrb(this.level, this.animal.getX(), this.animal.getY(), this.animal.getZ(), experience, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, entityplayer, entityfox)); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     // CraftBukkit end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 22:14:11 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 10e4ed61e20edc4e2203150780d377a0fd8515bb..3ba8fafcd5de584209dd30cadb8e76a46dac4bc8 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -455,7 +455,7 @@ public class Turtle extends Animal {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								             Random random = this.animal.getRandom();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             if (this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                this.level.addFreshEntity(new ExperienceOrb(this.level, this.animal.getX(), this.animal.getY(), this.animal.getZ(), random.nextInt(7) + 1));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                this.level.addFreshEntity(new ExperienceOrb(this.level, this.animal.getX(), this.animal.getY(), this.animal.getZ(), random.nextInt(7) + 1, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, entityplayer)); // Paper;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-07 08:52:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index e17cf38b791f509447ce2c8ef38411530a0fb09b..3a01ffffcc37a93866b8b6774874959dfcabba26 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -634,7 +634,7 @@ public class EnderDragon extends Mob implements Enemy {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         if (this.level instanceof ServerLevel) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             if (this.dragonDeathTime > 150 && this.dragonDeathTime % 5 == 0 && flag) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.08F));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.08F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             }
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								             if (this.dragonDeathTime == 1 && !this.isSilent()) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@@ -665,7 +665,7 @@ public class EnderDragon extends Mob implements Enemy {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         this.yBodyRot = this.getYRot();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         if (this.dragonDeathTime == 200 && this.level instanceof ServerLevel) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             if (flag) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.2F));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                ExperienceOrb.award((ServerLevel) this.level, this.position(), Mth.floor((float) short0 * 0.2F), org.bukkit.entity.ExperienceOrb.SpawnReason.ENTITY_DEATH, this.lastHurtByPlayer, this); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             if (this.dragonFight != null) {
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 22:14:11 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 7ddcdafdd9b60e9cab2d6b0a3c5b40694ea59506..3839bacbd5f4d06eb13d0e604651232d9fbd7b6a 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -616,7 +616,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         if (offer.shouldRewardExp()) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.getTradingPlayer(), this)); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 22:14:11 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 9001d627060b9691b703b4c0e157124b0cdee6bb..1101989e93758294c1adebbef0ab12a3c046e326 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -187,7 +187,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         if (offer.shouldRewardExp()) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             int i = 3 + this.random.nextInt(4);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.VILLAGER_TRADE, this.getTradingPlayer(), this)); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 22:14:11 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 3353892ab858db5e0ad2833bf56c6a367248f6fb..45d007c519e80415e34eaf404c03bf104b6f9dc1 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -516,7 +516,7 @@ public class FishingHook extends Projectile {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                     this.level.addFreshEntity(entityitem);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     // CraftBukkit start - this.random.nextInt(6) + 1 -> playerFishEvent.getExpToDrop()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     if (playerFishEvent.getExpToDrop() > 0) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        entityhuman.level.addFreshEntity(new ExperienceOrb(entityhuman.level, entityhuman.getX(), entityhuman.getY() + 0.5D, entityhuman.getZ() + 0.5D, playerFishEvent.getExpToDrop()));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                        entityhuman.level.addFreshEntity(new ExperienceOrb(entityhuman.level, entityhuman.getX(), entityhuman.getY() + 0.5D, entityhuman.getZ() + 0.5D, playerFishEvent.getExpToDrop(), org.bukkit.entity.ExperienceOrb.SpawnReason.FISHING, this.getPlayerOwner(), this)); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     // CraftBukkit end
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                     if (itemstack1.is((Tag) ItemTags.FISHES)) {
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 467f9814e0991d31bff7259f266262c81328f05f..11d1db5ef709dfb6fa596ebc4f5fff1415ad4f6d 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownExperienceBottle.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -51,7 +51,7 @@ public class ThrownExperienceBottle extends ThrowableItemProjectile {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								             }
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								             // CraftBukkit end
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            ExperienceOrb.award((ServerLevel) this.level, this.position(), i);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            ExperienceOrb.award((ServerLevel) this.level, this.position(), i, org.bukkit.entity.ExperienceOrb.SpawnReason.EXP_BOTTLE, this.getOwner(), this); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             this.discard();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-07 08:52:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index c5e4a0aa901d362cb299298fe2426c1c8f546ece..b268645827b7a57b906fd925d694f802a75da25d 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -98,7 +98,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             public void onTake(net.minecraft.world.entity.player.Player player, ItemStack stack) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 context.execute((world, blockposition) -> {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     if (world instanceof ServerLevel) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        ExperienceOrb.award((ServerLevel) world, Vec3.atCenterOf((Vec3i) blockposition), this.getExperienceAmount(world));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+                        ExperienceOrb.award((ServerLevel) world, Vec3.atCenterOf((Vec3i) blockposition), this.getExperienceAmount(world), org.bukkit.entity.ExperienceOrb.SpawnReason.GRINDSTONE, player); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     world.levelEvent(1042, blockposition, 0);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-07 08:52:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 72ef08a59dbf72bec2ce54ab76455c4230395959..6a31e3a3466369ede28e28bc3b9fda8dcb77e136 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/level/block/Block.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/level/block/Block.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -374,8 +374,13 @@ public class Block extends BlockBehaviour implements ItemLike {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     public void popExperience(ServerLevel world, BlockPos pos, int size) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper start - add player parameter
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        popExperience(world, pos, size, null);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public void popExperience(ServerLevel world, BlockPos pos, int size, net.minecraft.server.level.ServerPlayer player) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper end - add player parameter
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         if (world.getGameRules().getBoolean(GameRules.RULE_DOBLOCKDROPS)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            ExperienceOrb.award(world, Vec3.atCenterOf((Vec3i) pos), size);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            ExperienceOrb.award(world, Vec3.atCenterOf((Vec3i) pos), size, org.bukkit.entity.ExperienceOrb.SpawnReason.BLOCK_BREAK, player); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-16 18:48:27 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 61ab07be21759df7b92ba71e31c537860f4e5dc2..265fa3cb96b7d39194a7e83b8b77b811bc3e8b40 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-16 18:48:27 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -624,7 +624,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-19 09:06:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         j = event.getExpToDrop();
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         // CraftBukkit end
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        ExperienceOrb.award(worldserver, vec3d, j);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        ExperienceOrb.award(worldserver, vec3d, j, org.bukkit.entity.ExperienceOrb.SpawnReason.FURNACE, entityhuman); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 09:59:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-11 19:27:48 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index f426891c2ca5688d46b47d5c050314b9e6f6c349..d0873200aa8f66648e23fc2954a27a83289e748c 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 09:59:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-11 19:27:48 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -870,7 +870,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         } else if (TNTPrimed.class.isAssignableFrom(clazz)) {
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 09:59:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								             entity = new PrimedTnt(world, x, y, z, null);
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         } else if (ExperienceOrb.class.isAssignableFrom(clazz)) {
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 09:59:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-            entity = new net.minecraft.world.entity.ExperienceOrb(world, x, y, z, 0);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            entity = new net.minecraft.world.entity.ExperienceOrb(world, x, y, z, 0, org.bukkit.entity.ExperienceOrb.SpawnReason.CUSTOM, null, null); // Paper
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         } else if (LightningStrike.class.isAssignableFrom(clazz)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             entity = net.minecraft.world.entity.EntityType.LIGHTNING_BOLT.create(world);
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 09:59:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								             entity.moveTo(location.getX(), location.getY(), location.getZ());
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								index 40713228b149b4532fcee3a54bbe63e161318258..84899284703baeb04bfc79251941265d52ac07e8 100644
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftExperienceOrb.java
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-12 02:01:04 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -19,6 +19,18 @@ public class CraftExperienceOrb extends CraftEntity implements ExperienceOrb {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         this.getHandle().value = value;
							 
						 
					
						
							
								
									
										
										
										
											2021-06-11 14:02:28 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper start
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public java.util.UUID getTriggerEntityId() {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        return getHandle().triggerEntityId;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public java.util.UUID getSourceEntityId() {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        return getHandle().sourceEntityId;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public SpawnReason getSpawnReason() {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        return getHandle().spawnReason;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public net.minecraft.world.entity.ExperienceOrb getHandle() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         return (net.minecraft.world.entity.ExperienceOrb) entity;