9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-19 14:59:32 +00:00

Configurable item damage check and good shear behavior (#559)

This commit is contained in:
violetc
2025-07-01 00:20:49 +08:00
parent e1c21d3f28
commit 550dba491b
3 changed files with 33 additions and 6 deletions

View File

@@ -5,15 +5,15 @@ Subject: [PATCH] Make shears in dispenser can unlimited use
diff --git a/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
index c1bd6d91cf9828ccc7275efe0f5c959c0f457c13..34eef95855032655a97f246cc56eb3006eebae19 100644
index c1bd6d91cf9828ccc7275efe0f5c959c0f457c13..310e4bd5bd0c447adc70cff6d414f88be1966d04 100644
--- a/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
+++ b/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
@@ -44,7 +44,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior {
if (!serverLevel.isClientSide()) {
@@ -45,7 +45,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior {
BlockPos blockPos = blockSource.pos().relative(blockSource.state().getValue(DispenserBlock.FACING));
this.setSuccess(tryShearBeehive(serverLevel, blockPos) || tryShearLivingEntity(serverLevel, blockPos, item, bukkitBlock, craftItem)); // CraftBukkit
- if (this.isSuccess()) {
+ if (this.isSuccess() && !org.leavesmc.leaves.LeavesConfig.modify.oldMC.shearsInDispenserCanZeroAmount) { // Leaves - Make shears in dispenser can unlimited use
item.hurtAndBreak(1, serverLevel, null, item1 -> {});
if (this.isSuccess()) {
- item.hurtAndBreak(1, serverLevel, null, item1 -> {});
+ item.hurtAndBreak(1, serverLevel, null, item1 -> { if (org.leavesmc.leaves.LeavesConfig.modify.oldMC.shearsInDispenserCanZeroAmount) item.grow(1); }); // Leaves - Make shears in dispenser can unlimited use
}
}

View File

@@ -0,0 +1,24 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Tue, 1 Jul 2025 00:19:23 +0800
Subject: [PATCH] Configurable item damage check
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index 649d17dcd7856e3b1344192d8ea4b2e9f73fc03b..cd3fbccad765a37f034977e44896fbd73e308b91 100644
--- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java
@@ -621,11 +621,11 @@ public final class ItemStack implements DataComponentHolder {
}
public int getDamageValue() {
- return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
+ return org.leavesmc.leaves.LeavesConfig.modify.oldMC.disableItemDamageCheck ? this.getOrDefault(DataComponents.DAMAGE, 0) : Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); // Leaves - disable check
}
public void setDamageValue(int damage) {
- this.set(DataComponents.DAMAGE, Mth.clamp(damage, 0, this.getMaxDamage()));
+ this.set(DataComponents.DAMAGE, org.leavesmc.leaves.LeavesConfig.modify.oldMC.disableItemDamageCheck ? damage : Mth.clamp(damage, 0, this.getMaxDamage())); // Leaves - disable check
}
public int getMaxDamage() {

View File

@@ -348,6 +348,9 @@ public final class LeavesConfig {
}
}
}
@GlobalConfig("disable-item-damage-check")
public boolean disableItemDamageCheck = false;
}
public ElytraAeronauticsConfig elytraAeronautics = new ElytraAeronauticsConfig();