Skip to content

About

No description, website, or topics provided.

Resources

Stars

9 stars

Watchers

0 watching

Forks

Repository files navigation

Functional Storage Classic

Drawers, done properly, on 1.7.10

High capacity drawer storage for items, fluids, and Thaumcraft essentia.
A backport of Functional Storage to Minecraft 1.7.10, with More Functional Storage merged in and first class Applied Energistics 2 and Waila integration.

License Minecraft 1.7.10 Forge GTNHLib


📑 Table of Contents


✨ Overview

Functional Storage Classic brings the modern drawer experience to 1.7.10 without the modern engine. Storage is built on a small generic core: one indexed, long-capacity handler powers items, fluids, and essentia, so every drawer type shares the same routing, upgrade, and synchronization behaviour.

  • Long capacity storage — a single slot holds far more than an int, with the amount rendered on the drawer face.
  • Multiplicative storage upgrades — registered capacity tiers stack multiplicatively instead of overwriting each other.
  • Contents survive breakage — stored contents, filters, lock state, and installed upgrades are written into the dropped block's NBT.
  • 1.7.10 automation interfaces — item drawers expose vanilla IInventory; fluid drawers expose Forge IFluidHandler; essentia drawers use Thaumcraft's aspect and tube interfaces.
  • Controller networks — a storage controller aggregates every linked drawer into one logical inventory for automation.

🧱 Storage Blocks

Drawers

Family Variants Notes
Wood Drawers 6 woods × 1/2/4 slots Oak, spruce, birch, jungle, acacia, dark oak
Framed Drawers 1/2/4 slots Exterior, front, and divider take any block's texture
Fluid Drawers 1/2/4 tanks One long-capacity tank per slot
Essentia Drawers 1/2/4 slots Thaumcraft essentia; registered when Thaumcraft is present
Compacting Drawers 3 tiers Compacts 9→1 and 4→1 chains automatically
Simple Compacting Drawers 2 tiers Lightweight compacting
Ender Drawers 1 slot Frequency based shared storage, per save
Armory Cabinet 1 block Bulk storage for gear and tools

Every drawer is a full cube that can be mounted on a wall, a floor, or a ceiling. The front faces the player. Looking steeply down or up selects floor or ceiling mounting, following FunctionalStorageLegacy. Models, contents and clickable regions rotate together.

Controllers

  • Storage Controller — indexes every linked drawer and exposes their combined contents.
  • Controller Extension — extends a controller's reach without consuming another controller.

Drawers are linked with the Linking Tool: right-click a controller to select it, then right-click drawers to bind them.

Framed Drawers

Craft an unstyled framed drawer from three oak planks and a matching oak drawer in a 2×2 grid. Apply materials with the Legacy styling recipe: exterior and front blocks on the top row, the framed drawer and an optional divider block below. This preserves the drawer's contents and upgrades. Each face uses the corresponding material texture, including log ends.


⬆️ Upgrade System

Each drawer has four storage upgrade slots and three utility upgrade slots.

Storage Upgrades

Upgrade Default Capacity Multiplier
Iron Downgrade limits item slots to 64 items
Copper Upgrade ×8
Gold Upgrade ×16
Diamond Upgrade ×24
Netherite Upgrade ×32
Turtle Scute Upgrade ×48
Nether Star Upgrade ×72
Heavy Core Upgrade ×128
Max Storage Upgrade removes the capacity ceiling
Creative Vending Upgrade unlimited extraction of the configured resource; creative only

All capacity upgrade multipliers come from the storage configuration. Fluid and essentia capacity modifiers apply their configured divisors. Reopen the world after changing storage settings.

Turtle scute and heavy core upgrades are always registered but have no crafting recipes. The blank upgrade is the central ingredient for T1 generators and non-tier utility upgrades; higher generator tiers use the preceding tier instead.

Right-clicking installs an upgrade into an available slot. Use the drawer interface to remove an installed upgrade or exchange tiers.

Functional Upgrades

Upgrade Effect
Void Upgrade destroys overflow that no longer fits
Redstone Upgrade comparator-style redstone output based on fill level
Pulling Upgrade pulls items, fluids, or essentia from the chosen side
Pushing Upgrade pushes items, fluids, or essentia to the chosen side
Collector Upgrade collects nearby dropped items and fluid sources
Wireless Pulling / Pushing transfer to and from a recorded coordinate

Generation Upgrades

Generators have five tiers, with output amounts and operation intervals supplied by the upgrades configuration. Generation kinds and capacity tiers use instance-based registration.

Upgrade Effect
Water Generation fills a fluid drawer with water
Stone Generation produces cobblestone in a drawer
Universal Item Generation produces the configured item, or the upgrade's own filter
Dripping Upgrade generates lava in a fluid drawer
Resource Generators produce obsidian, dirt, sand, gravel, netherrack, end stone, soul sand, or clay
Et Futurum Requiem Generators register only when the corresponding block exists
Milk / Honey Generators register only when the corresponding fluid exists in Forge's fluid registry

The dripping recipe uses netherrack in place of pointed dripstone, which does not exist in 1.7.10. Et Futurum Requiem resources include cobbled deepslate, andesite, diorite, granite, blackstone, tuff, basalt, dripstone, prismarine, and sculk. Generator registry names and textures use _1 through _5. Forge missing mappings migrate the former _t1 through _t4 names and unnumbered dripping and obsidian upgrades. The removed ore dictionary upgrade maps to the blank upgrade.

More Functional Storage upgrades

The following upgrades from More Functional Storage are merged into this mod:

Upgrade Effect
Breaker Upgrade breaks the block in front of the drawer and stores the drops
Placer Upgrade places blocks from the drawer into the world
Refill Upgrade refills existing stacks in the owner's hotbar, main inventory, or ender chest
Dimensional Refill Upgrade as above, across dimensions
Speed Upgrade Augment installs inside an upgrade's configuration screen to shorten its operation interval
Efficiency Upgrade Augment doubles the amount processed per operation

Right-click an installed automation upgrade in the drawer interface to configure its direction, item filters, selected slots, redstone mode, or refill destination. The filter panel has nine ghost slots: left-click copies the cursor item, right-click clears it, and scrolling selects an ore dictionary entry. Breakers require a tool and preserve its durability. Redstone modes include always active, signal required, no signal, and once per pulse. Stonecutting Upgrade is intentionally omitted because 1.7.10 has no stonecutter.


🧪 Storage Kinds

Kind Container Interface
Items Wood, compacting, ender drawers, armory cabinet Vanilla IInventory and AE2 ME inventory
Fluids Fluid drawers Forge IFluidHandler
Essentia Essentia drawers Thaumcraft IAspectContainer and IEssentiaTransport

All three kinds share one storage core. A resource kind only has to describe its identity, capacity, and persistence, and it inherits routing, overflow voiding, creative mode, lock-filter retention, and change notifications. Essentia icons are drawn with Thaumcraft's own aspect textures, so compound aspects and addon aspects render correctly without this mod shipping any Thaumcraft assets.


🔌 Mod Integration

  • Applied Energistics 2 — drawers are registered with AE2's IExternalStorageRegistry, so storage buses can address them as ME storage.
  • Waila — hover any drawer to see its contents, capacity, and installed upgrades.
  • Thaumcraft — essentia phials exchange eight units with the clicked slot; tubes use IEssentiaTransport suction and transfer, alongside IAspectContainer. Addons can register explicit container capacities through EssentiaContainerRegistry. Wired and wireless pulling and pushing upgrades use upgradePullAspect and upgradePushAspect as their per-operation limits and respect native essentia input/output ports.
  • Hoppers and pipes — drawers implement vanilla IInventory and Forge IFluidHandler directly, which is how 1.7.10 automation discovers inventories.
  • Inventory Bogo Sorter — item drawers and the armory cabinet support configured bulk, matching-item, single-item, and empty-slot transfer shortcuts. The default bindings are Space + left-click, Alt + left-click, Ctrl + left-click, and Ctrl + right-click. Bulk transfers preserve pinned player slots and keep the main inventory and hotbar separate.
  • Mouse Tweaks / NEI — slot scrolling transfers items directly between item storage and the player inventory, respecting storage capacity and normal item stack limits. Mouse Tweaks direction and search-order settings apply when it owns scrolling; NEI's direction setting applies when NEI owns it. In the armory, scrolling over slots transfers items, while scrolling over the background changes the visible rows. Extraction follows the visible filtered slots.
  • Comparators — a drawer emits a comparator signal based on how full it is.
  • The One Probe — not supported. The One Probe was never released for Minecraft 1.7.10, so Waila is used instead.

The Bogo Sorter drop-off compatibility mixin is loaded only when Inventory Bogo Sorter is installed. Other optional integrations register only when the corresponding mod is present. Inventory shortcuts use server-authoritative storage operations, so display icons cannot be moved as real items. Shortcut compatibility is verified with Inventory Bogo Sorter 1.3.50-GTNH and Mouse Tweaks 2.5.3-GTNH. Fluid containers and essentia phials use the drawer interface's container exchange interactions.


🖥️ Opening a Drawer's Interface

Sneak and right-click a drawer with an empty hand to open its interface. It shows the drawer's storage slots, its storage and utility upgrade slots, and your inventory, so upgrades can be swapped without breaking the block.

Right-click a slot with an item to insert the held stack. A second click within six ticks inserts matching items from your inventory. Left-click extracts one item, or one stack while sneaking. Buckets and registered fluid containers exchange with the clicked tank; Thaumcraft phials exchange with the clicked essentia slot.

In creative mode, a normal left-click on the front extracts contents. Sneaking or clicking another face allows the block to be removed, following Storage Drawers.

Right-clicking with an upgrade installs it in the appropriate upgrade group. Sneak with the Configuration Tool and right-click air to cycle modes, then right-click drawers to apply locking, numbers, contents, upgrades, or indicator settings. The Linking Tool supports single and area selection, adding and removing links, and copying ender frequencies. Sneak-right-click a target block with a wireless upgrade to record its position and access face.


🧩 Configuration

Configuration is provided through GTNHLib and is editable in game from the mod list.

Categories:

  • general — content retention, controller range and link limit, armory size, compacting rules, ore dictionary filters
  • storage — upgrade multipliers, per-kind capacity divisors, base slot capacities
  • upgrades — transfer amounts, tick intervals, and T1–T5 generator outputs
  • compatibility — Waila, Applied Energistics 2, and Thaumcraft toggles
  • client — drawer render distance and default display options; threeDimensionalBlockDisplay defaults to true and can be disabled to show flat block icons on drawer faces

🌍 Localization

The mod ships with:

  • en_US — English
  • zh_CN — Simplified Chinese

Both files cover block names, item names, tooltips, upgrade descriptions, Waila text, and every configuration entry. More Functional Storage's names and configuration tooltips are translated into Simplified Chinese. Both language files use matching categories and key order. Stored contents, filters, and installed upgrades have item previews in tooltips through GTNHLib's tooltip API.


📥 Installation

  1. Install Minecraft 1.7.10 with Forge 10.13.4.1614.
  2. Install GTNHLib 0.11.48 or newer — it is a hard requirement.
  3. Drop the Functional Storage Classic jar into your mods folder.
  4. Optional: install Applied Energistics 2, Waila, and Thaumcraft for their integrations.

🧱 Dependency Requirements

Runtime

  • Minecraft: 1.7.10
  • Forge: 10.13.4.1614
  • GTNHLib: 0.11.48 or newer, required

Optional integrations activate automatically when the relevant mod is present.

Development

  • Java: JDK 25 (the build downgrades bytecode to Java 8)
  • Gradle wrapper: use the included gradlew / gradlew.bat

🛠️ Building

# Windows
gradlew.bat clean build -x test

# Linux / macOS
./gradlew clean build -x test

📜 Credits & Attributions

This project is maintained by ABKQPO at the FunctionalStorageClassic repository. It is a port and adaptation. The original designs, behaviour, assets, and implementation references come from the following projects.

Project Author Repository License / attribution What was used
Functional Storage Buuz135 and contributors Buuz135/FunctionalStorage MIT Original drawer design, upgrade behaviour, and textures
Functional Storage Legacy xinyihl xinyihl/FunctionalStorageLegacy MIT Historical 1.12.2 port reference and inherited assets
More Functional Storage Matyrobbrt Matyrobbrt/MoreFunctionalStorage MIT Breaker, placer, refill, and dimensional refill upgrades
More Functional Storage Upgrade WitherRedstone / ChinaEX123 WitherRedstone/More-Functional-Storage-Upgrade MIT code; CC BY 4.0 assets Resource generators, capacity upgrades, and adapted textures
FunctionalChemical GTNewHorizons and contributors GTNewHorizons/FunctionalChemical Repository license External storage integration pattern reference

Menus and previews

Drawer menus use the drawer front texture and vanilla inventory slot textures. Upgrade headings appear only when the corresponding slots exist. Upgrade menus provide direct drawer-slot selection, nine ghost filters, direction controls, tool/speed attachments, and return navigation. Armory cabinets retain a vanilla search field and use NEI's search syntax and registered search providers when NEI is installed, including NeverEnoughCharacters-Rework's pinyin support. Without NEI, they match localized tooltip text and item IDs. Priority is synchronized by the server and orders controller routing. Saved-content tooltips use compact item previews with overlaid amounts.

In drawer menus, left-click deposits the entire cursor stack or takes one normal stack. Right-click deposits one item or takes half of a normal stack, rounded up. Shift-click first merges into matching storage slots. Fluid containers and Thaumcraft phials can deposit and extract through the corresponding menu slots. Amounts use GTNHLib formatting, and fluid units follow its global L/mB setting (1,000 units per bucket). Linking and configuration feedback appears above the hotbar. Block contents default to a uniformly scaled 3D display; the client configuration also provides a flat display.

The seven framed compacting, fluid and controller variants use the modern upstream model parts and retain their chosen materials across placement, rotation and saves. Ender frequencies share lock and void policies; storage upgrades cannot be newly installed in Ender drawers.

Recipe adaptations

Crafting patterns and output counts follow modern Functional Storage and More Functional Storage. Converting an ordinary drawer to a framed drawer retains its stored contents and upgrades; recipes that consume a drawer reject filled or configured drawers. Netherite recipes use nether stars, dripping uses netherrack, and this mod's framed recipes use iron ingots when no iron nuggets are available. Copper uses the modpack's ore dictionary materials. Modern wood species absent from 1.7.10 are omitted.

Notes on Thaumcraft

This mod compiles against the Thaumcraft 4 API but does not redistribute any Thaumcraft code or assets. Essentia storage is implemented against the public thaumcraft.api.aspects interfaces only. Thaumcraft itself must be obtained separately by the user, and all rights to it remain with its author.

All integrations are optional. Without Thaumcraft, essentia drawers are not registered; their missing block and item mappings are ignored when opening an existing world. Removing Thaumcraft therefore removes those drawers from that world. Item and fluid drawers and controllers remain available.

Notes on FunctionalChemical

The third-party storage integration pattern in this mod was informed by studying how FunctionalChemical integrates an external chemical system into Functional Storage. No FunctionalChemical code or assets are included; only the general approach of exposing a foreign storage kind through the same drawer machinery was adopted, and that approach was re-expressed for Thaumcraft essentia specifically.


Made with ❤️ for the GTNH Community. Licensed under GPLv3.

About

No description, website, or topics provided.

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages