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@fa0dd15d add missed nullability annotations PaperMC/Paper@b6d70a9c Generators PaperMC/Paper@b92137c1 load the PDC for new block entities PaperMC/Paper@06a26ec2 update legacy test PaperMC/Paper@c4f0b2b0 update more test PaperMC/Paper@77382fcb fix unbreakable shields PaperMC/Paper@9e08de6e Re-add old SmithingTrimRecipe constructors PaperMC/Paper@d2afd149 Bump some more numbers to 1.21.5 PaperMC/Paper@cf1455e5 Ignore private methods in MaterialReroutingTest PaperMC/Paper@ce91a8ca Move out unapplied feature patches
47 lines
3.1 KiB
Diff
47 lines
3.1 KiB
Diff
--- a/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
|
|
@@ -348,6 +_,7 @@
|
|
}
|
|
return false;
|
|
}
|
|
+ if (this.player.level().purpurConfig.slabHalfBreak && this.player.isShiftKeyDown() && blockState.getBlock() instanceof net.minecraft.world.level.block.SlabBlock && ((net.minecraft.world.level.block.SlabBlock) blockState.getBlock()).halfBreak(blockState, pos, this.player)) return true; // Purpur - Break individual slabs when sneaking
|
|
}
|
|
// CraftBukkit end
|
|
|
|
@@ -461,6 +_,7 @@
|
|
public InteractionHand interactHand;
|
|
public ItemStack interactItemStack;
|
|
public InteractionResult useItemOn(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) {
|
|
+ if (shiftClickMended(stack)) return InteractionResult.SUCCESS; // Purpur - Shift right click to use exp for mending
|
|
BlockPos blockPos = hitResult.getBlockPos();
|
|
BlockState blockState = level.getBlockState(blockPos);
|
|
boolean cancelledBlock = false;
|
|
@@ -503,7 +_,7 @@
|
|
boolean flag = !player.getMainHandItem().isEmpty() || !player.getOffhandItem().isEmpty();
|
|
boolean flag1 = player.isSecondaryUseActive() && flag;
|
|
ItemStack itemStack = stack.copy();
|
|
- if (!flag1) {
|
|
+ if (!flag1 || (player.level().purpurConfig.composterBulkProcess && blockState.is(net.minecraft.world.level.block.Blocks.COMPOSTER))) { // Purpur - Sneak to bulk process composter
|
|
InteractionResult interactionResult = blockState.useItemOn(player.getItemInHand(hand), level, player, hand, hitResult);
|
|
if (interactionResult.consumesAction()) {
|
|
CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack);
|
|
@@ -549,4 +_,18 @@
|
|
public void setLevel(ServerLevel serverLevel) {
|
|
this.level = serverLevel;
|
|
}
|
|
+
|
|
+ // Purpur start - Shift right click to use exp for mending
|
|
+ public boolean shiftClickMended(ItemStack itemstack) {
|
|
+ if (this.player.level().purpurConfig.shiftRightClickRepairsMendingPoints > 0 && this.player.isShiftKeyDown() && this.player.getBukkitEntity().hasPermission("purpur.mending_shift_click")) {
|
|
+ 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 - Shift right click to use exp for mending
|
|
}
|