From 022b2144d303ac53e1e58b882811fe0edb980608 Mon Sep 17 00:00:00 2001 From: Ap_Tx <3045929398@qq.com> Date: Mon, 5 Oct 2026 19:11:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=BD=BD=E5=85=B7?= =?UTF-8?q?=E5=8F=AF=E5=A0=86=E5=8F=A0=E8=A7=84=E5=88=99=EF=BC=88=E7=9F=BF?= =?UTF-8?q?=E8=BD=A6/=E8=88=B9=E5=A0=86=E5=8F=A0=E8=87=B364=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mixin ItemInstance.getMaxStackSize,规则开启时矿车/船返回64,实现自动堆叠。新增item mixin分组。 --- .../carpetslsaddition/SLSCarpetSettings.java | 3 ++ .../mixin/item/ItemInstanceMixin.java | 40 +++++++++++++++++++ .../assets/slsaddition/lang/en_us.json | 4 +- .../assets/slsaddition/lang/zh_cn.json | 4 +- src/main/resources/slsaddition.mixins.json | 3 +- 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/github/zly2006/carpetslsaddition/mixin/item/ItemInstanceMixin.java diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java b/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java index 6fa7e39..b530ef9 100644 --- a/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java +++ b/src/main/java/com/github/zly2006/carpetslsaddition/SLSCarpetSettings.java @@ -77,4 +77,7 @@ public class SLSCarpetSettings { @Rule(categories = {SLSA, RuleCategory.FEATURE}) public static boolean unbreakableDecoratedPot = false; + + @Rule(categories = {SLSA, RuleCategory.FEATURE}) + public static boolean stackableVehicles = false; } diff --git a/src/main/java/com/github/zly2006/carpetslsaddition/mixin/item/ItemInstanceMixin.java b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/item/ItemInstanceMixin.java new file mode 100644 index 0000000..5104a3e --- /dev/null +++ b/src/main/java/com/github/zly2006/carpetslsaddition/mixin/item/ItemInstanceMixin.java @@ -0,0 +1,40 @@ +package com.github.zly2006.carpetslsaddition.mixin.item; + +import com.github.zly2006.carpetslsaddition.SLSCarpetSettings; +import net.minecraft.world.item.BoatItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemInstance; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.MinecartItem; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** + * 载具堆叠:让矿车/船的物品可以堆叠到 64。 + * + *
26.1.2 的堆叠上限来自 {@code ItemInstance.getMaxStackSize()} 的 default 实现: + * 读取 {@code DataComponents.MAX_STACK_SIZE} 组件,默认 1(故矿车/船默认不堆叠)。 + * + *
本 mixin 注入该 default 方法:规则 {@code stackableVehicles} 开启时,
+ * 若物品是矿车({@link MinecartItem})或船({@link BoatItem}),返回 64。
+ * 由于堆叠上限变大,同类载具在拾取/整理时会自动合并,实现"自动堆叠"。
+ */
+@Mixin(ItemInstance.class)
+public interface ItemInstanceMixin {
+
+ @Inject(method = "getMaxStackSize", at = @At("HEAD"), cancellable = true)
+ private void stackableVehicles(CallbackInfoReturnable