From 7b271e5d53886d4f41aae09a57397954ecb89f98 Mon Sep 17 00:00:00 2001 From: Integer Limit <103940576+IntegerLimit@users.noreply.github.com> Date: Sun, 15 Sep 2024 11:35:46 +1000 Subject: [PATCH] Drawer Key Clearing Fix --- gradle.properties | 2 +- .../nomilabs/mixin/LabsLateMixinLoader.java | 3 +- .../mixin/storagedrawers/DrawerDataMixin.java | 29 +++++++++++++++++++ .../mixins.nomilabs.storagedrawers.json | 12 ++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/nomiceu/nomilabs/mixin/storagedrawers/DrawerDataMixin.java create mode 100644 src/main/resources/mixins.nomilabs.storagedrawers.json diff --git a/gradle.properties b/gradle.properties index 4e4025d..123267c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -220,7 +220,7 @@ org.gradle.jvmargs = -Xmx3G # Custom Dep Settings. Make sure to run Setup Workspace/Reload Gradle Project after changing. -# Whether to enable Storage Drawers and its deps in runtime. Enables Hand Framing Tool. +# Whether to enable Storage Drawers and its deps in runtime. Enables Hand Framing Tool, and Drawer Key Fix. # If this is set to false, the hand framing tool is disabled. enable_storage_drawers = false diff --git a/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java b/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java index 41e74c3..d9c81fa 100644 --- a/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java +++ b/src/main/java/com/nomiceu/nomilabs/mixin/LabsLateMixinLoader.java @@ -50,7 +50,8 @@ public class LabsLateMixinLoader implements ILateMixinLoader { new AbstractMap.SimpleImmutableEntry<>(LabsValues.BOGOSORT_MODID, true), new AbstractMap.SimpleImmutableEntry<>(LabsValues.THERMAL_FOUNDATION_MODID, true), new AbstractMap.SimpleImmutableEntry<>(LabsValues.BQU_MODID, true), - new AbstractMap.SimpleImmutableEntry<>(LabsValues.BETTER_P2P_MODID, true)) + new AbstractMap.SimpleImmutableEntry<>(LabsValues.BETTER_P2P_MODID, true), + new AbstractMap.SimpleImmutableEntry<>(LabsValues.STORAGE_DRAWERS_MODID, true)) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); @Override diff --git a/src/main/java/com/nomiceu/nomilabs/mixin/storagedrawers/DrawerDataMixin.java b/src/main/java/com/nomiceu/nomilabs/mixin/storagedrawers/DrawerDataMixin.java new file mode 100644 index 0000000..6b858bb --- /dev/null +++ b/src/main/java/com/nomiceu/nomilabs/mixin/storagedrawers/DrawerDataMixin.java @@ -0,0 +1,29 @@ +package com.nomiceu.nomilabs.mixin.storagedrawers; + +import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawerAttributes; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute; +import com.jaquadro.minecraft.storagedrawers.block.tile.tiledata.StandardDrawerGroup; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = StandardDrawerGroup.DrawerData.class, remap = false) +public abstract class DrawerDataMixin { + + @Shadow + private int count; + + @Shadow + IDrawerAttributes attrs; + + @Shadow + protected abstract void reset(boolean notify); + + @Inject(method = "syncAttributes", at = @At("HEAD")) + private void labs$updateEmptyStatus(CallbackInfo ci) { + if (count == 0 && !attrs.isItemLocked(LockAttribute.LOCK_POPULATED)) + reset(true); + } +} diff --git a/src/main/resources/mixins.nomilabs.storagedrawers.json b/src/main/resources/mixins.nomilabs.storagedrawers.json new file mode 100644 index 0000000..e9f5bf4 --- /dev/null +++ b/src/main/resources/mixins.nomilabs.storagedrawers.json @@ -0,0 +1,12 @@ +{ + "package": "com.nomiceu.nomilabs.mixin.storagedrawers", + "refmap": "mixins.nomilabs.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "DrawerDataMixin" + ], + "client": [], + "server": [] +}