Skip to content

Latest commit

 

History

History
169 lines (126 loc) · 7.07 KB

File metadata and controls

169 lines (126 loc) · 7.07 KB

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!

User Documentation

New to the mod? Start here:

Find all user guides at docs/usage/.

Developer Documentation

Documentation for contributors and those building the mod. Find all dev docs at docs/dev/.

Project Status

Version 1.0.2 — stable release on Minecraft 1.21.1 / NeoForge 21.1.218.

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

  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