diff --git a/gradle.properties b/gradle.properties index ddc34ac0..4ee04584 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx1G # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html minecraft_version=1.17.1-rc1 - yarn_mappings=1.17.1-rc1+build.1 + yarn_mappings=1.17.1-rc1+build.8 loader_version=0.11.6 fabric_version=0.36.0+1.17 diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 04ce1990..f7d33c75 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -196,6 +196,7 @@ public class CarpetSettings category = {SURVIVAL, FEATURE} ) public static boolean stackableShulkerBoxes = false; + public static final int SHULKER_STACK_SIZE = 64; @Rule( desc = "Explosions won't destroy blocks", category = {CREATIVE, TNT} ) public static boolean explosionNoBlockDamage = false; diff --git a/src/main/java/carpet/mixins/Slot_stackableSBoxesMixin.java b/src/main/java/carpet/mixins/Slot_stackableSBoxesMixin.java new file mode 100644 index 00000000..80fd8b79 --- /dev/null +++ b/src/main/java/carpet/mixins/Slot_stackableSBoxesMixin.java @@ -0,0 +1,26 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.block.ShulkerBoxBlock; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.slot.Slot; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(Slot.class) +public class Slot_stackableSBoxesMixin { + @Redirect(method = "insertStack(Lnet/minecraft/item/ItemStack;I)Lnet/minecraft/item/ItemStack;", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/screen/slot/Slot;getMaxItemCount(Lnet/minecraft/item/ItemStack;)I" + )) + private int getMaxCountForSboxes(Slot slot, ItemStack stack) + { + if (CarpetSettings.stackableShulkerBoxes && stack.getItem() instanceof BlockItem && ((BlockItem)stack.getItem()).getBlock() instanceof ShulkerBoxBlock) + { + return CarpetSettings.SHULKER_STACK_SIZE; + } + return slot.getMaxItemCount(stack); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 1f9f0c2a..e448a7e0 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -136,6 +136,7 @@ "ClientConnectionMixin", "CauldronBlock_stackableSBoxesMixin", "AbstractCauldronBlock_stackableSBoxesMixin", + "Slot_stackableSBoxesMixin", "ItemEntityMixin", "TntBlockMixin", "ExplosionMixin",