mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-21 10:27:44 +01:00
Totems work in inventory
This commit is contained in:
@@ -1,49 +0,0 @@
|
|||||||
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/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
|
||||||
index c073786171306ba023f31d2f9ede037707253fa2..dfbb47c200dab7d99cde867c12420c67964867c2 100644
|
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
|
||||||
@@ -1718,6 +1718,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 be44e9597b595f8a4b63a9a198f63e7db411b6ce..35ce3c0385f72feea1a0741ee055994f5cf0190a 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -238,6 +238,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);
|
|
||||||
@@ -252,6 +253,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;
|
|
||||||
@@ -33,6 +33,8 @@ public final class PurpurPermissions {
|
|||||||
|
|
||||||
DefaultPermissions.registerPermission(PREFIX + "bypassIdleKick", "Allows the user to bypass being kicked while idle", PermissionDefault.FALSE, purpur);
|
DefaultPermissions.registerPermission(PREFIX + "bypassIdleKick", "Allows the user to bypass being kicked while idle", PermissionDefault.FALSE, purpur);
|
||||||
|
|
||||||
|
DefaultPermissions.registerPermission(PREFIX + "inventory_totem", "Allows the user to use totem of undying anywhere in their inventory", PermissionDefault.FALSE, purpur);
|
||||||
|
|
||||||
Permission book = DefaultPermissions.registerPermission(PREFIX + "book", "Allows the user to use color codes on books", PermissionDefault.FALSE, purpur);
|
Permission book = DefaultPermissions.registerPermission(PREFIX + "book", "Allows the user to use color codes on books", PermissionDefault.FALSE, purpur);
|
||||||
DefaultPermissions.registerPermission(PREFIX + "book.color.edit", "Allows the user to use color codes on books when editing", PermissionDefault.FALSE, book);
|
DefaultPermissions.registerPermission(PREFIX + "book.color.edit", "Allows the user to use color codes on books when editing", PermissionDefault.FALSE, book);
|
||||||
DefaultPermissions.registerPermission(PREFIX + "book.color.sign", "Allows the user to use color codes on books when signing", PermissionDefault.FALSE, book);
|
DefaultPermissions.registerPermission(PREFIX + "book.color.sign", "Allows the user to use color codes on books when signing", PermissionDefault.FALSE, book);
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ index efee812785240c1ab1fd47514cfb236a3548f9cf..666455fff2b391b637cf1c07091e8810
|
|||||||
protected ParticleOptions getInkParticle() {
|
protected ParticleOptions getInkParticle() {
|
||||||
return ParticleTypes.GLOW_SQUID_INK;
|
return ParticleTypes.GLOW_SQUID_INK;
|
||||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||||
index 359bb2a1a2b39d212280f39c853d2ef53bb3bdf5..d165166b9cdf8be3e403fe595da7e58495072ef8 100644
|
index 421dcf215e00d6113e55c98d3f48f1138b17f461..d7d147c5afa566db3fe9f843ee3f0e69b8a8cd12 100644
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
@@ -210,7 +210,7 @@ index 359bb2a1a2b39d212280f39c853d2ef53bb3bdf5..d165166b9cdf8be3e403fe595da7e584
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) {
|
protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) {
|
||||||
@@ -3485,8 +3486,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -3497,8 +3498,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
this.pushEntities();
|
this.pushEntities();
|
||||||
profilerFiller.pop();
|
profilerFiller.pop();
|
||||||
// Paper start - Add EntityMoveEvent
|
// Paper start - Add EntityMoveEvent
|
||||||
@@ -223,7 +223,7 @@ index 359bb2a1a2b39d212280f39c853d2ef53bb3bdf5..d165166b9cdf8be3e403fe595da7e584
|
|||||||
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
|
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
|
||||||
Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
|
Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
|
||||||
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
|
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
|
||||||
@@ -3496,6 +3499,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -3508,6 +3511,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
|
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4928,7 +4928,7 @@ index 9f476e587d7df797129e49738f101cccca7e10b7..f968e5c99bdb23b268bc34ea1ba5d54a
|
|||||||
&& this.level() == entity.level()
|
&& this.level() == entity.level()
|
||||||
&& EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity)
|
&& EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity)
|
||||||
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
|
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
|
||||||
index 167493ab38bc7ea77335371c2adf9df86aedace5..975680c50e999fe6d4694f04d49baabf88bf8d8d 100644
|
index f292db5aa6df2c2039432a4f09e43bf2b8b11e87..2c195e6aabc10d6c8f06fdcb3d9b361d1feeecc2 100644
|
||||||
--- a/net/minecraft/world/entity/npc/Villager.java
|
--- a/net/minecraft/world/entity/npc/Villager.java
|
||||||
+++ b/net/minecraft/world/entity/npc/Villager.java
|
+++ b/net/minecraft/world/entity/npc/Villager.java
|
||||||
@@ -200,6 +200,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
@@ -200,6 +200,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
||||||
index 5dc3152ab79df8c2dd62c4b207ffab71bc8c158a..1d432935fb0967a32a77cc882b5093d6e0781d15 100644
|
index d076e9f26af543fadd062e4dca5ccaafabe71cb2..0bcb0530dd8df28a9f4004a9d5dee9324a825095 100644
|
||||||
--- a/net/minecraft/world/entity/LivingEntity.java
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -3543,7 +3543,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -3555,7 +3555,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
if (i1 % 2 == 0) {
|
if (i1 % 2 == 0) {
|
||||||
List<EquipmentSlot> list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList();
|
List<EquipmentSlot> list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList();
|
||||||
EquipmentSlot equipmentSlot = Util.getRandom(list, this.random);
|
EquipmentSlot equipmentSlot = Util.getRandom(list, this.random);
|
||||||
|
|||||||
@@ -13,6 +13,25 @@
|
|||||||
this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock)));
|
this.hurtServer(serverLevel1, this.damageSources().outOfBorder(), Math.max(1, Mth.floor(-d * damagePerBlock)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1594,6 +_,18 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Purpur start - Totems work in inventory
|
||||||
|
+ 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) {
|
||||||
|
+ itemInHand = item;
|
||||||
|
+ itemStack = item.copy();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ // Purpur end - Totems work in inventory
|
||||||
|
+
|
||||||
|
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);
|
||||||
@@ -1788,6 +_,7 @@
|
@@ -1788,6 +_,7 @@
|
||||||
boolean flag = this.lastHurtByPlayerTime > 0;
|
boolean flag = this.lastHurtByPlayerTime > 0;
|
||||||
this.dropEquipment(level); // CraftBukkit - from below
|
this.dropEquipment(level); // CraftBukkit - from below
|
||||||
|
|||||||
@@ -227,6 +227,7 @@ public class PurpurWorldConfig {
|
|||||||
public String playerDeathExpDropEquation = "expLevel * 7";
|
public String playerDeathExpDropEquation = "expLevel * 7";
|
||||||
public int playerDeathExpDropMax = 100;
|
public int playerDeathExpDropMax = 100;
|
||||||
public boolean teleportIfOutsideBorder = false;
|
public boolean teleportIfOutsideBorder = false;
|
||||||
|
public boolean totemOfUndyingWorksInInventory = false;
|
||||||
private void playerSettings() {
|
private void playerSettings() {
|
||||||
if (PurpurConfig.version < 19) {
|
if (PurpurConfig.version < 19) {
|
||||||
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
|
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
|
||||||
@@ -241,6 +242,7 @@ public class PurpurWorldConfig {
|
|||||||
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
|
playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation);
|
||||||
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
|
playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax);
|
||||||
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
|
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;
|
public boolean silkTouchEnabled = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user