Skip to content

Zeus-32/Ore-Alloy

Repository files navigation

Ore & Alloy

NeoForge License Website

Ore & Alloy is a unification framework for modern tech modpacks.

Its core idea is simple: one material language for the entire pack.
If ten mods add ten incompatible versions of the same resource, progression becomes noise. Ore & Alloy turns that noise into a single, predictable production grammar.

Why It Exists

Most large tech packs eventually hit the same structural problems:

  • Duplicated materials.
  • Recipe chains that do not agree on processing forms.
  • Machine outputs that diverge depending on the source mod.
  • Viewer clutter (JEI/EMI) that hides actual progression.

Ore & Alloy is built as an infrastructure layer to eliminate this fragmentation, ensuring that modpack design decisions matter more than workaround recipes.

GregTech Inspiration

This project is inspired by GregTech mainly in these areas:

  • Multi-ore resource model: one material can exist through multiple ore/raw source variants.
  • High crafting/processing complexity: deeper machine and crafting chains instead of one-step outputs.
  • Form-driven progression: material forms are treated as real production stages, not cosmetic duplicates.
  • Worldgen as progression axis: ore vein layout matters for planning extraction and logistics.

Ore & Alloy is not a GregTech clone. The goal is to bring this design direction to NeoForge packs with practical compatibility and maintainable tooling.

O&A custom vein worldgen is optional and can be toggled in config (including KubeJS startup config), so packs can switch between custom and default generation.

Conceptual Model

Ore & Alloy treats materials as systems, not isolated items.

Each material exposes a controlled set of forms (ore variants, raw/crushed, dust chains, ingot lines, mechanical components, and fluids). Recipes are unified strictly toward canonical outputs.
As a result, automation planning remains coherent whether the processing block comes from Vanilla, Create, or any other tech mod.

Core Features

  • Runtime Unification: Forcing recipes, inputs, and outputs toward canonical O&A materials.
  • Data-Driven Registration: Easy material and form registration.
  • Extended Form Coverage: Comprehensive handling of items, components, ore variants, and molten forms.
  • Custom Worldgen: Optional vein generation with JEI integration.
  • Viewer Cleanup: Strategic JEI/EMI duplicate-hiding while preserving usable recipes.
  • Vanilla Hooks: Compatibility bridges for hardcoded edge-cases (brewing, trades, alias compatibility).
  • Extensive Configuration: Adjustable via in-game menus or KubeJS startup scripts.
  • Datagen Pipeline: Automated synchronization of assets and generated data.

Mod Integrations

The following integrations are actively implemented as runtime features:

  • JEI (Optional Client): Item hiding, alias search terms, and a custom vein info category.
  • EMI (Optional Client): Item hiding and alias search terms.
  • KubeJS (Optional): Startup bindings for config, material, and form access.
  • Vanilla Minecraft: Behavior unification hooks (interactions, brewing, trades).
  • Create: Recipe unification that rewrites compatible outputs (e.g., create:iron_sheet defaults to the canonical O&A iron plate).

Other mod-specific recipe integrations will be added progressively and documented here.

Texture Preview

Ore Hosts & Overlays

Stone Host Deepslate Host Bauxite Overlay
Stone Host Deepslate Host Bauxite Layer
Standard overworld generation. Deepslate ore variants. Overlay for composing variants.

Processed Forms

Iron Ingot Iron Plate Copper Dust
Iron Ingot Iron Plate Copper Dust
Canonical base metal form. Processed mechanical form. Pulverized processing stage.

Configuration

In-game

Settings are readily available through the native NeoForge mod configuration screen.

Config Keys (for pack maintainers)

startup:

  • worldgen.custom_vein_worldgen_enabled

common:

  • tooltips.periodic_enabled
  • unification.audit_report_enabled
  • unification.strict_mode_enabled
  • unification.strict_mode_fail_fast_enabled
  • unification.snapshot_export_enabled

strict_mode_enabled enables stability checks for canonical unification targets.
strict_mode_fail_fast_enabled escalates strict-mode issues to startup/reload failure.
snapshot_export_enabled writes a structured runtime unification report to:

  • <game_dir>/ore_and_alloy/unification_snapshot.json

KubeJS (Startup)

Exposed startup bindings allow for deep script control:

  • OreAndAlloy
  • OAMetals
  • OAForms
  • OAGems

Basic example:

// kubejs/startup_scripts/ore_and_alloy.js
OreAndAlloy.setCustomVeinWorldgenEnabled(true);
OreAndAlloy.setPeriodicTooltipsEnabled(true);

Unification control example:

// Debug / QA toggles
OreAndAlloy.setUnificationAuditEnabled(true);
OreAndAlloy.setUnificationStrictModeEnabled(true);
OreAndAlloy.setUnificationStrictModeFailFastEnabled(false);
OreAndAlloy.setUnificationSnapshotExportEnabled(true);

// Reset runtime priority overrides first
OreAndAlloy.resetUnificationPriorityOverrides();

// Global namespace order (first wins)
OreAndAlloy.setUnificationGlobalNamespacePriority(
  "ore_and_alloy",
  "minecraft",
  "create"
);

// Explicit mod priority override (lower = higher priority)
OreAndAlloy.setUnificationModPriority("ore_and_alloy", 0);
OreAndAlloy.setUnificationModPriority("minecraft", 10);

// Per-material preferred namespace
OreAndAlloy.setUnificationMaterialPreferredNamespace("steel", "ore_and_alloy");

// Per material+form explicit canonical item
OreAndAlloy.setUnificationCanonicalItem("plate", "iron", "ore_and_alloy:iron_plate");

// Optional introspection
console.info("O&A priority snapshot:", OreAndAlloy.unificationPrioritySnapshot());

Practical Workflow

  1. Start with strict mode OFF, audit ON, snapshot export ON.
  2. Validate alias map output (unification_snapshot.json) and logs.
  3. Add KubeJS priority overrides only where needed.
  4. Enable strict mode.
  5. Enable fail-fast once the pack is stable.

For Modpack Developers

Ore & Alloy should be treated as a pack infrastructure layer.
If you maintain custom material definitions/assets, regenerate material data with:

./gradlew generateMaterialData

Run regression checks after unification-sensitive changes:

./gradlew test

Installation

  1. Install NeoForge 1.21.1.
  2. Download the latest Ore & Alloy release.
  3. Place the .jar into your mods folder.

Licensing Note

Code and assets use a split licensing model (MIT for code, ARR for art/assets).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages