Skip to content

StorageDrawers ​

23 merged pull requests.

New Features ​

  • #77 Modified isUseableByPlayer check in TileEntityController and TileEntitySlave to use same validation as TileEntityDrawers instead of returning false. - @playfuldoggo
    • Added: OpenComputers transposer support
    • Fixed: OpenComputers transposer interaction
    • Closes GTNH#9324
  • #74 Adds a DrawerOrientation helper and a rotation field (NBT key "Rot", written only when nonzero) on the drawer and controller tile entities. Slot hit detection, bounding boxes and the renderers now work from direction plus rotation; onBlockPlacedBy yaw logic is removed in favour of item-side placement. MixinPlayerControllerMP is changed for the creative interaction fix. - @ABKQPO
    • Added: Up and down drawer placement, Four-way rotation for up and down drawers
    • Fixed: Creative mode players could not take items out of drawers, Drawer orientation not showing on the client shortly after placing
  • #72 Added renderDistance config option (default 256 blocks) to ConfigManager and facing check in TileEntityDrawersRenderer to cull non-visible drawer faces. - @zach2039
    • Added: Render distance configuration option, Facing-based render culling
  • #67 Added empty slot check in MixinPlayerControllerMP to allow block breaking on empty drawers while preserving item extraction on filled slots. - @loenaaaa
    • Added: Empty drawer block breaking
    • Fixed: Inability to remove empty drawers
    • Closes GTNH#24290
  • #57 Added hold-click detection via mixin to PlayerControllerMP, new DrawerClickProperty tracking, and server packet handling in BlockClickMessage. Extraction logic modified in TileEntityDrawers to support variable-rate item removal. - @loenaaaa
    • Added: Hold-click item extraction from drawers, DrawerClickProperty state tracking, Early mixin system for PlayerControllerMP interception, BlockClickMessage packet handling
    • Fixed: Item extraction from drawers, Connection termination on drawer click, Drawer interaction availability
    • Closes GTNH#22945, GTNH#23182, GTNH#23364
  • #56 TileEntityDrawers.DrawerItemIO now overrides simulatedSinkIterator() and returns a DrawerInventoryIterator built with allowedSinkSlots and a simulated flag. The old anonymous iterator became a named inner class. - @hiroscho
    • Added: simulated sink iterator for drawers
  • #52 TileEntityDrawers.java implemented item transfer API handlers; dependencies.gradle updated to include GTNHLib 188+; gradle.properties version bumped. - @RecursivePineapple
    • Added: item transfer API integration
  • #47 BlockDrawers.java and BlockController.java extended with Backhand integration module; new BackhandIntegrationModule.java class; dependencies.gradle updated to include Backhand library. - @mM4ri
    • Added: Backhand offhand integration, automatic key application when placing drawer

Changes ​

  • #69 Moved module loader initialization from init to preinit phase in StorageDrawers main class. - @NotKaizul
    • Fixed: Non-vanilla drawer Chisel recipe availability
    • Closes GTNH#24441
  • #51 BlockDrawers.java and BlockController.java: removed right-click handling for offhand items; Backhand key insertion on placement still functional. - @mM4ri
    • Removed: right-click item insertion from offhand
    • Fixed: interaction issues with offhand tools/torches
    • Closes Backhand#157

Bug Fixes ​

  • #78 TileEntityDrawers.onBlockClicked now checks the clicked face, hit coordinates in 0-1, block reach distance, and SecurityManager.hasAccess. It also fires PlayerInteractEvent through ForgeEventFactory and honors cancellation. - @Worive
  • #76 MixinPlayerControllerMP's ModifyExpressionValue now targets both clickBlock and onPlayerDamageBlock, since a very short click can take either path. - @Algent
    • Fixed: drawer clicks sometimes not registering
    • Closes GTNH#25453
  • #73 Added drawer ItemIO reset when slot layout is rebuilt in TileEntityDrawers. - @Kogepan229
    • Fixed: AE2 Import Bus slot recognition after dolly use
    • Closes GTNH#24867
  • #71 Moved IntegrationRegistry.init from preInit to init. ChiselIntegrationModule queues pack blocks registered before it initialises and registers them in init. PackFactory calls registerPackBlock unconditionally, and isModuleLoaded throws if the registry has not initialised. - @Alexdoru
  • #65 Added ItemStackConversion, which saves drawer contents with ItemStack.writeToNBT under an "ItemStack" tag so Postea transforms apply. It falls back to reading the legacy Item/Meta/Tags format. DrawerData, TileEntityDrawersComp and ItemDrawers now use it. - @Alexdoru
    • Fixed: drawer contents not converted by Postea transforms
    • Closes GTNH#23867
  • #63 PackFactory.getConfigName built the config key with "Drawer" instead of "Drawers", so the lookup returned null and the overlay x/y positions stayed unset for modded drawers. - @purebluez
    • Fixed: missing fill level overlay on non-vanilla drawers
    • Closes GTNH#23667
  • #62 Reworked IntegrationModule and IntegrationRegistry so modules are loaded through the registry and checked with isModuleLoaded(). NotEnoughItems no longer calls Class.forName on GuiScreen on the server. Callers in BlockDrawers, ModRecipes, PackFactory and GuiDrawers now use the registry instead of each module's isEnabled(). - @Alexdoru
    • Fixed: server error loading client class GuiScreen from NEI integration
  • #59 In TileEntityDrawers.handleItemTransfer the addItemStackToInventory condition was inverted to a negation. The item is now dropped only when it cannot be added, and the redundant markBlockForUpdate call was removed. - @loenaaaa
    • Fixed: drawer voiding extracted items when the player's inventory is full
    • Closes GTNH#23507
  • #58 DrawersRenderer sets UV rotation for YNEG from ROTATION_BY_FACE_FACE[YNEG][side] and fixes the YPOS index. RenderHelperLL.setFaceYNegUV swaps the U coordinates, and ROTATION_BY_FACE_FACE gets new values for the first two rows. - @leagris
    • Fixed: drawer bottom face ignoring orientation, wrong UV mapping on the drawer bottom face
  • #55 In TileEntityDrawers.insert, when isVoid() is true the stack is stored or added to the count up to the capacity and the method returns 0, so the overflow is consumed. - @ModularityEnjoyer
    • Fixed: Void Upgrade not voiding items from GregTech Item Pipes
    • Closes GTNH#22621
  • #53 Added IDrawer.isVendingUnlimited (default false), implemented in DrawerData via the storage provider. TileEntityDrawers.insert returns 0 for a stack equal to the stored prototype when the drawer is vending-unlimited. - @RecursivePineapple
    • Fixed: conveyors dropping items from creative drawers

Performance ​

  • #68 UniqueMetaIdentifier constructors call intern() on modId. UniqueMetaRegistry's map field is now final and uses the diamond operator. - @Alexdoru

Chores ​

  • #66 Removed duplicate recipe entries in GTNH ModRecipes for drawer variants. - @TotallyNotOndre
    • Removed: Duplicate assembler recipes

Contributors ​

Everyone who authored, reviewed or co-authored a change on this page, with how many of them:

@Alexdoru (5), @Dream-Master (4), @RecursivePineapple (4), @boubou19 (3), @danyadev (3), @loenaaaa (3), @Algent (2), @DarkShadow44 (2), @hiroscho (2), @mM4ri (2), @wlhlm (2), @ABKQPO (1), @ah-OOG-ah (1), @AnsonYeung (1), @chrombread (1), @FourIsTheNumber (1), @Justxs (1), @Kogepan229 (1), @leagris (1), @Luca-Guettinger (1), @ModularityEnjoyer (1), @Nana-Sakura (1), @Nikolay-Sitnikov (1), @NotKaizul (1), @playfuldoggo (1), @purebluez (1), @seventh-june (1), @sisyphussy (1), @tiffit (1), @TotallyNotOndre (1), @UltraProdigy (1), @Worive (1), @zach2039 (1)