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: b1cdc12 Fix block action handling (#6213) 8f94951 Revert "Fix PaperTickList" (#6216) Tuinity Changes: e3bc777 Update paper 845a815 Update readme to 1.17.1 ce43ccd Don't load chunks for hasNewCollision
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 dd5bc68171ce5a67ecf30de65f0c1d280cc88419..38323c95dc36e5ead294670ce120114492de37d5 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 dba3b8e0671ee63ff077155a8964f3e245740e7e..1efe3252465030570b253010e47ad12c5f1aa57f 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) {
|
|
+ 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 a472b1ff8fc0a0a23c72283e943b0bf7f5447b1b..6f09051ff1e7968d17c661bbc56369d84948a70f 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -344,6 +344,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() {
|
|
idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick);
|
|
idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities);
|
|
@@ -362,6 +364,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;
|