From 79fc1e077190b6b306481999183a8cca6fca1f2c Mon Sep 17 00:00:00 2001 From: Caedis Date: Fri, 17 Jan 2025 15:00:58 +0000 Subject: [PATCH] fix 1x2 and 2x2 storage drawers (#51) Co-authored-by: Abdulaziz <127992888+0hwx@users.noreply.github.com> --- dependencies.gradle | 5 ++- .../common/dropoff/DropOffHandler.java | 24 ++++++++++++ .../bogosorter/compat/loader/Mods.java | 38 +++++++++---------- 3 files changed, 46 insertions(+), 21 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 50dffa6..1da637d 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -62,8 +62,9 @@ dependencies { compileOnly("com.github.GTNewHorizons:NotEnoughItems:2.7.22-GTNH:dev") compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.51.79:dev") compileOnly("com.github.GTNewHorizons:Botania:1.12.5-GTNH:dev") - - + devOnlyNonPublishable("com.github.GTNewHorizons:StorageDrawers:2.1.0-GTNH:dev") + + runtimeOnlyNonPublishable("com.github.GTNewHorizons:waila:1.8.2:dev") compileOnly rfg.deobf('curse.maven:projecte-226410:2340786') compileOnly rfg.deobf('curse.maven:rftools-224641:2287287') diff --git a/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffHandler.java b/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffHandler.java index 96117ee..16ab3a3 100644 --- a/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffHandler.java +++ b/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffHandler.java @@ -4,6 +4,9 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; +import com.cleanroommc.bogosorter.compat.loader.Mods; +import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawers; + public class DropOffHandler { private final InventoryManager inventoryManager; @@ -107,6 +110,27 @@ private void movePlayerStack(int playerStackIndex, IInventory toInventory) { if (inventoryManager.isStacksEqual(toCurrentStack, playerStacks[playerStackIndex])) { hasSameStack = true; int toCurrentStackMaxSize = inventoryManager.getMaxAllowedStackSize(toInventory, toCurrentStack); + if (Mods.StorageDrawers.isLoaded() && toInventory instanceof TileEntityDrawers drawer) { + int drawerSlot = drawer.getDrawerInventory() + .getDrawerSlot(i); + // side is ignored + if (drawer.canInsertItem(drawerSlot, playerStacks[playerStackIndex], 0)) { + // handles reducing the player stack size + int countAdded = drawer.putItemsIntoSlot( + drawerSlot, + playerStacks[playerStackIndex], + playerStacks[playerStackIndex].stackSize); + + if (countAdded == 0) { + continue; + } + + if (playerStacks[playerStackIndex].stackSize <= 0) { + playerStacks[playerStackIndex] = null; + } + } + return; + } if (toCurrentStack.stackSize + playerStacks[playerStackIndex].stackSize <= toCurrentStackMaxSize) { toCurrentStack.stackSize += playerStacks[playerStackIndex].stackSize; diff --git a/src/main/java/com/cleanroommc/bogosorter/compat/loader/Mods.java b/src/main/java/com/cleanroommc/bogosorter/compat/loader/Mods.java index 2d53a98..87cd87f 100644 --- a/src/main/java/com/cleanroommc/bogosorter/compat/loader/Mods.java +++ b/src/main/java/com/cleanroommc/bogosorter/compat/loader/Mods.java @@ -6,33 +6,34 @@ public enum Mods { - EnderStorage("EnderStorage"), - DraconicEvolution("DraconicEvolution"), + AdventureBackpack2("adventurebackpack"), + Ae2("appliedenergistics2"), AvaritiaAddons("avaritiaddons"), + Backpack("Backpack"), + Bibliocraft("BiblioCraft"), CookingForBlockheads("cookingforblockheads"), - Ae2("appliedenergistics2"), + DraconicEvolution("DraconicEvolution"), + EnderStorage("EnderStorage"), + Energycontrol("energycontrol"), + Etfuturum("etfuturum"), + ExtraUtilities("ExtraUtilities"), Forestry("Forestry"), GT5u(() -> Loader.isModLoaded("gregtech") && !Loader.isModLoaded("gregapi")), GT6(() -> Loader.isModLoaded("gregtech") && Loader.isModLoaded("gregapi")), - Backpack("Backpack"), GalacticraftCore("galacticraftcore"), - AdventureBackpack2("adventurebackpack"), - ProjectE("ProjectE"), - Tconstruct("TConstruct"), - ServerUtilities("serverutilities"), - Nutrition("nutrition"), - Bibliocraft("BiblioCraft"), + HBM("hbm"), + IC2("IC2"), + ImmersiveEngineering("ImmersiveEngineering"), + IronChest("IronChest"), Mekanism("Mekanism"), + Nutrition("nutrition"), + ProjectE("ProjectE"), ProjectRed("ProjRed|Expansion"), - ImmersiveEngineering("ImmersiveEngineering"), - Thebetweenlands("thebetweenlands"), + ServerUtilities("serverutilities"), + StorageDrawers("StorageDrawers"), + Tconstruct("TConstruct"), Terrafirmacraft("terrafirmacraft"), - Energycontrol("energycontrol"), - Etfuturum("etfuturum"), - IronChest("IronChest"), - IC2("IC2"), - ExtraUtilities("ExtraUtilities"), - HBM("hbm"); + Thebetweenlands("thebetweenlands"),; public final String modid; private final Supplier supplier; @@ -46,7 +47,6 @@ public enum Mods { Mods(Supplier supplier) { this.supplier = supplier; this.modid = null; - } public boolean isLoaded() {