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@c7d4c01 Ignore invalid jars inside of the updates folder (Fixes #7751) PaperMC/Paper@4ecc338 WorldCreator#keepSpawnLoaded (#7673) PaperMC/Paper@873bfa6 Remove World#refreshChunk deprecation (#7684) PaperMC/Paper@76ed156 Grant temporary immunity from EAR to moving entities (Fixes #7637) (#7644) PaperMC/Paper@567fce6 Don't apply previous potion when item is potion (fixes #7756) (#7757) PaperMC/Paper@c449f6a Build updates PaperMC/Paper@ef6a1a5 Revert to old createProfile(UUID, String) logic (#7723) PaperMC/Paper@0f8aa4e Fix NPE for BlockDataMeta#getBlockData (#7670) PaperMC/Paper@16f224a Trigger bee_nest_destroyed trigger in the correct place (#7436) PaperMC/Paper@caf4a6f Remove or replace a few dumb deprecations (#7760) PaperMC/Paper@47f43da Add missing javadoc deprecation msgs for PlayerProfile (#7688) PaperMC/Paper@fbbc03a Add EntityDyeEvent and CollarColorable interface (#7625) PaperMC/Paper@5b85ee3 Fire CauldronLevelChange on initial fill (#7678) PaperMC/Paper@4dc78ae Fix some team color docs and added hasColor (#7602) PaperMC/Paper@0bf7c95 Fix opening inv in PlayerRecipeBookClickEvent handler (#7552) PaperMC/Paper@d70ac03 fix powder snow cauldrons not turning to water (#7229) PaperMC/Paper@ce059b4 Fix V1451 dataconverter stat types Pufferfish Changes: pufferfish-gg/Pufferfish@52e42d7 Updated Upstream (Paper) pufferfish-gg/Pufferfish@7b760fe Fix method profiler config pufferfish-gg/Pufferfish@65a83aa Updated Upstream (Paper)
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 302203e64277932ecb224edd3768dace07bd9d94..f9f7afa0bf2989aaef2f0e8456fe3c93a226b6d0 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
@@ -520,7 +520,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 014dd3aa8a7313d978d4781a1b7c6f532ff04962..feeb5fc192da4d7b11c26abf628dc9da2c593a85 100644
|
|
--- a/src/main/java/net/minecraft/world/item/ArmorItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/ArmorItem.java
|
|
@@ -145,7 +145,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 10dcb1623caa995922bba0a96f73907e05772e9c..d8fb8dc520ba0b88239c0d4c3f731c0567c422cd 100644
|
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
@@ -383,6 +383,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);
|
|
@@ -406,6 +408,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;
|