Skip to content

scuba10steve/steves-simple-storage

Repository files navigation

Steve's Simple Storage (S3)

CI Game Tests Modrinth CurseForge

Steve's Simple Storage introduces a storage system that scales and evolves as players progress. Want to put 100,000 Cobblestone in 1 slot? No problem. Blocks in the mod can add a search bar, a crafting grid, additional storage, external access, security, and more. Also includes JEI integration for 1-click crafting from the system's internal inventory!

Project Status

Version 0.12.0 — approaching 1.0.0 stable release. All core features complete and stable on Minecraft 1.21.1 / NeoForge 21.1.218. See docs/port-overview.md for details.

Requirements

  • Java 21 or higher (required for NeoForge)
  • Gradle 8.x (wrapper included)

Building the Mod

  1. Clone the repository:

    git clone https://github.com/scuba10steve/steves-simple-storage.git
    cd steves-simple-storage
  2. Build the mod:

    ./gradlew :neoforge:build

    On Windows:

    gradlew.bat :neoforge:build
  3. Find the built mod: The compiled mod JAR will be located at neoforge/build/libs/s3-<version>.jar

Development

Setting up the Development Environment

  1. Import the project into your IDE (IntelliJ IDEA or Eclipse recommended)
  2. Run the client for testing:
    ./gradlew :neoforge:runClient
  3. Run the server for testing:
    ./gradlew :neoforge:runServer

Running Tests

# Run unit tests
./gradlew :core:test

# Run game tests (integration)
./gradlew :gametest:s3:runData
./gradlew :gametest:s3:runGameTestServer

# View unit test report
open core/build/reports/tests/test/index.html

See TESTING.md for full details.

Project Structure

This project uses a multi-module Gradle layout for cleaner architecture and future multi-loader readiness:

steves-simple-storage/
├── core/                  # Platform-agnostic code (vanilla MC only)
│   └── src/
│       ├── main/java/       # Blocks, block entities, menus, screens, packets, storage logic
│       ├── main/resources/  # Assets (textures, models, lang) and data (recipes, loot, tags)
│       └── test/java/       # Unit tests
├── neoforge/                # NeoForge-specific code
│   └── s3/
│       └── src/
│           ├── main/java/       # Mod entry point, registration, config, packet handlers, JEI
│           ├── main/resources/  # neoforge.mods.toml
│           └── generated/       # Datagen output
├── gametest/                # Integration tests using NeoForge gametest framework
│   └── s3/
│       └── src/main/java/   # StorageGameTests, MultiplayerStorageGameTests
├── build.gradle             # Root: shared subproject config
├── settings.gradle          # Includes core, neoforge/s3, and gametest/s3 modules
└── gradle.properties        # Mod version and dependency versions

Key Files

  • Mod entry point: neoforge/.../StevesSimpleStorage.java
  • Registration: neoforge/.../init/ (ModBlocks, ModItems, ModBlockEntities, ModMenuTypes)
  • Platform abstraction: core/.../platform/ (S3Platform, S3Config, S3NetworkHelper)
  • Blocks: core/.../block/ (most blocks) and neoforge/.../block/ (port blocks)
  • Block Entities: core/.../blockentity/ (most) and neoforge/.../blockentity/ (port BEs)
  • Storage logic: core/.../storage/ (StorageInventory, StoredItemStack)
  • Mod metadata: neoforge/src/main/resources/META-INF/neoforge.mods.toml

Configuration

Steve's Simple Storage uses TOML configuration files located at config/s3-common.toml. The configuration is organized into sections:

Storage Capacities

  • basicCapacity - Storage Box capacity (default: 10,000)
  • condensedCapacity - Condensed Storage Box capacity (default: 40,000)
  • compressedCapacity - Compressed Storage Box capacity (default: 80,000)
  • superCapacity - Super Storage Box capacity (default: 160,000)
  • ultraCapacity - Ultra Storage Box capacity (default: 640,000)
  • hyperCapacity - Hyper Storage Box capacity (default: 2,560,000)
  • ultimateCapacity - Ultimate Storage Box capacity (default: 10,240,000)

Feature Toggles

  • enableSecurity - Enable Security Box and Key item (default: true)
  • enableTerminal - Enable Access Terminal block (default: true)
  • enableDolly - Enable Dolly items for moving blocks (default: true)
  • enableSearchModes - Enable advanced search modes (default: true)
  • enableOpOverride - Allow operators to override security (default: true)

Recipe Options

  • classicRecipes - Use classic (easier) recipes (default: false)
  • toughHyper - Make Hyper Storage Box recipe more expensive (default: false)

Mod Integration

  • jeiIntegration - Enable JEI integration features (default: true)

Automation Settings

  • extractPortInterval - Ticks between Extract Port extraction attempts (default: 8, range: 1-100). Lower values = faster extraction, higher values = less server load.
  • minSyncInterval - Minimum ticks between storage inventory sync packets (default: 2, range: 0-20). Helps prevent visual flicker. Set to 0 to disable throttling.

Configuration changes require a game restart to take effect.

License

This Open Source project is licensed under the MIT License (see LICENSE).

Credits

Links

About

Steve's Simple Storage mod for Minecraft 1.21.1 (NeoForge)

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors