**Features:**
- Allow biome ambience (including end and nether biome fog) to be changed through a new `ambience.json` config file (more info [here](https://github.com/jbredwards/Nether-API/blob/1.12.2/README.md))!
- Config settings:
- Many new config settings to customize end caves.
- New config settings to reload `ambience.json` and control `ambience.json` server sync.
- New config settings to set the min/max length that nether fortress pillars can generate (suggestion from [#23](https://github.com/jbredwards/Nether-API/issues/23)). Note that each large pillar is actually made up of many 1x1 pillars. Probably best used for void worlds.
- New config settings to set the min/max y position of a nether fortress structure start (suggestion from [#23](https://github.com/jbredwards/Nether-API/issues/23)).
- New config setting to toggle the dragon griefing fix.
- New config settings to toggle [MC-10369](https://bugs.mojang.com/browse/MC/issues/MC-10369) fixes.
- Fix occasional Vanilla weather desync when traveling between dimensions. This fixes the nether fog sometimes being darker than it should be.
- Fix Vanilla dragon egg teleportation bugs:
- Fix teleporting into the air.
- Fix teleporting outside the world.
- Particles now show the actual direction the dragon egg went.
- Fix Vanilla ender teleportation bugs (with a config setting to disable):
- Prevent client-only teleportation. Fixes janky teleporting when fighting endermen or shulkers (for example).
- Prevent dead entity teleportation. Fixes annoying situations where enderman loot will be somewhere else.
- Modded fluids now have a more accurate fog color:
- If a fluid doesn't have a color set, use its block color or map color rather than white.
- New `/nether_api ambience reload` command the reloads `ambience.json` on the server and syncs with all clients.
**Bug Fixes:**
- Better sorting for Nether API config sub-categories.
- Don't calculate and load initial spawn chunks for non-initial spawn dimensions that permit respawning (fixes [#39](https://github.com/jbredwards/Nether-API/issues/39)).
- Due to biome registry order, it was possible for BOP or NetherEx to re-enable the Vanilla hell biome though their own default configs even if the Nether API config weight was set to was 0. This is now fixed.
- Fix biome fog color flickering when crossing between biomes.
- Fix clients referencing Vanilla's nether/end world providers instead of Nether API's if they join a server without loading a singleplayer world first. This fixes the following bugs:
- Nether/End biome fog not working on dedicated servers.
- Nether/End biome music not working on dedicated servers.
- Nether/End using overworld cave sounds (instead of none) on dedicated servers (if the biome doesn't have its own dark ambience sound).
- Probably other stuff too.
- Fix mod credits and description for prism launcher.
- Fix server lag when calculating a random respawn point with a with large spawn radius (fixes [#45](https://github.com/jbredwards/Nether-API/issues/45)).
- Fix some log output calls not using `NetherAPI.LOGGER`.
- Improve entity teleportation particle handling for very large distances (if distance is too large, don't render a trail).
- Improve magma block nether generation (now only replaces netherrack-like blocks or solid blocks with a material of `Material.GROUND` or `Material.SAND`).
- Mark non-initial spawn dimensions as initialized during world load (fixes [#44](https://github.com/jbredwards/Nether-API/issues/44) and probably some other random things).
- The `/nether_api list` command now only outputs to the log, since outputting to the chat made its formatting look weird.
**Compatibility Fixes and Improvements:**
- BetterNether:
- Add city structure to the `/locate` command.
- Add quartz stained glass to ore dictionary.
- Cacti blocks (agave, barrel cactus, nether cactus) now have the correct entity pathfinding type.
- Fix lucis mushroom generation having incorrect rotation (fixes part of [#24](https://github.com/jbredwards/Nether-API/issues/24)). BetterNether RotN/Continuation only, the original BetterNether does not have this issue.
- Fixes for quartz stained glass panes:
- BetterNether RotN/Continuation only, the original BetterNether does not have quartz stained glass panes.
- Add crafting recipes.
- Add models (fixes part of [#24](https://github.com/jbredwards/Nether-API/issues/24)).
- Add localization values (BetterNether RotN only).
- Add to ore dictionary.
- Prevent black apples from sometimes generating inside lava.
- Biomes O' Plenty:
- Bramble now has the correct entity pathfinding type.
- Fix BOP replacing all non-lava fluid fog colors with water.
- Fix BOP replacing the world provider's fog (if world provider fog is enabled).
- Nether API now accounts for BOP biome fog color configs for the nether/end fog color calculation.
- New config setting to allow End features added by BOP to generate without the world type set to "Biomes O' Plenty".
- Use different approach for block particle color fix, and resolve various conflicts caused by the old method (fixes [#41](https://github.com/jbredwards/Nether-API/issues/41) and [#43](https://github.com/jbredwards/Nether-API/issues/43)).
- CatServer:
- Fix crash (fixes [#40](https://github.com/jbredwards/Nether-API/issues/40)).
- NetherEx:
- Fix Coolmar Spider rendering bug.
- Ichor fluid now uses the correct map color.
- New config setting to apply different nether bricks to nether fortress based on its origin biome (false by default) (suggestion from [#23](https://github.com/jbredwards/Nether-API/issues/23)).
- New config setting to apply gloomy nether bricks to nether fortresses if its origin biome has a top block of soil sand (false by default).
- New config setting to use "frozen" entity instead of "blaze" entity for arctic abyss nether fortress (false by default) (suggestion from [#23](https://github.com/jbredwards/Nether-API/issues/23)).
- Stygian End:
- Cactus now has the correct entity pathfinding type.
**API Changes:**
- Many internal fields have either been moved to new config settings, or are now exposed through a new `api.util.NetherAPIProperties` class.
- The API now makes use of `org.jetbrains.annotations.ApiStatus` annotations.
- `api.audio.IDarkSoundAmbience`:
- New `IDarkSoundAmbience.DEFAULT_CHANCE_PER_TICK` field that equals the chance used by Vanilla in modern versions.
- New `IDarkSoundAmbience.DEFAULT_LIGHT_SEARCH_RADIUS` field that equals the light search radius used by Vanilla in modern versions.
- New `IDarkSoundAmbience.DEFAULT_SOUND_OFFSET` field that equals the sound offset used by Vanilla in modern versions.
- New static `modded` method that returns a new `DarkSoundAmbience` instance with custom ambience properties.
- New static `vanilla` method that returns a new `DarkSoundAmbience` instance with Vanilla ambience properties.
- `api.audio.IMusicType`:
- New static `modded` method that returns a new `IMusicType` instance with custom music properties.
- New static `vanilla` method that returns a new `IMusicType` instance with Vanilla music properties (cannot replace current music, and is not local to the current biome).
- `api.audio.ISoundAmbience`:
- New `ISoundAmbience.DEFAULT_CHANCE_PER_TICK` field that equals the chance used by Vanilla in modern versions.
- New `ISoundAmbience.of` methods.
- `api.biome.IAmbienceBiome`:
- Make it easier to use this interface by offering new sub-classes.
- New sub-classes: `IAmbienceBiome.Delegate`, `IAmbienceBiome.Impl`, and `IAmbienceBiome.Mutable`.
- `api.biome.ILavaTintBiome`:
- Restore original `getBiomeLavaColor` method from v1.0.0 (removed in v1.3.0), now marked as "override only" and with a default implementation returning -1.
- The `getBiomeLavaColor` method from v1.3.0 now has a default implementation pointing to the original method.
- `api.biome.IMusicBiome`:
- New interface.
- Allows any implementing biome to have a custom `api.audio.IMusicType` (regardless of the dimension!).
- Extracts the music logic shared between `api.biome.INetherBiome` and `api.biome.IEndBiome`, with a new `getCreativeMusicType` method.
- `api.biome.INoSpawnBiome`:
- New `denyPlayerSpawn` method with a default implementation returning true.
- `api.block.IConditionalParticleColor`:
- New interface.
- Having your Block implement this allows it to control whether its block particles will be colored.
- `api.event.BiomeStructureEvent`:
- New class.
- Contains child event classes to offer control over traits of structures that support the events. Child events are `GetBlockID`, `PrepareSpawnerLogic`, and `PrepareSpawnList`.
- Currently, the only Vanilla structure that supports these events is "Fortress". It's generally recommended for modded structures registered using Nether API to use these events, but it's not required.
- `api.structure.IBiomeStructure`:
- New interface.
- Makes it much easier for `StructureStart` and `StructureComponent StructureComponent` instances to support `api.event.BiomeStructureEvent`.
- `api.structure.MapGenSpawningStructure`:
- Internal changes to make it support `api.structure.IBiomeStructure`.
- Mark `MapGenSpawningStructure.spawnableCreatures` field as "obsolete". If you want to retrieve creature spawns, use the world-sensitive `getPossibleCreatures` getter method. If you want to add default creature spawns, use the `addSpawnableCreature` method.
- New protected methods for ease-of-use.
- `api.util.InitialSpawnUtils`:
- New class.
- Provides some utility functions relating to initial spawn dimensions.
- `api.util.NetherAPIProperties`:
- New class.
- Exposes certain internal Nether API properties in a stable, non-changing way.
- `api.util.NetherGenerationUtils`:
- New `getEndIslandHeightValue` method that exposes `ChunkGeneratorEnd.getIslandHeightValue` for other mods to use.
- `api.util.ParticleFactoryUtils`:
- New class.
- Provides some utility functions relating to `IParticleFactory`.
- `api.world.IAmbienceWorldProvider`:
- Add 4 static utlity methods to cover all use-cases for `getAmbienceOrFallback`, and mark that method as "obsolete".
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }