All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Distant Horizons API

Distant Horizons API

by jeseibel • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Don't Download Unless You Are A Developer

Putting this in your Mods folder will do nothing.

Developer Description

This jar includes the source code and classes needed to interact with Distant Horizons in a Minecraft and mod loader independent way. This jar should be used during development instead of the full Distant Horizons jar to prevent accidentally using unsafe internal methods.

The example projects on GitLab contains all the basics you need to get started using the API. https://gitlab.com/distant-horizons-team/distant-horizons-api-example

Additional resources

API JavaDocs https://distant-horizons-team.gitlab.io/distant-horizons/

Developer Wiki https://gitlab.com/distant-horizons-team/distant-horizons/-/wikis/home

Discord In case you have any questions or issues not addressed in the above two documents. https://discord.gg/xAB8G4cENx

Issues If you find any bugs or want to request a new feature, for the API, please use the main Distant Horizons GitLab issue page. https://gitlab.com/distant-horizons-team/distant-horizons/-/issues

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3 26.2 26.1.x +7
Fabric Forge Neoforge
9h ago 1
26.3 26.2 26.1.x +7
Fabric Forge Neoforge
9h ago 1
26.2 26.1.x 1.21.x +6
Fabric Forge Neoforge
9h ago 1
26.1.x 1.21.x 1.20.x +4
Fabric Forge Neoforge
9h ago 1
26.1.x 1.21.x 1.20.x +4
Fabric Forge Neoforge
9h ago 1
1.21.x 1.20.x 1.19.x +3
Fabric Forge Neoforge
9h ago 1
1.21.x 1.20.x 1.19.x +3
Fabric Forge Neoforge
9h ago 1
1.21.x 1.20.x 1.19.x +3
Fabric Forge Neoforge
9h ago 1
1.21.x 1.20.x 1.19.x +3
Fabric Forge Neoforge
9h ago 1
1.21.x 1.20.x 1.19.x +3
Fabric Forge Neoforge
9h ago 1
1.21.x 1.20.x 1.19.x +3
Fabric Forge Neoforge
9h ago 1
1.21 1.20.x 1.19.x +3
Fabric Forge Neoforge
9h ago 1
1.20.x 1.19.x 1.18.2 +2
Fabric Forge Neoforge
9h ago 1
1.20.x 1.19.x 1.18.2 +2
Fabric Forge
9h ago 1
[7.2.0] 7.2.0 by jeseibel on Oct 14, 2026
Download


## Highlights:

  • Up API version 7.1.0 -> 7.2.0
  • Deprecated IDhApiConfigValue.setValue(value)
  • use IDhApiConfigValue.setValue(value, apiUserDisplayName) instead

## Full Changelog

  • Additions:**

  • enums
  • EDhApiDepthDirection
  • used to define if DH is using forward or reverse Z rendering
  • EDhApiDepthRange
  • methods
  • IDhApiRenderProxy.getDepthRange()
  • IDhApiRenderProxy.getDepthDirection()
  • IDhApiConfigValue.setValue(value, apiUserDisplayName)

<br/>

  • Deprecations:**

  • �IDhApiConfigValue.setValue(value)
  • use IDhApiConfigValue.setValue(value, apiUserDisplayName) instead
  • This way people using the config UI can determine what your mod is controlling
  • If this value isn't set, it will appear as "UNKOWN" and a warning will be logged


[7.1.0] 7.1.0 by jeseibel on Oct 14, 2026
Download


## Highlights:

  • Up API version 7.0.1 -> 7.1.0
  • IOverrideInjector.bind() will silently replace any existing bindings instead of throwing an exception

## Full Changelog

  • Additions:**

  • new classes
  • enums
  • EDhApiDatabaseSyncMode
  • EDhApiDirection
  • EDhApiGeneratorPlan
  • EDhApiWorldGenerationStep
  • TERRAIN
  • For use with Minecraft 26.3+
  • config
  • IDhApiTextureConfig
  • wrappers
  • IDhApiBlazeTextureWrapper
  • events
  • DhApiBlockTextureOverrideEvent
  • new class methods
  • IDhApiBiomeWrapper
  • getSerialString()
  • IDhApiGraphicsConfig
  • texture()
  • IDhApiRenderProxy
  • getRenderingEngine()
  • getDhBlockRatioAtlasTextureGlId()
  • getDhBlockRatioAtlasTextureBlazeWrapper()
  • DhApiBlockColorOverrideEvent.EventParam
  • getTintColorAsInt()
  • getBaseColorAsInt()
  • DhApiBlockStateWrapperCreatedEvent.EventParam
  • setAllowApiTextureOverride()
  • getAllowApiTextureOverride()
  • IOverrideInjector
  • unbindAll()

<br/>

  • Changes:**

  • IOverrideInjector
  • bind()
  • If an existing binding already exists, calling this method will replace the existing binding.
  • Previously this would throw an exception if an interface was already bound.
  • This change was done to fix an issue when running Iris and Immersive Portals at the same time
  • DhApiTerrainDataPoint
  • toString()
  • Re-arranged and re-formatted to be easier to read
  • Improve LodDataBuilder API validation error message
  • Significantly improve world gen task queuing for fast custom world generators

<br/>

Fixes

  • DhApiTerrainDataCache
  • Fix a concurrency issue
  • fix server level not setting a DH Level causing a null pointers in some cases

<br/>

  • Deprecations:**

  • IDhApiWorldGenerationConfig
  • enableDistantWorldGeneration()
  • use GeneratorPlan() instead
  • distantGeneratorMode()
  • use chunkGeneratorMode() instead
  • IDhApiRenderProxy
  • getDhDepthTextureId()
  • use getDhDepthTextureGlId() instead
  • getDhColorTextureId()
  • use getDhColorTextureGlId()
  • IDhApiFullDataSource
  • setApiDataPointColumn(int relX, int relZ, List<DhApiTerrainDataPoint> columnDataPoints)
  • use setApiDataPointColumn(
int relX, int relZ, EDhApiWorldGenerationStep worldGenStep, List<DhApiTerrainDataPoint> columnDataPoints) instead
  • the old method will always set a EDhApiWorldGenerationStep of SURFACE


[7.0.0] 7.0.0 by jeseibel on Oct 14, 2026
Download


## Highlights:

  • Up API version 6.1.1 -> 7.0.0
  • Many rendering events now use pooled/cached objects to reduce garbage collector overhead


## Full Changelog

  • Additions:**

  • A few @See references in event javadocs
  • Added Javadoc reference to OpenGL methods, stating they will not work when Blaze3D is the selected rendering engine
  • EDhApiRenderingEngine
  • EDhApiRenderingApi
  • DhApiBeforeFogRenderEvent
  • useCameraPositionForQualityDropOff config

<br/>

  • Changes:**

  • Many rendering events now use pooled/cached objects to reduce garbage collector overhead
  • As long as you don't modify the event objects outside of the expected this shouldn't cause any issues

<br/>

  • Fixes:**

  • Fix color tints not clearing when leaving the world or being cleared via the API

<br/>

  • Removals:**

  • DhApiBlockColorOverrideEvent.blockStateWrapperCreated
  • Replaced by DhApiBlockColorOverrideEvent.onBlockColorOverridden
  • EDhApiVanillaOverdraw
  • Hasn't been used in a long time


[6.1.0] 6.1.0 by jeseibel on Oct 14, 2026
Download


## Highlights:

  • Up API version 6.0.0 -> 6.1.0


## Full Changelog

  • Additions:**

  • add opacity to IDhApiBlockStateWrapper
  • add alpha to DhApiBlockColorOverrideEvent


[6.0.0] 6.0.0 by jeseibel on Oct 14, 2026
Download


## Highlights:

  • Up API version 5.1.0 -> 6.0.0


## Full Changelog

  • Additions:**

  • DhApiRenderParam.dhMvmProjMatrix
  • DhApiBlockStateWrapperCreatedEvent
  • Allows changing how DH handles certain blocks (IE opacity, Iris material, or color)
  • DhApiBlockColorOverrideEvent
  • Allows overriding the color of specific blocks when DH is creating render data
  • EDhApiRenderApi
  • Auto, Open_GL, and Blaze_3D

<br/>

  • Improvements:**

  • Improved several Javadocs
  • Fixed a couple typos
  • Added some additional deprecation info
  • Mentioned a few events/methods that are only relevant to the OpenGL renderer
  • Mentioned that IDhApiUnsafeWrapper can return null objects (specifically when dealing with the air block wrapper)

<br/>

  • Changes:**

  • EDhApiRendererMode DEBUG -> DEBUG_TRIANGLE
  • IDhApiTerrainDataCache is now AutoClosable
  • Replace several "Double" config options with "Float"
  • Float is more accurate to what is happening behind the scenes
  • EDhApiVerticalQuality
  • renamed method calculateMaxVerticalData(byte dataDetail) -> calculateMaxNumberOfVerticalSlicesAtDetailLevel(byte dataDetail)

<br/>

  • Deprecations:**

  • DhApiBeforeColorDepthTextureCreatedEvent
  • This event will still be triggered for the OpenGL renderer, but not the Blaze3D renderer
  • Using DhApiAfterColorDepthTextureCreatedEvent is recommended instead

<br/>

  • Removals:**

  • IDhApiTerrainDataRepo methods that don't use a IDhApiTerrainDataCache
  • If a cache isn't included each call would require a separate database/decompression hit, which is very slow and caused confusion
  • Removed SSAO config options
  • enabling/disabling SSAO is still available however no additional configuration options can be done
  • EDhApiDebugRendering SHOW_RENDER_SOURCE_FLAG
  • This hasn't been used for some time
  • EDhApiGpuUploadMethod BUFFER_MAPPING
  • This has been deprecated for some time and hasn't been used for about as long


[5.1.0] 5.1.0 by jeseibel on Oct 14, 2026
Download

## Highlights:

  • Up API version 5.0.0 -> 5.1.0


## Full Changelog

  • Additions:**

  • DhApiRenderParam.clientLevelWrapper
  • The render parameters will now include the IDhApiLevelWrapper that is currently being rendered.

[5.0.0] 5.0.0 by jeseibel on Oct 14, 2026
Download

## Highlights:

  • Up API version 4.1.0 -> 5.0.0
  • Removed 2 deprecated constructors
  • Renamed IDhApiTerrainDataRepo.getSoftCache() -> createSoftCache() for clarity


## Full Changelog

  • Additions:**

  • EDhApiDataCompressionMode
  • Z_STD_STREAM
  • Deprecated legacy option to support migrating old database formats
  • Identical in behavior to the removed Z_STD option
  • EDhApiLoggerLevel
  • IDhApiGraphicsConfig
  • getBiomeBlending()
  • IDhApiTerrainDataRepo
  • createSoftCache() identical in behavior to the removed getSoftCache(), this was only renamed to prevent confusion
  • DhApiTerrainDataPoint
  • add a default toString() method for easier debugging

<br/>

  • Changes:**

  • Up API version 4.1.0 -> 5.0.0
  • EDhApiDataCompressionMode
  • Z_STD_BLOCK now uses block compression instead of streams, use Z_STD_STREAM to get the old behavior

<br/>

  • Removals:**

  • EDhApiDataCompressionMode
  • Z_STD
  • Replaced by Z_STD_STREAM
  • EDhApiLoggerMode
  • Replaced by the more granular options of EDhApiLoggerLevel
  • IDhApiTerrainDataRepo
  • getSoftCache()
  • Replaced by createSoftCache()
  • both methods function identically, the replacement was done just to prevent confusion about how the method would work
  • DhApiChunk
  • remove deprecated constructor
  • DhApiTerrainDataPoint
  • remove deprecated constructor

[4.1.0] 4.1.0 by jeseibel on Oct 14, 2026
Download

## Highlights:

  • Up API version 4.0.1 -> 4.1.0


## Full Changelog

  • Additions:**

  • EDhApiDataCompressionMode.Z_STD
  • EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_WARNING_TO_FILE
  • IDhApiEventParam.getCopyBeforeFire()
  • DhApiAfterColorDepthTextureCreatedEvent
  • DhApiBeforeColorDepthTextureCreatedEvent
  • DhApiChunkProcessingEvent
  • Add remove(obj) and remove(index) to IRenderableBoxGroup

<br/>

  • Changes:**

  • Up API version 4.0.1 -> 4.1.0

<br/>

  • Bug Fixes:**

  • Fix setting the config value renderingEnabled() causing the user's rendering mode to be changed and saved to file
  • Fix DhApiAfterDhInitEvent firing before the DH config has been set up
  • Fix VANILLA_CHUNKS API world gen

<br/>

  • Deprecations:**
  • DhApiColorDepthTextureCreatedEvent
  • replaced by DhApiAfterColorDepthTextureCreatedEvent and DhApiBeforeColorDepthTextureCreatedEvent

[4.0.1] 4.0.1 by jeseibel on Oct 14, 2026
Download

## Highlights:

  • Up API version 4.0.0 -> 4.1.0


## Full Changelog

  • Additions:**

  • DhApiAfterColorDepthTextureCreatedEvent
  • DhApiBeforeColorDepthTextureCreatedEvent

<br/>

  • Changes:**

  • Up API version 4.0.0 -> 4.1.0

<br/>

  • Bug Fixes:**

  • Fix setting the config value renderingEnabled() causing the user's rendering mode to be changed and saved to file
  • Fix DhApiAfterDhInitEvent firing before the DH config has been set up

<br/>

  • Deprecations:**
  • DhApiColorDepthTextureCreatedEvent
  • replaced by DhApiAfterColorDepthTextureCreatedEvent and DhApiBeforeColorDepthTextureCreatedEvent





[4.0.0] 4.0.0 by jeseibel on Oct 14, 2026
Download

# API Changes

### Highlights:

  • Up API version 3.0.1 -> 4.0.0


### Full Changelog

  • Additions:**

  • IDhApiWorldProxy
  • setReadOnly()
  • getReadOnly()
  • IDhApiLevelWrapper
  • getDimensionName()
  • getDhIdentifier()
  • getDhSaveFolder()
  • generateLod()
  • Can be used to generate N-sized LODs
  • IDhApiFogConfig
  • enableDhFog()
  • enableVanillaFog()
  • EDhApiWorldGeneratorReturnType
  • API_DATA_SOURCES
  • IDhApiFullDataSource
  • For use with the IDhApiWorldGenerator
  • DhApiWorldUnloadEvent
  • DhApiWorldLoadEvent
  • IDhApiSaveStructure
  • EDhApiDistantGeneratorMode
  • FULL

<br/>

  • Changes:**

  • Up API version 3.0.1 -> 4.0.0
  • IDhApiWorldGenerator
  • rename runApiChunkValidation() -> runApiValidation()
  • IDhApiHeightFogConfig
  • heightFogMode -> heightFogDirection
  • EDhApiHeightFogMode -> EDhApiHeightFogDirection
  • EDhApiHeightFogMixMode
  • BASIC -> SPHERICAL
  • IGNORE_HEIGHT -> CYLINDRICAL

<br/>

  • Bug Fixes:**

  • Fix off by one error in the following IDhApiTerrainDataRepo methods when getting blocks in negative X and/or Z positions:
  • getSingleDataPointAtBlockPos()
  • getColumnDataAtBlockPos()
  • getAllTerrainDataAtChunkPos()
  • getAllTerrainDataAtRegionPos()
  • getAllTerrainDataAtDetailLevelAndPos()

<br/>

  • Removals:**

  • IDhApiDimensionTypeWrapper
  • getDimensionName()
  • IDhApiWorldGenerator
  • getMinGenerationGranularity()
  • getMaxGenerationGranularity()
  • isBusy()
  • generateChunks() and generateApiChunks() byte granularity parameter
  • int generationRequestChunkWidthCount is it's replacement and represents a different thing. Having the number of chunks wide is much easier to understand than the granularity.
  • IDhApiMultiplayerConfig
  • multiverseSimilarityRequirement()
  • This config is no longer supported or needed

<br/>

  • Deprecations:**
  • IDhApiFogConfig
  • drawMode()
  • Use enableDhFog() instead
  • The old method is kept but deprecated to prevent breaking support with Iris 1.7.5
  • disableVanillaFog()
  • Use enableVanillaFog() instead
  • The old method is kept but deprecated to prevent breaking support with Iris 1.7.5
  • EDhApiFogDrawMode
  • USE_OPTIFINE_SETTING
[3.0.0] 3.0.0 by jeseibel on Oct 14, 2026
Download

## 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:

updated javadocs

  • 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
  • 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


  • 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

  • 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


  • 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

[2.1.0] 2.1.0 by jeseibel on Oct 14, 2026
Download

  • Additions**

  • EDhApiUpdateBranch.AUTO

[2.0.0] 2.0.0 by jeseibel on Oct 14, 2026
Download

## Highlights:

  • Due to breaking changes the api version number has been up from 1.0.0 to 2.0.0
  • please make sure your implementing programs check the API version and handle old DH versions cleanly.


## Full Details:

  • Breaking Changes**

  • Renamed
  • ERendererMode -> EDhApiRendererMode
  • DhApiChunkOfDataPoints -> DhApiChunk
  • DhApiTerrainDataPoint
  • lightLevel -> blockLightLevel, skyLightLevel
  • DhApiBeforeRenderEvent and DhApiAfterRenderEvent -> EventParam
  • DhApiBeforeRenderEvent.EventParam -> DhApiRenderParam
  • DhApiAfterRenderEvent.EventParam -> DhApiRenderParam
  • Added missing "DhApi" prefix to the following enums:
  • EDhApiQualityPreset
  • EDhApiThreadPreset
  • EDhApiBlocksToAvoid
  • EDhApiDataCompressionMode
  • EDhApiGLErrorHandlingMode
  • EDhApiGlProfileMode
  • EDhApiGpuUploadMethod
  • EDhApiGrassSideRendering
  • EDhApiHorizontalQuality
  • EDhApiLodShading
  • EDhApiLoggerMode
  • EDhApiMaxHorizontalResolution
  • EDhApiServerFolderNameMode
  • EDhApiUpdateBranch
  • EDhApiVanillaOverdraw
  • EDhApiVerticalQuality
  • EDhApiWorldCompressionMode
  • EDhApiDebugRendering
  • EDhApiFogColorMode
  • EDhApiFogDrawMode
  • EDhApiFogFalloff
  • EDhApiHeightFogMixMode
  • EDhApiHeightFogMode
  • EDhApiRendererMode
  • EDhApiRenderPass
  • EDhApiTransparency
  • EDhApiWorldGeneratorReturnType

  • Replaced
  • IDhApiRenderProxy
  • removed getDhFrameBufferId() and setTargetFrameBufferId()
  • replaced with the bindable IDhApiFramebuffer interface
  • IDhApiGraphicsConfig
  • Replaced overdrawPrevention() with overdrawPreventionRadius()
  • Removed DhApiScreenResizeEvent
  • replaced with DhApiColorDepthTextureCreatedEvent


  • Additions**

  • expand API to allow world generator to generate chunks of data points in addition to actual chunks. - Builderb0y

  • usable interfaces
  • IDhApiWrapperFactory
  • bindable interfaces
  • IDhApiFramebuffer
  • IDhApiShaderProgram
  • IDhApiCullingFrustum
  • IDhApiShadowCullingFrustum
  • bindable events
  • DhApiBeforeApplyShaderRenderEvent
  • DhApiBeforeBufferRenderEvent
  • DhApiBeforeDeferredRenderEvent
  • DhApiBeforeRenderCleanupEvent
  • DhApiBeforeRenderPassEvent
  • DhApiBeforeRenderSetupEvent
  • DhApiBeforeTextureClearEvent
  • DhApiColorDepthTextureCreatedEvent
  • methods
  • IDhApiRenderProxy
  • setDeferTransparentRendering()
  • getDeferTransparentRendering()
  • getNearClipPlaneDistanceInBlocks()
  • IOverrideInjector.unbind()
  • DhApi.isDhThread()
  • DhApiConfigValue.clearValue()
  • IDhApiRenderProxy.getDhFrameBufferId()
  • IDhApiWorldGenerator
  • generateChunks()
  • generateApiChunks()
  • EDhApiWorldGeneratorReturnType getReturnType()
  • IDhApiConfigValue
  • getApiValue()
  • clearValue()
  • variables
  • DhApiRenderParam
  • EDhApiRenderPass renderPass
  • float nearClipPlane
  • float farClipPlane
  • DhApi.wrapperFactory


[1.0.0] 1.0.0 by jeseibel on Oct 14, 2026
Download
The first version of the DH API, designed for DH 2.0.
Distant Horizons API Icon
Download Distant Horizons API
Select game version
Select platform