Tags
Creators
Details
All versions
7.4.1
Release
7.4.1yesterday 16
Uploaded by
Compatibility
Minecraft: Java Edition
1.7.10
Platform
Forge
Supported environments
Singleplayer only
Required content
Any compatible version
Any compatible version
Unavailable version
Changes
CreateWorldUI - 7.4.1
What is changed?
Change version number from previous to 7.4.1
➕Add:
- add the datapack compatibility, and the some code reconstruct directly use it instead of reflecting and some offset deletion (7.3.0)
- Rebuild TabRegistry (external mod tab registration API) removed during the HeaderFooterLayout refactor, adapted to the current CatFrame component-based tab design. New api/tab/TabRegistry.java: factories are now Function<GuiCreateWorld, Tab> receiving the host screen (matching built-in tab constructors); legacy int tabId replaced by a unique String key for duplicate detection; priority semantics preserved with built-in anchors Game=100/World=101/More=102 and DEFAULT_PRIORITY=103 (after all built-ins). buildTabList() freezes the registry, instantiates external factories per GUI rebuild, logs and skips failing factories, and stable-merges by priority. MixinModernCreateWorld.onInitGuiTail now builds the nav bar from the merged ordered tab list instead of the hardcoded three built-ins.
- Add localizations about the experimental and config rearrage
- Add built-in example experiment demonstrating the IExperimentScreenUsage enum-registration API. New ExampleExperiment enum (one no-op toggle, id createworldui:example_toggle, default disabled) is registered in init only when the new config option enableExampleExperiment (default true, UI Management category, en/zh lang keys) is on.
- Persist experiment selections per-save via WorldSavedData. ExperimentState now layers pending UI choices over an active ExperimentData (data/createworldui_experiments.dat), with persisted>pending>default precedence. New ExperimentData (WorldSavedData, only explicit overrides, registry-filtered read) and ExperimentApplier (WorldEvent.Load commits pending and attaches, Unload detaches; overworld-only, mapStorage-backed). Registered on the Forge bus in init.
- Implement the experiment screen and its developer API. Rewrite IExperimentScreenUsage to follow GTNH Mixins' IMixins idiom: the enum constant is the registration unit (getID/getTitle/getDescription/defaultEnabled), with static getExperimentalThings(Class) expanding constants via getEnumConstants() and an explicit register(Class) facade backed by a nested Store holder (removed the non-compiling empty static stub, apply() and the id-parameter variants). Add ExperimentState as a session-scoped enabled/disabled map exposing isEnabled/setEnabled/snapshot/restore so CreateWorldUI only records state and author mods gate/persist their own features. Implement ExperimentScreen on CatFrame (ObjectSelectionList of on/off CyclingButton rows, red info line, Done/Cancel footer) mirroring the high-version ExperimentsScreen, with Cancel reverting to the entry snapshot. Wire the MoreTab experiments button to open it, and add selectWorld.experiments.info / createworldui.experiments.empty lang keys (en/zh) plus drop the placeholder hover text.
🔧Fix:
- fix some details
- Fix raw type usage in CreateWorldConfigUI.ConfigUI: parameterize the three ConfigElement instantiations as ConfigElement<Object> since ConfigElement<T> is generic in FML/Forge 1.7.10, and add a scoped SuppressWarnings(rawtypes) on getConfigElements because GuiConfig takes List<IConfigElement> with a raw type argument and a parameterized List<IConfigElement<?>> is not assignment-compatible (generics are invariant). Verified with gradlew compileJava.
- Fix double button-press sound on Create/Cancel footer buttons: the vanilla mouseClicked dispatch (buttons stay in buttonList) already plays gui.button.press before the TAIL injection feeds GuiButtonAdapter, whose own playSound caused an audible double press. Add SilentButtonAdapter subclass in MixinModernCreateWorld that keeps delegate hit-state sync but suppresses the redundant sound; instantiate it for both footer adapters.
- Fix NPE at Config.UIOPtions line 95: enableExampleExperiment language key was looked up in the 'ui management' category, but the property is read from the 'Experiment' category, so Category.get() returned null during preInit. Point the lookup to the 'experiment' category, consistent with all other options.
- Remove obsolete enableScissor overrides in GameRuleList and ExperimentList: CatFrame >=0.10.4 AbstractScrollArea.enableScissor now converts GUI coords to framebuffer pixels via ScaledResolution, making the local workarounds for the old 0.7.1.1 clipping bug redundant; drop the now-unused GL11 imports
❗❗❗Deprecated:
- Remove dead DEFAULT_DESCRIPTIONS fallback map from GameRuleTooltipRegistry. The built-in vanilla-rule default descriptions were no longer populated after the default fallback was removed, making the field and its lookup branch in getTooltip() unreachable. Also updated class/method JavaDoc priority lists and clearAllTooltips() notes to drop the third (default description) tier.
Notes
Full Changelog: https://github.com/song682/CreateWorldUI/commits/v7.3.0
Supplementary resources
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:dCSw6pVW:5zjeiNz3"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:dCSw6pVW:5zjeiNz3"
}

