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@2040c1e Player Flying Fall Damage API (#5357) PaperMC/Paper@fa42c68 Expose pre-collision moving velocity to VehicleBlockCollisionEvent (#8457) PaperMC/Paper@90750a6 Rework filtering spawn egg and tile entity nbt config (#6613)
82 lines
5.2 KiB
Diff
82 lines
5.2 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 88c8f2c53c024021e7bad1e4666e3438b53ab588..16f136dd8ed96a3eb7ae1cf9c6039b4f026fec25 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
@@ -482,7 +482,7 @@ public class ServerPlayerGameMode {
|
|
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 74838807857d32a1fc5fa9a8edb27dd8067d950c..26ed7bc8bc76b81b3cb47784de158febb5719a81 100644
|
|
--- a/src/main/java/net/minecraft/world/item/ArmorItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
|
@@ -147,7 +147,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/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
index 3cd04d8e1bf920c36fbab1968df1cb65fbcdc068..3592c0721ab50a0dff3ae6bd3c36316d88e3f57e 100644
|
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
@@ -393,6 +393,8 @@ public class PurpurWorldConfig {
|
|
public double playerCriticalDamageMultiplier = 1.5D;
|
|
public int playerBurpDelay = 10;
|
|
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);
|
|
@@ -417,6 +419,8 @@ public class PurpurWorldConfig {
|
|
playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier);
|
|
playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay);
|
|
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);
|
|
}
|
|
|
|
private static boolean projectileDespawnRateSettingsMigrated = false;
|