Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Shift right click to use exp for mending
- Loading branch information
1 parent
b9d932a
commit 4e03b8f
Showing
1 changed file
with
69 additions
and
0 deletions.
There are no files selected for viewing
69 changes: 69 additions & 0 deletions
69
patches/server/0257-Shift-right-click-to-use-exp-for-mending.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: William Blake Galbreath <blake.galbreath@gmail.com> | ||
Date: Tue, 24 Aug 2021 16:48:35 -0500 | ||
Subject: [PATCH] Shift right click to use exp for mending | ||
|
||
|
||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java | ||
index 38323c95dc36e5ead294670ce120114492de37d5..a4410485d8b1b8bfbbd72240f078ed5e3af0d0de 100644 | ||
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java | ||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java | ||
@@ -526,6 +526,7 @@ public class ServerPlayerGameMode { | ||
public InteractionHand interactHand; | ||
public ItemStack interactItemStack; | ||
public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { | ||
+ if (shiftClickMended(stack)) return InteractionResult.SUCCESS; // Purpur | ||
BlockPos blockposition = hitResult.getBlockPos(); | ||
BlockState iblockdata = world.getBlockState(blockposition); | ||
InteractionResult enuminteractionresult = InteractionResult.PASS; | ||
@@ -619,4 +620,18 @@ public class ServerPlayerGameMode { | ||
public void setLevel(ServerLevel world) { | ||
this.level = world; | ||
} | ||
+ | ||
+ // Purpur start | ||
+ public boolean shiftClickMended(ItemStack itemstack) { | ||
+ if (this.player.level.purpurConfig.shiftRightClickRepairsMendingPoints > 0 && this.player.isShiftKeyDown()) { | ||
+ int points = Math.min(this.player.totalExperience, this.player.level.purpurConfig.shiftRightClickRepairsMendingPoints); | ||
+ if (points > 0 && itemstack.isDamaged() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MENDING, itemstack) > 0) { | ||
+ this.player.giveExperiencePoints(-points); | ||
+ this.player.level.addFreshEntity(new net.minecraft.world.entity.ExperienceOrb(this.player.level, this.player.getX(), this.player.getY(), this.player.getZ(), points, org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN, this.player, this.player)); | ||
+ return true; | ||
+ } | ||
+ } | ||
+ return false; | ||
+ } | ||
+ // Purpur end | ||
} | ||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java | ||
index 43d124818c4538bc0d84111dfab25c38aab249c1..67433627b69b81b5ddaa24600ab87de8999d962e 100644 | ||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java | ||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java | ||
@@ -1902,6 +1902,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser | ||
|
||
boolean cancelled; | ||
if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { | ||
+ if (this.player.gameMode.shiftClickMended(itemstack)) return; // Purpur | ||
org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand); | ||
cancelled = event.useItemInHand() == Event.Result.DENY; | ||
} else { | ||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | ||
index 5c8422a3022f2ac8723450b7566b9ac9a823931a..258bd55eb334d1e841e7ecbf77da985f5b7278c4 100644 | ||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | ||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | ||
@@ -359,6 +359,7 @@ public class PurpurWorldConfig { | ||
public boolean playerArmorSwappingCreativeMakesCopy = true; | ||
public boolean playerRidableInWater = false; | ||
public boolean playerRemoveBindingWithWeakness = false; | ||
+ public int shiftRightClickRepairsMendingPoints = 0; | ||
private void playerSettings() { | ||
if (PurpurConfig.version < 19) { | ||
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); | ||
@@ -386,6 +387,7 @@ public class PurpurWorldConfig { | ||
playerArmorSwappingCreativeMakesCopy = getBoolean("gameplay-mechanics.player.armor-click-equip.creative-makes-copy", playerArmorSwappingCreativeMakesCopy); | ||
playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); | ||
playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); | ||
+ shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); | ||
} | ||
|
||
public int snowballDamage = -1; |