Main
Highlights:
- API version increased 2.1.0 -> 3.0.0
- Cloud/Beacon rendering
- This broke previous Iris compatability, please be patient while waiting for Iris to update.
- Add partial Replay mod support
- In order for LODs to appear the replay must be unpaused and the LOD database must be in the designated Replay multiplayer folder.
- Improved world gen speed (thanks Cortex)
- Fixed and Improved Cave culling
- This should offer a slight FPS improvement over the previous version
- Fix crashing due to playing the game too long or switching dimensions too fast
- Fix black glacier/ocean block rendering
- A bunch of other bugfixes
Full Changelog
Additions:
- Generic Rendering
- beacon rendering
- cloud rendering
- API support
- Sodium 0.6 support
- Config for ignored blocks
- MC 1.21.1 support
- Alex's Caves config warning message
Changes:
- API event parameters are cloned between listeners to reduce the chance of cross-listener contamination
- Increase default fog start distance
- Remove near fog starting distance limitation
- Improved World gen speed
- Thanks Cortex for finding the problem!
- Reduced CPU use when flying over already generated LODs
Bug Fixes:
- Fix Replay mod not showing LODs
- This does require putting LODs in a replay specific multiplayer folder
- Fix Starlight causing LODs to appear black
- This required disabling a previous optimization used when pulling lighting for pre-generated chunks. However this optimization can be manually re-enabled via the config for use in worlds that have never had Starlight installed.
- Fix vertical LOD face lighting when next to water
- Add missing "IP Only" multiplayer tooltip
- Fix infinitely creating lightmap textures until the game crashes
- Fix world gen not skipping already complete stages for pre-generated chunks
- Attempt to fix lag spikes when right clicking blocks
- Fix incorrect fog rendering on some machines
- Fix a multithreading warning in ClientBlockStateColorCache
- Fix LODs flashing twice when changing config values
- Reduce LOD holes on the border between detail levels
- Fix incorrect block positions being fed into biome color code (Builderb0y)
- Fix rapidly changing dimensions causing the game to crash
- Fix cave culling causing holes in the ocean or on the border of unloaded LODs
- Fix cave culling regression that prevented culling on detail levels 1 and higher
- Fix massive direct memory use/leak when uploading LODs
- Fix frustum culling breaking when the screen is skewed (IE nausea or nether portals)
- Fix DhApiChunk setDataPoints() failing for null or empty lists
Breaking Changes:
- Mark Iris 1.7.4 and below as incompatible
- This is due to the API changes related to the generic (cloud/beaon) renderer and incorrect naming of several API position objects
API
Highlights:
- Due to breaking changes (mainly caused by incorrectly named objects) the api version number has been up from 2.1.0 to 3.0.0
- please make sure your implementing programs check the API version and handle old DH versions cleanly.
Full Details:
Additions:
- Generic Rendering API
- New objects include:
- DhApiRenderableBoxGroupShading
- DhApiRenderableBox
- DhApiBeforeGenericRenderSetupEvent
- DhApiBeforeGenericRenderCleanupEvent
- DhApiBeforeGenericObjectRenderEvent
- IDhApiRenderableBoxGroup
- IDhApiCustomRenderRegister
- IDhApiCustomRenderObjectFactory
- IDhApiGenericObjectShaderProgram
- IDhApiGenericRenderingConfig
- New bindings/methods include:
- DhApi.Delayed.IDhApiCustomRenderObjectFactory
- IDhApiLevelWrapper.getRenderRegister()
- IDhApiGraphicsConfig.IDhApiGenericRenderingConfig
- New objects include:
- Optional memory caching to IDhApiTerrainDataRepo methods
- This allows for much faster raycasting and repeat query operations
- IDhApiTerrainDataCache
- New Enum EDhApiBlockMaterial
- New getter IDhApiBlockStateWrapper methods
- IDhApiBlockStateWrapper.getSerialString()
- IDhApiBlockStateWrapper.getMaterialId()
- New wrapper Factory methods to builder wrappers from resource location strings (IE "minecraft:stone", or "minecraft:plains")
- IDhApiWrapperFactory.getBiomeWrapper(String resourceLocationString, IDhApiLevelWrapper levelWrapper)
- IDhApiWrapperFactory.getDefaultBlockStateWrapper(String resourceLocationString, IDhApiLevelWrapper levelWrapper)
- Optional additional world gen DhApiChunk validation
- Updated javadocs
Bugfixes:
- Fix/add AbstractDhApiChunkWorldGenerator.generateApiChunk()
- API Chunk generation was present previously but was broken preventing it's correct use
Breaking Changes:
-
Renamed
- Math/Position objects
- Vec3f -> DhApiVec3f
- Vec3d -> DhApiVec3d
- Vec3i -> DhApiVec3i
- Mat4f -> DhApiMat4f
- Affected API objects:
- Vec3i -> DhApiVec3i
- DhApiRaycastResult
- DhApiBeforeBufferRenderEvent
- DhApiAfterRenderEvent
- IDhApiShaderProgram
- IDhApiCullingFrustum
- Mat4f -> DhApiMat4f
- DhApiRenderParam
- Vec3i -> DhApiVec3i
- Math/Position objects
-
Removed
- IDhApiGpuBuffersConfig
- These config values didn't need to be changed by the end users (Note: if James is wrong and these do need to be changed in some edge cases, let him know so the change can be rolled back)
- this includes:
- gpuUploadMethod
- gpuUploadPerMegabyteInMilliseconds
- IDhApiGpuBuffersConfig
Deprecations:
- IDhApiLevelWrapper.getHeight()
- This change is done so get min/max heigth are both viable methods
- use getMaxHeight() instead
- DhApiChunk constructor
- This change was due to the old constructor's parameters being in the wrong order (Specifically top and bottom positions being flipped)
- use DhApiChunk.create() instead
- DhApiTerrainDataPoint constructor
- This change was due to the old constructor's parameters being in the wrong order (Specifically top and bottom positions being flipped)
- use DhApiTerrainDataPoint.create() instead
- EDhApiGpuUploadMethod.BUFFER_MAPPING
- Buffer mapping was removed as an option due to memory leaks in the old system and having one system being simpler. This can be reverted if users determine that buffer mapping is better in some situations.
- IDhApiWorldGenerator.isBusy()
- The method now has a default implementation but isn't used.
- The task queuing logic is now handled internally by DH