@@ -5,10 +5,10 @@ Subject: [PATCH] Add config for death loot
55
66
77diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
8- index 06e41bca6b964ca71ea7bca547b03cdb3610ba31..b39f2790fabeb7f2a977dcd1ec66db1fde373e51 100644
8+ index aa242f3f7589c8edafccccb52effaed7582aa6f4..44d8430361cadacff08b5f543a471982d453ff77 100644
99--- a/net/minecraft/server/level/ServerPlayer.java
1010+++ b/net/minecraft/server/level/ServerPlayer.java
11- @@ -1249 ,7 +1249 ,33 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
11+ @@ -1250 ,7 +1250 ,33 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
1212 if (!keepInventory) {
1313 for (ItemStack item : this.getInventory().getContents()) {
1414 if (!item.isEmpty() && !EnchantmentHelper.has(item, net.minecraft.world.item.enchantment.EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) {
@@ -17,23 +17,23 @@ index 06e41bca6b964ca71ea7bca547b03cdb3610ba31..b39f2790fabeb7f2a977dcd1ec66db1f
1717+ ItemEntity entity = this.drop(stack, true, false, false, null);
1818+ // atDeprecated start - death loot protection
1919+ if (entity != null) {
20- + if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemsOwnerPickupOnly) {
20+ + if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemsOwnerPickupOnly) {
2121+ entity.setTarget(this.getUUID());
2222+ entity.markAsDeathLoot();
2323+ }
24- + if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemsGlow) {
24+ + if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemsGlow) {
2525+ entity.setGlowingTag(true);
2626+ entity.markAsDeathLoot();
2727+ }
28- + if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemsInvulnerable) {
28+ + if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemsInvulnerable) {
2929+ entity.setInvulnerable(true);
3030+ entity.markAsDeathLoot();
3131+ }
32- + if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemDespawnTimeTicks > 0) {
33- + entity.age = -fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemDespawnTimeTicks;
32+ + if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemDespawnTimeTicks > 0) {
33+ + entity.age = -fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemDespawnTimeTicks;
3434+ entity.markAsDeathLoot();
3535+ }
36- + if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemsMobCantPickup) {
36+ + if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemsMobCantPickup) {
3737+ entity.canMobPickup = false;
3838+ entity.markAsDeathLoot();
3939+ }
@@ -44,7 +44,7 @@ index 06e41bca6b964ca71ea7bca547b03cdb3610ba31..b39f2790fabeb7f2a977dcd1ec66db1f
4444 }
4545 }
4646diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
47- index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..25b1db4170104c7b49ed5c62989f6d8c59699465 100644
47+ index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..08b29d1f7941bb81d9a715656d94d987e8247cc5 100644
4848--- a/net/minecraft/world/entity/LivingEntity.java
4949+++ b/net/minecraft/world/entity/LivingEntity.java
5050@@ -3970,9 +3970,17 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -56,7 +56,7 @@ index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..25b1db4170104c7b49ed5c62989f6d8c
5656- itemEntity.setDeltaMovement(-Mth.sin(f1) * f, 0.2F, Mth.cos(f1) * f);
5757+ // atDeprecated start
5858+ if (this instanceof Player) {
59- + float f = this.random.nextFloat() * (float) fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathLootSpread;
59+ + float f = this.random.nextFloat() * (float) fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathLootSpread;
6060+ float f1 = this.random.nextFloat() * (float) (Math.PI * 2);
6161+ itemEntity.setDeltaMovement(-Mth.sin(f1) * f, 0.2F, Mth.cos(f1) * f);
6262+ } else {
@@ -69,7 +69,7 @@ index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..25b1db4170104c7b49ed5c62989f6d8c
6969 float f = 0.3F;
7070 float f1 = Mth.sin(this.getXRot() * (float) (Math.PI / 180.0));
7171diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
72- index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f28cf33be 100644
72+ index b745eb5d9c68547335247910ff2ae8d5fb36349c..a779bb24475e2ee5b6fab7da9b64a2c96b027242 100644
7373--- a/net/minecraft/world/entity/item/ItemEntity.java
7474+++ b/net/minecraft/world/entity/item/ItemEntity.java
7575@@ -56,6 +56,7 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -85,7 +85,7 @@ index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f
8585 this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
8686 }
8787+ // atDeprecated start - glowing for death loot
88- + if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemsGlow) {
88+ + if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemsGlow) {
8989+ this.setGlowingTag(true);
9090+ }
9191+ // atDeprecated end
@@ -118,7 +118,7 @@ index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f
118118 public void playerTouch(Player entity) {
119119 if (!this.level().isClientSide) {
120120+ // atDeprecated start - enforce owner-only pickup for death loot
121- + if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemsOwnerPickupOnly) {
121+ + if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemsOwnerPickupOnly) {
122122+ if (this.target != null && !this.target.equals(entity.getUUID())) {
123123+ return;
124124+ }
@@ -137,7 +137,7 @@ index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f
137137+ // atDeprecated end
138138 }
139139diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
140- index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..b9b14cd9f0ff5556e076aab21f4c2b85d1e48ee5 100644
140+ index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..d5ba1bea926f0fd3ef38d101055d61eb548679a4 100644
141141--- a/net/minecraft/world/entity/player/Player.java
142142+++ b/net/minecraft/world/entity/player/Player.java
143143@@ -1840,7 +1840,16 @@ public abstract class Player extends LivingEntity {
@@ -147,7 +147,7 @@ index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..b9b14cd9f0ff5556e076aab21f4c2b85
147147- return !level.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator() ? Math.min(this.experienceLevel * 7, 100) : 0;
148148+ // atDeprecated start - Use deathXpDropPercentage gamerule for XP drop (fixed XP calculation)
149149+ if (!level.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
150- + int percent = fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathXpDropPercentage;
150+ + int percent = fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathXpDropPercentage;
151151+ if (percent < 0) percent = 0;
152152+ if (percent > 100) percent = 100;
153153+ int xp = getTrueTotalExperience();
@@ -194,15 +194,15 @@ index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..b9b14cd9f0ff5556e076aab21f4c2b85
194194+ // atDeprecated end
195195 }
196196diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
197- index 5de769e7bd56bb3355c3c711d46ce5e103ea4409..e823741a915f14254933aebc515f4ad72b174bbc 100644
197+ index 5de769e7bd56bb3355c3c711d46ce5e103ea4409..646cb7159a3e38101c281bd9fac5d0be1d79c3e8 100644
198198--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
199199+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
200200@@ -630,6 +630,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
201201 }
202202
203203 public static boolean addItem(Container container, ItemEntity item) {
204204+ // atDeprecated start - prevent hopper pickup of death loot
205- + if (item.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG .deathItemsHopperCantPickup) {
205+ + if (item.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG .deathItemsHopperCantPickup) {
206206+ return false;
207207+ }
208208+ // atDeprecated end
0 commit comments