mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 17:07:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 2e37979 Use cause and cancel component in PlayerGameModeChanteEvent (#6192) b41b5b5 Catch desynced block breaks (#6193) 5a9c14b Fix distanceSq check on block breaking (#6195) a5acf36 Fix PaperTickList (#6191) Tuinity Changes: 08c0050 Update paper 9cabf00 Do not run filtered rebuild 23229b9 Add async catchers to chunk ticking status change ab2aeb0 Update paper bdd7bb4 Update 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 55a9c1d13484c4ce5e3d8f2dd270df01480add87..a513e60c9bf96c6863926b608c0c46706700c096 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
@@ -503,7 +503,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 e0b8fcb18b8ba79456f38159481d6e835995203a..fbafc3d1e0912ef1f4dfb9f81f04b6905483f933 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -343,6 +343,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);
|
|
@@ -361,6 +363,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;
|