Files
Purpur/patches/server/0078-Totems-work-in-inventory.patch
granny c9aee076fc Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@996d529 Resend entity using the bundle packet (#9853)
PaperMC/Paper@8cf2503 Updated Upstream (Bukkit/CraftBukkit) (#9876)
PaperMC/Paper@2935067 Fix null item in sendEquipmentChange (#9869)
PaperMC/Paper@b3cac04 Fix crash when version_history.json is empty (#9871)
PaperMC/Paper@b1faa5d Fix PotionAPI ignores icon flag (#9864)
PaperMC/Paper@52849f6 Cleanup disable explosion knockback patch (#9858)
PaperMC/Paper@8b1ac39 Fix warden spawn reason from DEFAULT to NATURAL (#8744)
PaperMC/Paper@c6fac38 fix UnsafeValues#loadAdvancement doesn't recalculate position (#9846)
PaperMC/Paper@5bdfb29 Add player idle duration API (#9833)
PaperMC/Paper@a81a384 Implement Velocity VarInt optimizations (#8418)
PaperMC/Paper@415d708 [ci skip] Fix author in last patch
PaperMC/Paper@3e4eaf2 [ci skip] Fix module derp
PaperMC/Paper@5bb30ce Fix entity camera not being reset when cancelling spectating start/stop events (#9883)
PaperMC/Paper@1865625 Fix NPE when no valid world is found on legacy Players (#9885)
2023-10-29 12:39:53 -07:00

50 lines
3.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: draycia <lonelyyordle@gmail.com>
Date: Wed, 29 Apr 2020 00:45:58 -0700
Subject: [PATCH] Totems work in inventory
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index fa59b382c25b9c47bf921258dec89cf2b5ca92e8..bb36602c78292e762e26fe23e9928609c4bb4271 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1623,6 +1623,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}
+ // Purpur start
+ if (level().purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer player && (itemstack == null || itemstack.getItem() != Items.TOTEM_OF_UNDYING) && player.getBukkitEntity().hasPermission("purpur.inventory_totem")) {
+ for (ItemStack item : player.getInventory().items) {
+ if (item.getItem() == Items.TOTEM_OF_UNDYING) {
+ itemstack1 = item;
+ itemstack = item.copy();
+ break;
+ }
+ }
+ }
+ // Purpur end
+
org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null;
EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
event.setCancelled(itemstack == null);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 669454dd9ad60116b664f4432f4fef9662ba170c..2cf49e7cb1d128c9dfec76c33d2c9a88c09ae2ca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -243,6 +243,7 @@ public class PurpurWorldConfig {
public String playerDeathExpDropEquation = "expLevel * 7";
public int playerDeathExpDropMax = 100;
public boolean teleportIfOutsideBorder = false;
+ public boolean totemOfUndyingWorksInInventory = false;
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
@@ -257,6 +258,7 @@ public class PurpurWorldConfig {
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
+ totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
}
public boolean silkTouchEnabled = false;