From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Encode42 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 a25e4eeb1ce4e18c7cb14e269ad3852715209cb9..111779c0a614b29bea5ad7a8301d704efaf62bf1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -498,7 +498,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 ad095c6bc7e00d286c83e37f84d8ed5d4a2c6881..1d1723873be1ec61c34e22e4f709f207abf593a6 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/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 137f7149647aee2f94b670159bccd8068b807f62..84c0b76e1cf7af8e78af7af6444a14783eeb4313 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -341,6 +341,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); @@ -359,6 +361,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;