mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@c1b4899 Fix dupe uuid check on entity add (#6735) PaperMC/Paper@3f043f7 Async catch modifications to critical entity state PaperMC/Paper@bc43f40 Update jline and TCA (#6829) PaperMC/Paper@d9e2817 Update paperweight to 1.1.13 (#6866) PaperMC/Paper@3e310e0 Remove redundant and unneeded repos, reorder repos (#6867) PaperMC/Paper@485d15f Update paperweight to 1.1.14 (#6868) PaperMC/Paper@09d50a9 Added missing mappings (#6810) PaperMC/Paper@0968cdd Move async catches back to where they were (#6869) PaperMC/Paper@6f71b7c Deduplicate strings in ObfHelper (#6841) PaperMC/Paper@ada930b Updated Upstream (Bukkit/CraftBukkit) (#6872) PaperMC/Paper@06d82e0 Cache palette array (#6767) PaperMC/Paper@70fe58d Expose the potential player cause of a lightning (#6782) PaperMC/Paper@c20c9d3 Fix CraftNamespacedKey shenanigans (#6825) PaperMC/Paper@29bb5a9 Add PlayerDeathEvent#getPlayer for clarity (#6859) PaperMC/Paper@124d079 Fix issues with mob conversion (#6831) PaperMC/Paper@22b0238 Add API for checking if a zombie has the option to break doors (#6855) PaperMC/Paper@5af80b0 Add isCollidable methods to various places (#6870) PaperMC/Paper@32ba088 Fix setPatternColor on tropical fish bucket meta (#6877) PaperMC/Paper@87121ce Move `getTrackedPlayers` up from Player to Entity (#6569) PaperMC/Paper@a923e33 Make despawn distance configs per-category, improve per category spawn limit config (#6717) PaperMC/Paper@3f17694 Goat ram API (#6336) PaperMC/Paper@cc2ecbc Add Raw Byte Entity Serialization (#6826) Airplane Changes: TECHNOVE/Airplane@e47949b Ty Penple <3 TECHNOVE/Airplane@86fee6b Update upstream
82 lines
5.3 KiB
Diff
82 lines
5.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Encode42 <me@encode42.dev>
|
|
Date: Mon, 28 Jun 2021 15:32:57 -0400
|
|
Subject: [PATCH] Armor click equip options
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
index 585e921585529c03756c51550110c796e6f27ea5..a61c0ca02b085d1ab2587d54c9fcdc76a726cc4e 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
@@ -499,7 +499,7 @@ public class ServerPlayerGameMode {
|
|
return interactionresultwrapper.getResult();
|
|
} else {
|
|
player.setItemInHand(hand, itemstack1);
|
|
- if (this.isCreative()) {
|
|
+ if (this.isCreative() && itemstack1 != ItemStack.EMPTY) { // Purpur
|
|
itemstack1.setCount(i);
|
|
if (itemstack1.isDamageableItem() && itemstack1.getDamageValue() != j) {
|
|
itemstack1.setDamageValue(j);
|
|
diff --git a/src/main/java/net/minecraft/world/item/ArmorItem.java b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
|
index 043ea496bd04bbf4571ec9d16e5362257b3658c8..dffa24f16b96912c3e539df71b521dd29bd6a165 100644
|
|
--- a/src/main/java/net/minecraft/world/item/ArmorItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
|
@@ -146,7 +146,14 @@ public class ArmorItem extends Item implements Wearable {
|
|
}
|
|
|
|
itemstack.setCount(0);
|
|
- return InteractionResultHolder.sidedSuccess(itemstack, world.isClientSide());
|
|
+ // Purpur start
|
|
+ return InteractionResultHolder.success(world.purpurConfig.playerArmorSwappingCreativeMakesCopy ? itemstack : ItemStack.EMPTY);
|
|
+ } else if (world.purpurConfig.playerArmorSwapping && !net.minecraft.world.item.enchantment.EnchantmentHelper.hasBindingCurse(itemstack1)) {
|
|
+ user.setItemSlot(enumitemslot, itemstack);
|
|
+ user.awardStat(Stats.ITEM_USED.get(this));
|
|
+ user.level.playSound(null, user.getX(), user.getY(), user.getZ(), itemstack.getEquipSound(), net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); // we have to force the sound, for whatever reason
|
|
+ return InteractionResultHolder.success(itemstack1);
|
|
+ // Purpur end
|
|
} else {
|
|
return InteractionResultHolder.fail(itemstack);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/item/ElytraItem.java b/src/main/java/net/minecraft/world/item/ElytraItem.java
|
|
index 42f79d418ec4e2dbeac9a217d9dc144cda2ef714..250c0e31825f772d3fee7a523f150cb25e8ae558 100644
|
|
--- a/src/main/java/net/minecraft/world/item/ElytraItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/ElytraItem.java
|
|
@@ -39,7 +39,14 @@ public class ElytraItem extends Item implements Wearable {
|
|
}
|
|
|
|
itemStack.setCount(0);
|
|
- return InteractionResultHolder.sidedSuccess(itemStack, world.isClientSide());
|
|
+ // Purpur start
|
|
+ return InteractionResultHolder.success(world.purpurConfig.playerArmorSwappingCreativeMakesCopy ? itemStack : ItemStack.EMPTY);
|
|
+ } else if (world.purpurConfig.playerArmorSwapping) {
|
|
+ user.setItemSlot(equipmentSlot, itemStack);
|
|
+ user.awardStat(Stats.ITEM_USED.get(this));
|
|
+ user.level.playSound(null, user.getX(), user.getY(), user.getZ(), itemStack.getEquipSound(), net.minecraft.sounds.SoundSource.BLOCKS, 1.0F, 1.0F); // we have to force the sound, for whatever reason
|
|
+ return InteractionResultHolder.success(itemStack2);
|
|
+ // Purpur end
|
|
} else {
|
|
return InteractionResultHolder.fail(itemStack);
|
|
}
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index 07cd83c76b34c6d02dd375292ac5fc3edd5f4491..94162749f3f9b68455ef7ef327dc4d474a19d8a1 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -345,6 +345,8 @@ public class PurpurWorldConfig {
|
|
public boolean playersSkipNight = true;
|
|
public double playerCriticalDamageMultiplier = 1.5D;
|
|
public boolean playerBurpWhenFull = false;
|
|
+ public boolean playerArmorSwapping = false;
|
|
+ public boolean playerArmorSwappingCreativeMakesCopy = true;
|
|
private void playerSettings() {
|
|
if (PurpurConfig.version < 19) {
|
|
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
|
|
@@ -368,6 +370,8 @@ public class PurpurWorldConfig {
|
|
playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight);
|
|
playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier);
|
|
playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull);
|
|
+ playerArmorSwapping = getBoolean("gameplay-mechanics.player.armor-click-equip.allow-hot-swapping", playerArmorSwapping);
|
|
+ playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy);
|
|
}
|
|
|
|
public int snowballDamage = -1;
|