Skip to content

Port OreSpawn 4.0.16 to Forge 1.11.2 - #297

Merged
SkyBlade1978 merged 258 commits into
MinecraftModDevelopmentMods:master-1.11.2from
SkyBlade1978:master-1.11.2
Sep 8, 2026
Merged

Port OreSpawn 4.0.16 to Forge 1.11.2#297
SkyBlade1978 merged 258 commits into
MinecraftModDevelopmentMods:master-1.11.2from
SkyBlade1978:master-1.11.2

Conversation

@SkyBlade1978

Copy link
Copy Markdown
Contributor

Summary

Ports the complete OreSpawn OS4 4.0.16 campaign to Minecraft 1.11.2 / Forge 13.20.1.2588 as 4.0.16.111021.

The dormant master-1.11.2 history is preserved through a history-only ours merge, but none of its obsolete OS3 tree is imported. This allows the new OS4 product line to be merged normally without rewriting the existing branch. The separate master-1.11 branch is unchanged.

Functional changes

  • Retains the 4.0.8 editor persistence repair, with all six Ore/Fluid field factories applying their existing 32/1024-character limits before restoring text. All eight long fields survive a real open-and-Done round trip.
  • Retains the early Forge 13 IWorldGenerator sequence while rejecting declared air, liquids, bedrock and block-entity hosts and preserving authored/third-party blocks.
  • Evaluates Stable Layers rock bounds against actual world Y while retaining shifted formation Y for layer identity and deterministic fallback selection.
  • Adds immutable Ore-dimension biome include/exclude IDs and dictionary filters through the existing provider fields.
  • Accepts canonical namespaced and legacy unnamespaced geome IDs.
  • Converts exposed SNOW_LAYER at top + 1 while preserving buried/authored Snow and Ice.
  • Records the dynamic-registry, sampler-height, 3D-biome-attribution and GameTest lifecycle repairs as target-inapplicable for Forge 1.11's static two-dimensional biome system and absent GameTest harness.

Forge 1.11.2 adaptations

  • Targets Forge 13.20.1.2588, MCP stable_32, pack format 2 and Java 8 bytecode.
  • Keeps ForgeGradle 7.0.34, Gradle 9.6.1, Renamer 1.1.5, access-transformers 2.0.0 and Foojay 1.0.0.
  • Runs Gradle on Java 17, MinecraftMavenizer on Java 25 and compilation/fixtures on exact Temurin 8.0.502+7.
  • Preserves Forge 13 registry events, metadata block states, legacy .name translations, native UI/navigation and the early world-generation coordinator.
  • Packages and verifies WorldProvider.field_76578_c and ChunkProviderOverworld.field_186001_t with FMLAT: accesstransformer.cfg.
  • Uses the target-native bare final nogui server argument (java -jar forge.jar nogui) for generated and automated server launches.
  • Adds deterministic version-only artifacts, checksums, guarded Maven preparation, release audits, pinned CI/wrapper/CodeQL/tag workflows and all 21 documentation exports.

Migration and compatibility

  • Adds the native Mineralogy 1.11.2 3.3.0 lineage from historical source commit 727fec4c, including its exact defaults and rock ordering.
  • Rebuilds and checksum-seals the Mineralogy 1.11.2 oracle and OreSpawn 1.11.2 3.2.2 compatibility fixture, loaded only through isolated test classloaders.
  • Qualifies the historical Base Metals/MMDLib provider path with 11 rules on fresh generation and exact-save reload.
  • Preserves the inherited Mineralogy 1.10/1.12 recognition and OS1/OS3 provider/ABI behavior.
  • Preserves API major 1, schemas 4/6/5, registry IDs, provider meanings, profile filenames, migrations, existing chunks and compatibility range [4.0.6,5.0.0).

Validation

Exact candidate 46aec496fcfda46dbe00c4827f32d8da7651606c received manual acceptance.

  • 155 tests across 39 suites; no failures, errors or skips.
  • 15 JSON/mcmeta/mcmod resources parsed; 16 locales with 357 matching keys; 21-document byte parity.
  • Full offline clean/check/build/Javadocs/artifact/checksum lifecycle passed in both the main checkout and a clean detached exact-commit worktree.
  • Eclipse genEclipseRuns and production-classpath isolation passed in both checkouts.
  • Empty-cache Forge bootstrap completed with official MinecraftMavenizer 0.5.19 and zero source patches; same-cache offline replay passed.
  • Exact reobfuscated Forge server fresh/reload and launcher-like packaged client passed, including world creation/render/reopen, editor navigation and all eight long fields.
  • Surface, natural-host, Stable Layers, Snow/Ice, fluid, Nether-roof, migration, report and reload gates passed.
  • Preferred-seed three-run 81-chunk medians: Sky 3.418 ms/chunk, Cyano 3.559, vanilla 3.477; normalized overhead remained below the 10% investigation threshold.
  • Complete log/crash/mod/classpath scans and artifact leakage audits passed.
  • Main jar SHA-256: A0D2A46638A0C844AB61DF277A22A2B853FE4EACF197ECB6799E3FA4C3E07770.

This PR does not tag, publish, release or directly update an MMD branch outside the normal PR merge.

jriwanek and others added 30 commits February 13, 2018 23:48
…ack-around-mineralogy

add a hack to the replacements registry to account for Mineralogy
…ack-around-mineralogy

use Material.isLiquid() instead of checking specifically for LAVA and…
…the load, then

we can run into a situation where we have inconsistent state and the set of
SpawnBuilder objects can contain a null value for the feature generator. This adds
a simple sanity check for such.
…hings to

use a set of related builders that return properly created data ready for use
in creating the final spawn entry.

At the moment the work only covers the SpawnBuilder, DimensionBuilder and
BiomeBuilder classes, along with their resulting objects. Interfaces are
provided in the "API" package, for use by others, as needed.
1) Interfaces renamed to follow standards for class-name
2) Had some stuff in the wrong package - that is corrected
3) Implement the DimensionBuilder and BiomeBuilder
4) Implement the DimensionList stuff
5) Get a skeleton in place for the ReplacementBuilder
6) Other stuff I've likely forgotten

***___BIG NOTE___***
This commit is still a non-building one. There will be a patch-set rebuild and commit fixup prior to the actual Pull Request and merge for 3.3
…loading/saving code for the ReplacementsRegistry, doing the BlockBuilder and its related pieces and creating the _features.json and _replacements.json for OreSpawn - ie: the two things that cover the default values.
…ustom class for handling the matching of possible replacements instead of just BlockMatcher... which matches Block instances and not actual IBlockState sets.
… handle working out which block from a list gets spawned. Should possibly have a variant that removes blocks as they are given to the spawner or should be the default...
…cture and the cleanups to the JSON loading and API users in the core code to manage. Then its just a matter of adding a couple data files.

...And, of course, handing off some of the fecking block loading code in the ReplacementsRegistry to the stuff in Helpers so people can use OreDictionary entries in the Replacements list.
This just leaves the commands and the core mod code.
…ng cleanups. Of the commands, only /writeconfigs is left unfinished.
…ng with the crash-bug fixed API Implementation
…racted from jars and configs loaded now, though, without issue
…d the issues with the various registries appearing to not function properly
…orks and doesn't trip over itself because the 'acceptAllOverworld' flag wasn't reset
… except andesite, diorite, granite, gravel and dirt
Might not be 100% correct, but I am seeing generation. Think that Diorite and Granite need to be added to the config.

Forced config save command needs implemented. Might be good to add a generic for doing it anyway. Issue with that is
that I don't believe we actually keep enough data around to reconstitute the original files in their original format.

Will discuss with @jriwanek at a later point.
…master-1.12.2

Fix Forge 1.12 packaged access transformer
…master-1.12.2

OreSpawn 4.0.8 for Forge 1.12.2
…master-1.12.2

Port OreSpawn 4.0.16 to Forge 1.12.2
@SkyBlade1978
SkyBlade1978 merged commit 810c494 into MinecraftModDevelopmentMods:master-1.11.2 Sep 8, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants