From 1139a6eec726cd01fdf05d216bfeb78402e8a4a6 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 16 Aug 2023 07:23:42 -0500 Subject: [PATCH 01/20] Disable cave culling for dimensions with a ceiling --- .../render/bufferBuilding/ColumnRenderBufferBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java index b2fe58c57..060be4c62 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java @@ -69,7 +69,7 @@ public class ColumnRenderBufferBuilder boolean enableTransparency = Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled; EVENT_LOGGER.trace("RenderRegion start QuadBuild @ " + renderSource.sectionPos); - boolean enableSkyLightCulling = Config.Client.Advanced.Graphics.AdvancedGraphics.enableCaveCulling.get(); + boolean enableSkyLightCulling = !clientLevel.getLevelWrapper().hasCeiling() && Config.Client.Advanced.Graphics.AdvancedGraphics.enableCaveCulling.get(); int skyLightCullingBelow = Config.Client.Advanced.Graphics.AdvancedGraphics.caveCullingHeight.get(); // FIXME: Clamp also to the max world height. From 468c8b134cb6c5c958bcb4f506c8d9b0bb028ab9 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 16 Aug 2023 07:42:01 -0500 Subject: [PATCH 02/20] Remove unused EDhApiWorldGenThreadMode --- .../EDhApiWorldGenThreadMode.java | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenThreadMode.java diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenThreadMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenThreadMode.java deleted file mode 100644 index ec99b5a5f..000000000 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenThreadMode.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.seibel.distanthorizons.api.enums.worldGeneration; - -/** - * MULTI_THREADED,
- * SINGLE_THREADED,
- * SERVER_THREAD,
- * - * @author James Seibel - * @version 7-14-2022 - */ -@Deprecated // not currently in use, if the config this enum represents is re-implemented, the deprecated flag can be removed -public enum EDhApiWorldGenThreadMode -{ - /** - * This world generator can be run on an unlimited number - * of concurrent threads. - */ - MULTI_THREADED, - - /** - * This world generator can only be run on one thread at - * a time, however that thread can run concurrently - * to Minecraft's server thread. - */ - SINGLE_THREADED, - - /** - * This world generator can only be run on Minecraft's - * server thread. - */ - SERVER_THREAD, -} From 7aa432951c2ee19da30fe98d2bcb85794e520c5e Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 16 Aug 2023 07:42:12 -0500 Subject: [PATCH 03/20] Add Javadoc "since API 1.0.0" to API methods and objects --- .../com/seibel/distanthorizons/api/DhApi.java | 56 +++++++++++++++---- .../api/enums/EDhApiDetailLevel.java | 1 + .../api/enums/config/EBlocksToAvoid.java | 2 + .../api/enums/config/EGpuUploadMethod.java | 1 + .../api/enums/config/EHorizontalQuality.java | 2 + .../enums/config/ELightGenerationMode.java | 1 + .../api/enums/config/ELodShading.java | 2 + .../api/enums/config/ELoggerMode.java | 3 + .../config/EMaxHorizontalResolution.java | 1 + .../api/enums/config/EOverdrawPrevention.java | 4 +- .../enums/config/EServerFolderNameMode.java | 1 + .../api/enums/config/EVerticalQuality.java | 1 + .../config/quickOptions/EQualityPreset.java | 2 + .../config/quickOptions/EThreadPreset.java | 3 +- .../api/enums/rendering/EDebugRendering.java | 1 + .../api/enums/rendering/EFogColorMode.java | 1 + .../api/enums/rendering/EFogDistance.java | 5 +- .../api/enums/rendering/EFogDrawMode.java | 1 + .../api/enums/rendering/EFogFalloff.java | 1 + .../enums/rendering/EHeightFogMixMode.java | 1 + .../api/enums/rendering/EHeightFogMode.java | 1 + .../api/enums/rendering/ERendererMode.java | 7 ++- .../api/enums/rendering/ETransparency.java | 2 + .../EDhApiDistantGeneratorMode.java | 1 + .../worldGeneration/EDhApiLevelType.java | 1 + .../EDhApiWorldGenerationStep.java | 1 + .../api/interfaces/IDhApiUnsafeWrapper.java | 1 + .../interfaces/block/IDhApiBiomeWrapper.java | 1 + .../block/IDhApiBlockStateWrapper.java | 1 + .../api/interfaces/config/IDhApiConfig.java | 1 + .../interfaces/config/IDhApiConfigGroup.java | 1 + .../interfaces/config/IDhApiConfigValue.java | 1 + .../both/IDhApiWorldGenerationConfig.java | 1 + .../config/client/IDhApiDebuggingConfig.java | 1 + .../config/client/IDhApiFarFogConfig.java | 1 + .../config/client/IDhApiFogConfig.java | 1 + .../config/client/IDhApiGpuBuffersConfig.java | 1 + .../config/client/IDhApiGraphicsConfig.java | 1 + .../config/client/IDhApiHeightFogConfig.java | 1 + .../config/client/IDhApiLoggingConfig.java | 1 + .../client/IDhApiMultiThreadingConfig.java | 1 + .../client/IDhApiMultiplayerConfig.java | 1 + .../client/IDhApiNoiseTextureConfig.java | 1 + .../data/IDhApiTerrainDataRepo.java | 1 + .../events/IDhApiEventInjector.java | 1 + .../override/IDhApiOverrideable.java | 1 + .../AbstractDhApiChunkWorldGenerator.java | 1 + .../worldGenerator/IDhApiWorldGenerator.java | 7 +-- .../IDhApiWorldGeneratorOverrideRegister.java | 1 + .../interfaces/render/IDhApiRenderProxy.java | 1 + .../world/IDhApiDimensionTypeWrapper.java | 1 + .../interfaces/world/IDhApiLevelWrapper.java | 1 + .../interfaces/world/IDhApiWorldProxy.java | 1 + .../methods/events/DhApiEventRegister.java | 1 + .../abstractEvents/DhApiAfterDhInitEvent.java | 1 + .../abstractEvents/DhApiAfterRenderEvent.java | 1 + .../DhApiBeforeDhInitEvent.java | 1 + .../DhApiBeforeRenderEvent.java | 1 + .../DhApiChunkModifiedEvent.java | 1 + .../abstractEvents/DhApiLevelLoadEvent.java | 1 + .../abstractEvents/DhApiLevelUnloadEvent.java | 1 + .../interfaces/IDhApiCancelableEvent.java | 1 + .../events/interfaces/IDhApiEvent.java | 1 + .../events/interfaces/IDhApiOneTimeEvent.java | 2 + .../DhApiCancelableEventParam.java | 6 +- .../DhApiEventParam.java | 6 +- .../DhApiRenderParam.java | 1 + .../DhApiWorldGeneratorOverrideRegister.java | 1 + .../api/objects/DhApiResult.java | 1 + .../api/objects/config/DhApiConfigValue.java | 1 + .../api/objects/data/DhApiRaycastResult.java | 1 + .../objects/data/DhApiTerrainDataPoint.java | 1 + .../api/objects/math/DhApiVec3i.java | 1 + .../core/generation/BatchGenerator.java | 4 -- .../core/render/glObject/GLState.java | 2 + 75 files changed, 145 insertions(+), 28 deletions(-) diff --git a/api/src/main/java/com/seibel/distanthorizons/api/DhApi.java b/api/src/main/java/com/seibel/distanthorizons/api/DhApi.java index 392e2206f..5abdee02b 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/DhApi.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/DhApi.java @@ -28,6 +28,7 @@ import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IOverri * * @author James Seibel * @version 2023-6-29 + * @since API 1.0.0 */ public class DhApi { @@ -38,25 +39,35 @@ public class DhApi * Bind a custom {@link DhApiAfterDhInitEvent DhApiAfterDhInitEvent} * to {@link DhApi#events ApiCoreInjectors.events} in order to be notified when this class can * be safely used. + * + * @since API 1.0.0 */ public static class Delayed { - /** Used to interact with Distant Horizons' Configs. */ + /** + * Used to interact with Distant Horizons' Configs. + * @since API 1.0.0 + */ public static IDhApiConfig configs = null; /** * Used to interact with Distant Horizons' terrain data. * Designed to be used in conjunction with {@link DhApi.Delayed#worldProxy}. + * @since API 1.0.0 */ public static IDhApiTerrainDataRepo terrainRepo = null; /** * Used to interact with Distant Horizons' currently loaded world. * Designed to be used in conjunction with {@link DhApi.Delayed#terrainRepo}. + * @since API 1.0.0 */ public static IDhApiWorldProxy worldProxy = null; - /** Used to interact with Distant Horizons' rendering system. */ + /** + * Used to interact with Distant Horizons' rendering system. + * @since API 1.0.0 + */ public static IDhApiRenderProxy renderProxy = null; } @@ -64,33 +75,58 @@ public class DhApi // always available // - /** Used to bind/unbind Distant Horizons Api events. */ + /** + * Used to bind/unbind Distant Horizons Api events. + * @since API 1.0.0 + */ public static final IDhApiEventInjector events = ApiEventInjector.INSTANCE; - /** Used to bind/unbind Distant Horizons Api events. */ + /** + * Used to bind/unbind Distant Horizons Api events. + * @since API 1.0.0 + */ public static final IDhApiWorldGeneratorOverrideRegister worldGenOverrides = DhApiWorldGeneratorOverrideRegister.INSTANCE; - /** Used to bind overrides to change Distant Horizons' core behavior. */ + /** + * Used to bind overrides to change Distant Horizons' core behavior. + * @since API 1.0.0 + */ public static final IOverrideInjector overrides = OverrideInjector.INSTANCE; - /** This version should only be updated when breaking changes are introduced to the Distant Horizons API. */ + /** + * This version should only be updated when breaking changes are introduced to the Distant Horizons API. + * @since API 1.0.0 + */ public static int getApiMajorVersion() { return ModInfo.API_MAJOR_VERSION; } - /** This version should be updated whenever new methods are added to the Distant Horizons API. */ + /** + * This version should be updated whenever new methods are added to the Distant Horizons API. + * @since API 1.0.0 + */ public static int getApiMinorVersion() { return ModInfo.API_MINOR_VERSION; } - /** This version should be updated whenever non-breaking fixes are added to the Distant Horizons API. */ + /** + * This version should be updated whenever non-breaking fixes are added to the Distant Horizons API. + * @since API 1.0.0 + */ public static int getApiPatchVersion() { return ModInfo.API_PATH_VERSION; } /** * Returns the mod's semantic version number in the format: Major.Minor.Patch * with optional extensions "-a" for alpha, "-b" for beta, and -dev for unstable development builds.
* Examples: "1.6.9-a", "1.7.0-a-dev", "2.1.0-b", "3.0.0", "3.1.4-dev" + * @since API 1.0.0 */ public static String getModVersion() { return ModInfo.VERSION; } - /** Returns true if the mod is a development version, false if it is a release version. */ + /** + * Returns true if the mod is a development version, false if it is a release version. + * @since API 1.0.0 + */ public static boolean getIsDevVersion() { return ModInfo.IS_DEV_BUILD; } - /** Returns the network protocol version. */ + /** + * Returns the network protocol version. + * @since API 1.0.0 + */ public static int getNetworkProtocolVersion() { return ModInfo.PROTOCOL_VERSION; } } diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/EDhApiDetailLevel.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/EDhApiDetailLevel.java index 8fcd01335..6a1e53bf7 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/EDhApiDetailLevel.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/EDhApiDetailLevel.java @@ -16,6 +16,7 @@ package com.seibel.distanthorizons.api.enums; * * @author James Seibel * @version 2022-12-5 + * @since API 1.0.0 */ public enum EDhApiDetailLevel { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EBlocksToAvoid.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EBlocksToAvoid.java index 3e511d0c8..df9bcff19 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EBlocksToAvoid.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EBlocksToAvoid.java @@ -22,6 +22,8 @@ package com.seibel.distanthorizons.api.enums.config; /** * NONE,
* NON_COLLIDING,
+ * + * @since API 1.0.0 */ public enum EBlocksToAvoid { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EGpuUploadMethod.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EGpuUploadMethod.java index 92e01c46a..05fb10b4a 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EGpuUploadMethod.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EGpuUploadMethod.java @@ -29,6 +29,7 @@ package com.seibel.distanthorizons.api.enums.config; * @author Leetom * @author James Seibel * @version 2022-7-2 + * @since API 1.0.0 */ public enum EGpuUploadMethod { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EHorizontalQuality.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EHorizontalQuality.java index 631f3d260..820c5e2eb 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EHorizontalQuality.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EHorizontalQuality.java @@ -25,6 +25,8 @@ package com.seibel.distanthorizons.api.enums.config; * MEDIUM
* HIGH
* UNLIMITED
+ * + * @since API 1.0.0 */ public enum EHorizontalQuality { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELightGenerationMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELightGenerationMode.java index 491b25676..c521a1f99 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELightGenerationMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELightGenerationMode.java @@ -25,6 +25,7 @@ package com.seibel.distanthorizons.api.enums.config; * * @author Leetom * @version 2023-6-7 + * @since API 1.0.0 */ public enum ELightGenerationMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELodShading.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELodShading.java index 2c14a8874..0ef8e17b5 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELodShading.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELodShading.java @@ -23,6 +23,8 @@ package com.seibel.distanthorizons.api.enums.config; * MINECRAFT
* OLD_LIGHTING
* NONE
+ * + * @since API 1.0.0 */ public enum ELodShading { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELoggerMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELoggerMode.java index c5a331ce6..1b3a53253 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELoggerMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/ELoggerMode.java @@ -21,6 +21,9 @@ package com.seibel.distanthorizons.api.enums.config; import org.apache.logging.log4j.Level; +/** + * @since API 1.0.0 + */ public enum ELoggerMode { DISABLED(Level.OFF, Level.OFF), diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EMaxHorizontalResolution.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EMaxHorizontalResolution.java index 6da20b471..50e40d3f0 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EMaxHorizontalResolution.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EMaxHorizontalResolution.java @@ -34,6 +34,7 @@ import com.seibel.distanthorizons.coreapi.util.MathUtil; * @author James Seibel * @author Leonardo Amato * @version 2023-6-14 + * @since API 1.0.0 */ public enum EMaxHorizontalResolution { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EOverdrawPrevention.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EOverdrawPrevention.java index 3a522e4a3..5a9cbc0c0 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EOverdrawPrevention.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EOverdrawPrevention.java @@ -23,7 +23,9 @@ package com.seibel.distanthorizons.api.enums.config; * NONE
* LIGHT
* MEDIUM
- * HEAVY

+ * HEAVY
+ * + * @since API 1.0.0 */ public enum EOverdrawPrevention { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EServerFolderNameMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EServerFolderNameMode.java index 33c95714d..d06ceb577 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EServerFolderNameMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EServerFolderNameMode.java @@ -30,6 +30,7 @@ package com.seibel.distanthorizons.api.enums.config; * * @author James Seibel * @version 2022-7-1 + * @since API 1.0.0 */ public enum EServerFolderNameMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EVerticalQuality.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EVerticalQuality.java index 7b92feb82..21e25517e 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EVerticalQuality.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EVerticalQuality.java @@ -30,6 +30,7 @@ import com.seibel.distanthorizons.coreapi.util.MathUtil; * * @author Leonardo Amato * @version 2023-2-5 + * @since API 1.0.0 */ public enum EVerticalQuality { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EQualityPreset.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EQualityPreset.java index 76ed6ca5c..0dc2fe139 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EQualityPreset.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EQualityPreset.java @@ -29,6 +29,8 @@ import com.seibel.distanthorizons.api.enums.config.DisallowSelectingViaConfigGui * MEDIUM,
* HIGH,
* EXTREME,
+ * + * @since API 1.0.0 */ public enum EQualityPreset { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EThreadPreset.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EThreadPreset.java index ab85d17c9..baf06b4d7 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EThreadPreset.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/quickOptions/EThreadPreset.java @@ -28,7 +28,8 @@ import com.seibel.distanthorizons.api.enums.config.DisallowSelectingViaConfigGui * LOW_IMPACT,
* BALANCED,
* AGGRESSIVE,
- * I_PAID_FOR_THE_WHOLE_CPU,
+ * + * @since API 1.0.0 */ public enum EThreadPreset { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EDebugRendering.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EDebugRendering.java index b66cc3c10..7f4678e6c 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EDebugRendering.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EDebugRendering.java @@ -29,6 +29,7 @@ package com.seibel.distanthorizons.api.enums.rendering; * @author Leetom * @author James Seibel * @version 2023-6-7 + * @since API 1.0.0 */ public enum EDebugRendering { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogColorMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogColorMode.java index 0c9fa7ab2..94b423a5d 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogColorMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogColorMode.java @@ -25,6 +25,7 @@ package com.seibel.distanthorizons.api.enums.rendering; * * @author James Seibel * @version 2022-6-9 + * @since API 1.0.0 */ public enum EFogColorMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDistance.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDistance.java index 0656c38c3..be26bf87d 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDistance.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDistance.java @@ -20,10 +20,13 @@ package com.seibel.distanthorizons.api.enums.rendering; /** - * NEAR, FAR, or NEAR_AND_FAR. + * NEAR,
+ * FAR,
+ * NEAR_AND_FAR
* * @author James Seibel * @version 2022-6-2 + * @since API 1.0.0 */ public enum EFogDistance { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDrawMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDrawMode.java index 6dec26c37..18f0d35d1 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDrawMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogDrawMode.java @@ -26,6 +26,7 @@ package com.seibel.distanthorizons.api.enums.rendering; * * @author James Seibel * @version 2022-6-2 + * @since API 1.0.0 */ public enum EFogDrawMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogFalloff.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogFalloff.java index 384a290b8..782e9645b 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogFalloff.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EFogFalloff.java @@ -7,6 +7,7 @@ package com.seibel.distanthorizons.api.enums.rendering; * * @author Leetom * @version 2022-6-30 + * @since API 1.0.0 */ public enum EFogFalloff { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMixMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMixMode.java index 86df7c176..0098a85c5 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMixMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMixMode.java @@ -33,6 +33,7 @@ package com.seibel.distanthorizons.api.enums.rendering; * * @author Leetom * @version 2022-4-14 + * @since API 1.0.0 */ public enum EHeightFogMixMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMode.java index fee756f4c..8d3a8df68 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/EHeightFogMode.java @@ -29,6 +29,7 @@ package com.seibel.distanthorizons.api.enums.rendering; * * @author Leetom * @version 6-30-2022 + * @since API 1.0.0 */ public enum EHeightFogMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ERendererMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ERendererMode.java index 97412e103..f9fe686d0 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ERendererMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ERendererMode.java @@ -20,11 +20,12 @@ package com.seibel.distanthorizons.api.enums.rendering; /** - * Default - * Debug - * Disabled + * Default
+ * Debug
+ * Disabled
* * @version 2022-6-2 + * @since API 1.0.0 */ public enum ERendererMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ETransparency.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ETransparency.java index 6df20f7e0..e77a74ef9 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ETransparency.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/rendering/ETransparency.java @@ -23,6 +23,8 @@ package com.seibel.distanthorizons.api.enums.rendering; * DISABLED,
* FAKE,
* COMPLETE,
+ * + * @since API 1.0.0 */ public enum ETransparency { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiDistantGeneratorMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiDistantGeneratorMode.java index bd784589d..29229393e 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiDistantGeneratorMode.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiDistantGeneratorMode.java @@ -32,6 +32,7 @@ package com.seibel.distanthorizons.api.enums.worldGeneration; * @author James Seibel * @author Leonardo Amato * @version 2022-12-10 + * @since API 1.0.0 */ public enum EDhApiDistantGeneratorMode { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiLevelType.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiLevelType.java index f5312df34..59f51d195 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiLevelType.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiLevelType.java @@ -7,6 +7,7 @@ package com.seibel.distanthorizons.api.enums.worldGeneration; * * @author James Seibel * @version 2022-7-13 + * @since API 1.0.0 */ public enum EDhApiLevelType { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenerationStep.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenerationStep.java index 637ad2720..fcfb08d3a 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenerationStep.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/worldGeneration/EDhApiWorldGenerationStep.java @@ -14,6 +14,7 @@ package com.seibel.distanthorizons.api.enums.worldGeneration; * * @author James Seibel * @version 2023-4-20 + * @since API 1.0.0 */ public enum EDhApiWorldGenerationStep { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/IDhApiUnsafeWrapper.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/IDhApiUnsafeWrapper.java index dbc3b15f2..7e9cc1a76 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/IDhApiUnsafeWrapper.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/IDhApiUnsafeWrapper.java @@ -6,6 +6,7 @@ package com.seibel.distanthorizons.api.interfaces; * * @author James Seibel * @version 2023-6-17 + * @since API 1.0.0 */ public interface IDhApiUnsafeWrapper { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBiomeWrapper.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBiomeWrapper.java index eaba0a22c..44bcfa498 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBiomeWrapper.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBiomeWrapper.java @@ -26,6 +26,7 @@ import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper; * * @author James Seibel * @version 3-5-2022 + * @since API 1.0.0 */ public interface IDhApiBiomeWrapper extends IDhApiUnsafeWrapper { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBlockStateWrapper.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBlockStateWrapper.java index 41800c69c..db84e6485 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBlockStateWrapper.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/block/IDhApiBlockStateWrapper.java @@ -7,6 +7,7 @@ import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper; * * @author James Seibel * @version 2023-6-11 + * @since API 1.0.0 */ public interface IDhApiBlockStateWrapper extends IDhApiUnsafeWrapper { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfig.java index b46370159..2744a50ad 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfig.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.api.interfaces.config.client.*; * * @author James Seibel * @version 2023-6-14 + * @since API 1.0.0 */ public interface IDhApiConfig { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigGroup.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigGroup.java index 007afeb1c..e032c13c1 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigGroup.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigGroup.java @@ -8,6 +8,7 @@ import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindab * * @author James Seibel * @version 9-15-2022 + * @since API 1.0.0 */ public interface IDhApiConfigGroup extends IBindable { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue.java index e20ba66d4..fc91e534a 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/IDhApiConfigValue.java @@ -6,6 +6,7 @@ package com.seibel.distanthorizons.api.interfaces.config; * @param The data type of this config. * @author James Seibel * @version 2022-9-15 + * @since API 1.0.0 */ public interface IDhApiConfigValue { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/both/IDhApiWorldGenerationConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/both/IDhApiWorldGenerationConfig.java index b584961ff..8eb81bfe4 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/both/IDhApiWorldGenerationConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/both/IDhApiWorldGenerationConfig.java @@ -31,6 +31,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup; * * @author James Seibel * @version 2022-9-15 + * @since API 1.0.0 */ public interface IDhApiWorldGenerationConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiDebuggingConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiDebuggingConfig.java index 46f3981f9..39bd433ce 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiDebuggingConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiDebuggingConfig.java @@ -28,6 +28,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup; * * @author James Seibel * @version 2022-9-15 + * @since API 1.0.0 */ public interface IDhApiDebuggingConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFarFogConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFarFogConfig.java index b18f70ed7..01af00ba7 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFarFogConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFarFogConfig.java @@ -33,6 +33,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue; * * @author James Seibel * @version 2022-6-14 + * @since API 1.0.0 */ public interface IDhApiFarFogConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFogConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFogConfig.java index 123f5d09e..fc92bfcba 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFogConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiFogConfig.java @@ -35,6 +35,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue; * * @author James Seibel * @version 2022-6-14 + * @since API 1.0.0 */ public interface IDhApiFogConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGpuBuffersConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGpuBuffersConfig.java index 5ceca1acb..a4419338b 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGpuBuffersConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGpuBuffersConfig.java @@ -28,6 +28,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue; * * @author James Seibel * @version 2023-6-14 + * @since API 1.0.0 */ public interface IDhApiGpuBuffersConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGraphicsConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGraphicsConfig.java index 37db89542..c42e31bae 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGraphicsConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiGraphicsConfig.java @@ -31,6 +31,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup; * * @author James Seibel * @version 2023-6-14 + * @since API 1.0.0 */ public interface IDhApiGraphicsConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiHeightFogConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiHeightFogConfig.java index a7152f50f..5879813a8 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiHeightFogConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiHeightFogConfig.java @@ -34,6 +34,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue; * * @author James Seibel * @version 2022-6-14 + * @since API 1.0.0 */ public interface IDhApiHeightFogConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiLoggingConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiLoggingConfig.java index f35994a55..509aeff70 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiLoggingConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiLoggingConfig.java @@ -26,6 +26,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup; * * @author James Seibel * @version 2022-6-14 + * @since API 1.0.0 */ public interface IDhApiLoggingConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiThreadingConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiThreadingConfig.java index cadfe3be9..2cbbf1741 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiThreadingConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiThreadingConfig.java @@ -27,6 +27,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup; * * @author James Seibel * @version 2023-6-14 + * @since API 1.0.0 */ public interface IDhApiMultiThreadingConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiplayerConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiplayerConfig.java index 35f2bffab..3690c3f61 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiplayerConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiMultiplayerConfig.java @@ -28,6 +28,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigGroup; * * @author James Seibel * @version 2023-6-14 + * @since API 1.0.0 */ public interface IDhApiMultiplayerConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiNoiseTextureConfig.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiNoiseTextureConfig.java index bf490429d..e5954d36f 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiNoiseTextureConfig.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/config/client/IDhApiNoiseTextureConfig.java @@ -27,6 +27,7 @@ import com.seibel.distanthorizons.api.interfaces.config.IDhApiConfigValue; * * @author James Seibel * @version 2022-6-14 + * @since API 1.0.0 */ public interface IDhApiNoiseTextureConfig extends IDhApiConfigGroup { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/data/IDhApiTerrainDataRepo.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/data/IDhApiTerrainDataRepo.java index b2735b455..f2e9aaaf8 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/data/IDhApiTerrainDataRepo.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/data/IDhApiTerrainDataRepo.java @@ -12,6 +12,7 @@ import com.seibel.distanthorizons.api.objects.data.DhApiTerrainDataPoint; * * @author James Seibel * @version 2023-6-22 + * @since API 1.0.0 */ public interface IDhApiTerrainDataRepo { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/events/IDhApiEventInjector.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/events/IDhApiEventInjector.java index ff2e32dbd..79cdd31c0 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/events/IDhApiEventInjector.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/events/IDhApiEventInjector.java @@ -27,6 +27,7 @@ import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IDepend * * @author James Seibel * @version 2022-9-13 + * @since API 1.0.0 */ public interface IDhApiEventInjector extends IDependencyInjector { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/IDhApiOverrideable.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/IDhApiOverrideable.java index 9c732aea2..1736e52d7 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/IDhApiOverrideable.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/IDhApiOverrideable.java @@ -8,6 +8,7 @@ import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IOverri * * @author James Seibel * @version 2022-9-5 + * @since API 1.0.0 */ public interface IDhApiOverrideable extends IBindable { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/AbstractDhApiChunkWorldGenerator.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/AbstractDhApiChunkWorldGenerator.java index cbb274e75..2698c2d06 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/AbstractDhApiChunkWorldGenerator.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/AbstractDhApiChunkWorldGenerator.java @@ -13,6 +13,7 @@ import java.util.function.Consumer; /** * @author James Seibel * @version 2023-6-22 + * @since API 1.0.0 */ public abstract class AbstractDhApiChunkWorldGenerator implements Closeable, IDhApiOverrideable, IDhApiWorldGenerator { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator.java index badb0749f..572356810 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGenerator.java @@ -12,6 +12,7 @@ import java.util.function.Consumer; /** * @author James Seibel * @version 2023-6-22 + * @since API 1.0.0 */ public interface IDhApiWorldGenerator extends Closeable, IDhApiOverrideable { @@ -19,12 +20,6 @@ public interface IDhApiWorldGenerator extends Closeable, IDhApiOverrideable // parameters // //============// - /* - * Returns which thread chunk generation requests will be run on.
- * TODO: only {@link EDhApiWorldGenThreadMode#MULTI_THREADED} is implemented - */ - //EDhApiWorldGenThreadMode getThreadingMode(); - /** * Defines the smallest datapoint size that can be generated at a time.
* Minimum detail level is 0 (1 block)
diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGeneratorOverrideRegister.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGeneratorOverrideRegister.java index 4af1d8bd9..5067b1fbf 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGeneratorOverrideRegister.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/override/worldGenerator/IDhApiWorldGeneratorOverrideRegister.java @@ -8,6 +8,7 @@ import com.seibel.distanthorizons.api.objects.DhApiResult; * * @author James Seibel * @version 2022-12-10 + * @since API 1.0.0 */ public interface IDhApiWorldGeneratorOverrideRegister { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java index 3a0ec7c04..9bec3e19c 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/render/IDhApiRenderProxy.java @@ -26,6 +26,7 @@ import com.seibel.distanthorizons.api.objects.DhApiResult; * * @author James Seibel * @version 2023-2-8 + * @since API 1.0.0 */ public interface IDhApiRenderProxy { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiDimensionTypeWrapper.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiDimensionTypeWrapper.java index 25fcbcc9a..4910d68fc 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiDimensionTypeWrapper.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiDimensionTypeWrapper.java @@ -24,6 +24,7 @@ import com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper; /** * @author James Seibel * @version 2022-7-14 + * @since API 1.0.0 */ public interface IDhApiDimensionTypeWrapper extends IDhApiUnsafeWrapper { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiLevelWrapper.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiLevelWrapper.java index cf5f1afcf..8bd6d075f 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiLevelWrapper.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiLevelWrapper.java @@ -28,6 +28,7 @@ import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiLevelType; * * @author James Seibel * @version 2022-7-14 + * @since API 1.0.0 */ public interface IDhApiLevelWrapper extends IDhApiUnsafeWrapper { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiWorldProxy.java b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiWorldProxy.java index 81b42d04c..f3f7885be 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiWorldProxy.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/interfaces/world/IDhApiWorldProxy.java @@ -25,6 +25,7 @@ package com.seibel.distanthorizons.api.interfaces.world; * * @author James Seibel * @version 2022-11-20 + * @since API 1.0.0 */ public interface IDhApiWorldProxy { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/DhApiEventRegister.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/DhApiEventRegister.java index 4a355d30b..32a8d9b4e 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/DhApiEventRegister.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/DhApiEventRegister.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector; * * @author James Seibel * @version 2022-9-16 + * @since API 1.0.0 */ public class DhApiEventRegister { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java index 7af70d103..197908e31 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterDhInitEvent.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * * @author James Seibel * @version 2023-6-23 + * @since API 1.0.0 */ public abstract class DhApiAfterDhInitEvent implements IDhApiEvent, IDhApiOneTimeEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java index 08e36222e..b40d9d8f9 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiAfterRenderEvent.java @@ -12,6 +12,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * @author James Seibel * @version 2023-6-23 * @see DhApiRenderParam + * @since API 1.0.0 */ public abstract class DhApiAfterRenderEvent implements IDhApiEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java index f86a3ffa7..985b4198e 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeDhInitEvent.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * * @author James Seibel * @version 2023-6-23 + * @since API 1.0.0 */ public abstract class DhApiBeforeDhInitEvent implements IDhApiEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java index 3872fd1d0..176e02094 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiBeforeRenderEvent.java @@ -10,6 +10,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * * @author James Seibel * @version 2023-6-23 + * @since API 1.0.0 */ public abstract class DhApiBeforeRenderEvent implements IDhApiCancelableEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiChunkModifiedEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiChunkModifiedEvent.java index 0eed7f912..2b8e2d85c 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiChunkModifiedEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiChunkModifiedEvent.java @@ -14,6 +14,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * @author James Seibel * @version 2023-6-23 * @see IDhApiTerrainDataRepo + * @since API 1.0.0 */ public abstract class DhApiChunkModifiedEvent implements IDhApiEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelLoadEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelLoadEvent.java index a849d6aff..163af3932 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelLoadEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelLoadEvent.java @@ -10,6 +10,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * * @author James Seibel * @version 2023-6-23 + * @since API 1.0.0 */ public abstract class DhApiLevelLoadEvent implements IDhApiEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelUnloadEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelUnloadEvent.java index 529ba6905..479b8c16c 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelUnloadEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/abstractEvents/DhApiLevelUnloadEvent.java @@ -10,6 +10,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * * @author James Seibel * @version 2023-6-23 + * @since API 1.0.0 */ public abstract class DhApiLevelUnloadEvent implements IDhApiEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiCancelableEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiCancelableEvent.java index f95a314b0..b9f5737b2 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiCancelableEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiCancelableEvent.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp * * @author James Seibel * @version 2023-6-23 + * @since API 1.0.0 */ public interface IDhApiCancelableEvent extends IDhApiEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiEvent.java index 9ab1b9f2b..85ac64787 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiEvent.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindab * @param This is the datatype that will be passed into the event handler's method. * @author James Seibel * @version 2023-6-23 + * @since API 1.0.0 */ public interface IDhApiEvent extends IBindable { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiOneTimeEvent.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiOneTimeEvent.java index b866387ff..983e67719 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiOneTimeEvent.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/interfaces/IDhApiOneTimeEvent.java @@ -5,6 +5,8 @@ package com.seibel.distanthorizons.api.methods.events.interfaces; * An example of this would be initial setup methods, DH won't run its initial setup more than once.

* * If a handler is bound to a one time event after the event has been fired, the handler will immediately fire. + * + * @since API 1.0.0 */ public interface IDhApiOneTimeEvent extends IDhApiEvent { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiCancelableEventParam.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiCancelableEventParam.java index d1dcf2400..a7459d46f 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiCancelableEventParam.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiCancelableEventParam.java @@ -1,6 +1,10 @@ package com.seibel.distanthorizons.api.methods.events.sharedParameterObjects; -/** Extension of {@link DhApiEventParam} that allows the event to be canceled. */ +/** + * Extension of {@link DhApiEventParam} that allows the event to be canceled. + * + * @since API 1.0.0 + */ public class DhApiCancelableEventParam extends DhApiEventParam { public DhApiCancelableEventParam(T value) { super(value); } diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiEventParam.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiEventParam.java index 61b5bfc3f..e1e64a229 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiEventParam.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiEventParam.java @@ -2,7 +2,11 @@ package com.seibel.distanthorizons.api.methods.events.sharedParameterObjects; import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent; -/** Wraps the event parameter to allow for additional control over the event */ +/** + * Wraps the event parameter to allow for additional control over the event + * + * @since API 1.0.0 + */ public class DhApiEventParam { /** Depending on the {@link IDhApiEvent} this can be null. */ diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiRenderParam.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiRenderParam.java index 131eef5b8..34814e1f8 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiRenderParam.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/events/sharedParameterObjects/DhApiRenderParam.java @@ -7,6 +7,7 @@ import com.seibel.distanthorizons.coreapi.util.math.Mat4f; * * @author James Seibel * @version 2022-9-5 + * @since API 1.0.0 */ public class DhApiRenderParam { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/methods/override/DhApiWorldGeneratorOverrideRegister.java b/api/src/main/java/com/seibel/distanthorizons/api/methods/override/DhApiWorldGeneratorOverrideRegister.java index 5ad90f69b..aa4a6a5a3 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/methods/override/DhApiWorldGeneratorOverrideRegister.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/methods/override/DhApiWorldGeneratorOverrideRegister.java @@ -11,6 +11,7 @@ import com.seibel.distanthorizons.coreapi.DependencyInjection.WorldGeneratorInje * * @author James Seibel * @version 2022-12-10 + * @since API 1.0.0 */ public class DhApiWorldGeneratorOverrideRegister implements IDhApiWorldGeneratorOverrideRegister { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/objects/DhApiResult.java b/api/src/main/java/com/seibel/distanthorizons/api/objects/DhApiResult.java index 39afd289c..eb81bf263 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/objects/DhApiResult.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/objects/DhApiResult.java @@ -6,6 +6,7 @@ package com.seibel.distanthorizons.api.objects; * @param The payload type this result contains, can be Void if the result is just used to notify success/failure. * @author James Seibel * @version 2022-11-24 + * @since API 1.0.0 */ public class DhApiResult { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/objects/config/DhApiConfigValue.java b/api/src/main/java/com/seibel/distanthorizons/api/objects/config/DhApiConfigValue.java index 5c15b92fb..e1d16c485 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/objects/config/DhApiConfigValue.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/objects/config/DhApiConfigValue.java @@ -16,6 +16,7 @@ import com.seibel.distanthorizons.coreapi.util.converters.DefaultConverter; * @param The datatype Distant Horizons uses in the background; implementing developers can ignore this. * @author James Seibel * @version 2022-6-30 + * @since API 1.0.0 */ public class DhApiConfigValue implements IDhApiConfigValue { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiRaycastResult.java b/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiRaycastResult.java index 65a58116a..c2042ffd7 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiRaycastResult.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiRaycastResult.java @@ -9,6 +9,7 @@ import com.seibel.distanthorizons.coreapi.util.math.Vec3i; * * @author James Seibel * @version 2022-11-19 + * @since API 1.0.0 */ public class DhApiRaycastResult { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiTerrainDataPoint.java b/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiTerrainDataPoint.java index 0f5f40e33..776626e5b 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiTerrainDataPoint.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/objects/data/DhApiTerrainDataPoint.java @@ -8,6 +8,7 @@ import com.seibel.distanthorizons.api.interfaces.block.IDhApiBlockStateWrapper; * * @author James Seibel * @version 2022-11-13 + * @since API 1.0.0 */ public class DhApiTerrainDataPoint { diff --git a/api/src/main/java/com/seibel/distanthorizons/api/objects/math/DhApiVec3i.java b/api/src/main/java/com/seibel/distanthorizons/api/objects/math/DhApiVec3i.java index 79a3afdb6..9d9589dd0 100644 --- a/api/src/main/java/com/seibel/distanthorizons/api/objects/math/DhApiVec3i.java +++ b/api/src/main/java/com/seibel/distanthorizons/api/objects/math/DhApiVec3i.java @@ -25,6 +25,7 @@ package com.seibel.distanthorizons.api.objects.math; * * @author James Seibel * @version 2022-11-19 + * @since API 1.0.0 */ public class DhApiVec3i { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java index 85e263254..de282acd7 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java @@ -87,10 +87,6 @@ public class BatchGenerator implements IDhApiWorldGenerator // generator parameters // //======================// - // TODO implement -// @Override -// public EDhApiWorldGenThreadMode getThreadingMode() { return EDhApiWorldGenThreadMode.MULTI_THREADED; } - @Override public byte getSmallestDataDetailLevel() { return LodUtil.BLOCK_DETAIL_LEVEL; } @Override diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java index e3055723b..c0e6b05b3 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java @@ -97,6 +97,8 @@ public class GLState public void restore() { + // TODO this can cause issues if any of the values don't exist any more + GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, this.fbo); if (this.blend) { From e488cb8a4c393cf86f1201e25f4beb712364c647 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 17 Aug 2023 07:12:07 -0500 Subject: [PATCH 04/20] Add some additional error checking to ConfigFileHandling --- .../core/config/file/ConfigFileHandling.java | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java index b37a9af5d..040285de9 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java @@ -24,23 +24,23 @@ public class ConfigFileHandling private static final Logger LOGGER = ConfigBase.LOGGER; public final ConfigBase configBase; - public final Path ConfigPath; + public final Path configPath; public ConfigFileHandling(ConfigBase configBase) { this.configBase = configBase; - ConfigPath = SingletonInjector.INSTANCE.get(IMinecraftSharedWrapper.class) + configPath = SingletonInjector.INSTANCE.get(IMinecraftSharedWrapper.class) .getInstallationDirectory().toPath().resolve("config").resolve(this.configBase.modName + ".toml"); } /** Saves the entire config to the file */ public void saveToFile() { - CommentedFileConfig config = CommentedFileConfig.builder(ConfigPath.toFile()).build(); - if (!Files.exists(ConfigPath)) // Try to check if the config exists + CommentedFileConfig config = CommentedFileConfig.builder(configPath.toFile()).build(); + if (!Files.exists(configPath)) // Try to check if the config exists try { - Files.createFile(ConfigPath); + Files.createFile(configPath); } catch (IOException ex) { @@ -66,7 +66,7 @@ public class ConfigFileHandling catch (Exception e) { // If it fails to save, crash game - SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class).crashMinecraft("Failed to save config at [" + ConfigPath.toString() + "]", e); + SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class).crashMinecraft("Failed to save config at [" + configPath.toString() + "]", e); } config.close(); } @@ -77,11 +77,11 @@ public class ConfigFileHandling */ public void loadFromFile() { - CommentedFileConfig config = CommentedFileConfig.builder(ConfigPath.toFile()).build(); + CommentedFileConfig config = CommentedFileConfig.builder(configPath.toFile()).build(); // Attempt to load the file and if it fails then save config to file try { - if (Files.exists(ConfigPath)) + if (Files.exists(configPath)) config.load(); else { @@ -114,7 +114,7 @@ public class ConfigFileHandling catch (Exception e) { // If it fails to save, crash game - SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class).crashMinecraft("Failed to save config at [" + ConfigPath.toString() + "]", e); + SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class).crashMinecraft("Failed to save config at [" + configPath.toString() + "]", e); } config.close(); } @@ -125,7 +125,7 @@ public class ConfigFileHandling // Save an entry when only given the entry public void saveEntry(ConfigEntry entry) { - CommentedFileConfig config = CommentedFileConfig.builder(ConfigPath.toFile()).build(); + CommentedFileConfig config = CommentedFileConfig.builder(configPath.toFile()).build(); loadConfig(config); saveEntry(entry, config); config.save(); @@ -151,7 +151,7 @@ public class ConfigFileHandling // Loads an entry when only given the entry public void loadEntry(ConfigEntry entry) { - CommentedFileConfig config = CommentedFileConfig.builder(ConfigPath.toFile()).autosave().build(); + CommentedFileConfig config = CommentedFileConfig.builder(configPath.toFile()).autosave().build(); loadConfig(config); loadEntry(entry, config); config.close(); @@ -205,7 +205,7 @@ public class ConfigFileHandling // Creates the comment for an entry when only given the entry public void createComment(ConfigEntry entry) { - CommentedFileConfig config = CommentedFileConfig.builder(ConfigPath.toFile()).autosave().build(); + CommentedFileConfig config = CommentedFileConfig.builder(configPath.toFile()).autosave().build(); loadConfig(config); createComment(entry, config); config.close(); @@ -236,18 +236,27 @@ public class ConfigFileHandling System.out.println("Loading file failed because of this expectation:\n" + e); try { // Now try remaking the file and loading it - if (!ConfigPath.getParent().toFile().exists()) - Files.createDirectory(ConfigPath.getParent()); + if (!this.configPath.getParent().toFile().exists()) + { + Files.createDirectory(this.configPath.getParent()); + } else - Files.deleteIfExists(ConfigPath); - Files.createFile(ConfigPath); + { + boolean fileDeleted = Files.deleteIfExists(this.configPath); + if (!fileDeleted) + { + System.err.println("Unable to delete config at path: ["+this.configPath+"]"); + } + } + + Files.createFile(this.configPath); config.load(); } catch (IOException ex) { System.out.println("Creating file failed"); ex.printStackTrace(); - SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class).crashMinecraft("Loading file and resetting config file failed at path [" + ConfigPath + "]. Please check the file is ok and you have the permissions", ex); + SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class).crashMinecraft("Loading file and resetting config file failed at path [" + configPath + "]. Please check the file is ok and you have the permissions", ex); } } } From 7dc054c1dd2ecf34bc8578876370e48d2c64616e Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 17 Aug 2023 07:23:08 -0500 Subject: [PATCH 05/20] potentially reduce OpenGL errors when restoring GLStates --- .../core/render/glObject/GLState.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java index c0e6b05b3..0f1c803e7 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java @@ -29,14 +29,15 @@ public class GLState public int vbo; public int ebo; public int fbo; - public int text; - public int activeTex; - public int text0; + public int texture2D; + /** IE: GL_TEXTURE0, GL_TEXTURE1, etc. */ + public int activeTextureNumber; + public int texture0; public boolean blend; public int blendSrc; public int blendDst; public boolean depth; - public boolean depthWrite; + public boolean writeToDepthBuffer; public int depthFunc; public boolean stencil; public int stencilFunc; @@ -57,16 +58,16 @@ public class GLState this.vbo = GL32.glGetInteger(GL32.GL_ARRAY_BUFFER_BINDING); this.ebo = GL32.glGetInteger(GL32.GL_ELEMENT_ARRAY_BUFFER_BINDING); this.fbo = GL32.glGetInteger(GL32.GL_FRAMEBUFFER_BINDING); - this.text = GL32.glGetInteger(GL32.GL_TEXTURE_BINDING_2D); - this.activeTex = GL32.glGetInteger(GL32.GL_ACTIVE_TEXTURE); + this.texture2D = GL32.glGetInteger(GL32.GL_TEXTURE_BINDING_2D); + this.activeTextureNumber = GL32.glGetInteger(GL32.GL_ACTIVE_TEXTURE); GL32.glActiveTexture(GL32.GL_TEXTURE0); - this.text0 = GL32.glGetInteger(GL32.GL_TEXTURE_BINDING_2D); - GL32.glActiveTexture(this.activeTex); + this.texture0 = GL32.glGetInteger(GL32.GL_TEXTURE_BINDING_2D); + GL32.glActiveTexture(this.activeTextureNumber); this.blend = GL32.glIsEnabled(GL32.GL_BLEND); this.blendSrc = GL32.glGetInteger(GL32.GL_BLEND_SRC); this.blendDst = GL32.glGetInteger(GL32.GL_BLEND_DST); this.depth = GL32.glIsEnabled(GL32.GL_DEPTH_TEST); - this.depthWrite = GL32.glGetInteger(GL32.GL_DEPTH_WRITEMASK) == GL32.GL_TRUE; + this.writeToDepthBuffer = GL32.glGetInteger(GL32.GL_DEPTH_WRITEMASK) == GL32.GL_TRUE; this.depthFunc = GL32.glGetInteger(GL32.GL_DEPTH_FUNC); this.stencil = GL32.glIsEnabled(GL32.GL_STENCIL_TEST); this.stencilFunc = GL32.glGetInteger(GL32.GL_STENCIL_FUNC); @@ -84,7 +85,7 @@ public class GLState { return "GLState{" + "prog=" + this.prog + ", vao=" + this.vao + ", vbo=" + this.vbo + ", ebo=" + this.ebo + ", fbo=" + this.fbo + - ", text=" + GLEnums.getString(this.text) + "@" + this.activeTex + ", text0=" + GLEnums.getString(this.text0) + + ", text=" + GLEnums.getString(this.texture2D) + "@" + this.activeTextureNumber + ", text0=" + GLEnums.getString(this.texture0) + ", blend=" + this.blend + ", blendMode=" + GLEnums.getString(this.blendSrc) + "," + GLEnums.getString(this.blendDst) + ", depth=" + this.depth + ", depthFunc=" + GLEnums.getString(this.depthFunc) + ", stencil=" + this.stencil + ", stencilFunc=" + @@ -97,9 +98,7 @@ public class GLState public void restore() { - // TODO this can cause issues if any of the values don't exist any more - - GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, this.fbo); + GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, GL32.glIsFramebuffer(this.fbo) ? this.fbo : 0); if (this.blend) { GL32.glEnable(GL32.GL_BLEND); @@ -110,15 +109,16 @@ public class GLState } GL32.glActiveTexture(GL32.GL_TEXTURE0); - GL32.glBindTexture(GL32.GL_TEXTURE_2D, this.text0); - GL32.glActiveTexture(this.activeTex); - GL32.glBindTexture(GL32.GL_TEXTURE_2D, this.text); - GL32.glBindVertexArray(this.vao); + GL32.glBindTexture(GL32.GL_TEXTURE_2D, GL32.glIsTexture(this.texture0) ? this.texture0 : 0); + GL32.glActiveTexture(this.activeTextureNumber); + + GL32.glBindTexture(GL32.GL_TEXTURE_2D, GL32.glIsTexture(this.texture2D) ? this.texture2D : 0); + GL32.glBindVertexArray(GL32.glIsVertexArray(this.vao) ? this.vao : 0); GL32.glBindBuffer(GL32.GL_ARRAY_BUFFER, this.vbo); GL32.glBindBuffer(GL32.GL_ELEMENT_ARRAY_BUFFER, this.ebo); - GL32.glUseProgram(this.prog); + GL32.glUseProgram(GL32.glIsProgram(this.prog) ? this.prog : 0); - GL32.glDepthMask(this.depthWrite); + GL32.glDepthMask(this.writeToDepthBuffer); GL32.glBlendFunc(this.blendSrc, this.blendDst); if (this.depth) { From 4969d2362dbc7314826d5eb8238beabfb03addea Mon Sep 17 00:00:00 2001 From: coolGi Date: Thu, 17 Aug 2023 23:16:51 +0930 Subject: [PATCH 06/20] Removed if statement for deleting config file --- .../core/config/file/ConfigFileHandling.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java index 040285de9..bd1310f03 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java @@ -40,6 +40,10 @@ public class ConfigFileHandling if (!Files.exists(configPath)) // Try to check if the config exists try { + if (!this.configPath.getParent().toFile().exists()) + { + Files.createDirectory(this.configPath.getParent()); + } Files.createFile(configPath); } catch (IOException ex) @@ -240,15 +244,14 @@ public class ConfigFileHandling { Files.createDirectory(this.configPath.getParent()); } - else + + boolean fileDeleted = Files.deleteIfExists(this.configPath); + if (!fileDeleted) { - boolean fileDeleted = Files.deleteIfExists(this.configPath); - if (!fileDeleted) - { - System.err.println("Unable to delete config at path: ["+this.configPath+"]"); - } + System.err.println("Unable to delete config at path: [" + this.configPath + "]"); } + Files.createFile(this.configPath); config.load(); } From 26b6e19753c808ede1a50aa4ed70b665833c992a Mon Sep 17 00:00:00 2001 From: coolGi Date: Thu, 17 Aug 2023 23:21:55 +0930 Subject: [PATCH 07/20] Temporary "fix" for ant water --- .../core/render/renderer/LodRenderer.java | 10 ++++------ core/src/main/resources/shaders/fog/fog.frag | 3 ++- core/src/main/resources/shaders/ssao/apply-frag.frag | 3 ++- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java index ee57e425e..9a9c46c5f 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java @@ -30,8 +30,7 @@ import com.seibel.distanthorizons.core.render.glObject.GLProxy; import com.seibel.distanthorizons.core.render.glObject.GLState; import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer; import com.seibel.distanthorizons.core.render.glObject.buffer.QuadElementBuffer; -import com.seibel.distanthorizons.core.render.renderer.shaders.FogShader; -import com.seibel.distanthorizons.core.render.renderer.shaders.SSAORenderer; +import com.seibel.distanthorizons.core.render.renderer.shaders.*; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.RenderUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; @@ -255,12 +254,11 @@ public class LodRenderer if (Config.Client.Advanced.Graphics.Quality.ssao.get()) { - // broken, causes renderer to crash - // TODO remove duplicate SSAO shader - //SSAOShader.INSTANCE.render(partialTicks); // For some reason this looks slightly different :/ - profiler.popPush("LOD SSAO"); SSAORenderer.INSTANCE.render(partialTicks); + + // TODO: Fix this file (or check the result is the same) so that SSAORenderer could be deleted + //SSAOShader.INSTANCE.render(partialTicks); // For some reason this looks slightly different :/ } diff --git a/core/src/main/resources/shaders/fog/fog.frag b/core/src/main/resources/shaders/fog/fog.frag index 8d44028df..9ec282886 100644 --- a/core/src/main/resources/shaders/fog/fog.frag +++ b/core/src/main/resources/shaders/fog/fog.frag @@ -84,7 +84,8 @@ void main() // a fragment depth of "1" means the fragment wasn't drawn to, // we only want to apply Fog to LODs, not to the sky outside the LODs - if (fragmentDepth != 1.0) + // FIXME: This bit of code causes problems on intel integrated graphics + if (fragmentDepth != -420.0) // Should be `1.0`, but set to `-420.0` both so that the compiler doesnt mess with rest of the code, and it always returns true { if (fullFogMode == 0) { diff --git a/core/src/main/resources/shaders/ssao/apply-frag.frag b/core/src/main/resources/shaders/ssao/apply-frag.frag index b183fefbd..03bb09f18 100644 --- a/core/src/main/resources/shaders/ssao/apply-frag.frag +++ b/core/src/main/resources/shaders/ssao/apply-frag.frag @@ -13,7 +13,8 @@ void main() float fragmentDepth = texture(gDepthMap, TexCoord).r; // a fragment depth of "1" means the fragment wasn't drawn to, // we only want to apply SSAO to LODs, not to the sky outside the LODs - if (fragmentDepth != 1.0) + // FIXME: This bit of code causes problems on intel integrated graphics + if (fragmentDepth != -420.0) // Should be `1.0`, but set to `-420.0` both so that the compiler doesnt mess with rest of the code, and it always returns true { fragColor = vec4(0.0, 0.0, 0.0, 1-texture(gSSAOMap, TexCoord).r); } From ff7e945b078407aa60c04685fbb000a668443a70 Mon Sep 17 00:00:00 2001 From: coolGi Date: Thu, 17 Aug 2023 23:25:18 +0930 Subject: [PATCH 08/20] Changed config file deletion error message, to info --- .../distanthorizons/core/config/file/ConfigFileHandling.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java index bd1310f03..facc37d89 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java @@ -246,10 +246,7 @@ public class ConfigFileHandling } boolean fileDeleted = Files.deleteIfExists(this.configPath); - if (!fileDeleted) - { - System.err.println("Unable to delete config at path: [" + this.configPath + "]"); - } + System.out.println("File at [" + this.configPath + "] was " + (fileDeleted? "": "not ") + "able to be deleted."); Files.createFile(this.configPath); From ceb0c215c52ad5b2dbccbc58a61515b20a018ef6 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 17 Aug 2023 10:34:54 -0400 Subject: [PATCH 09/20] shader cleanup initial --- core/src/main/resources/shaders/curve.vert | 47 +++++++++---------- .../main/resources/shaders/flat_shaded.frag | 35 +++++--------- core/src/main/resources/shaders/fog/fog.frag | 24 ++++------ .../main/resources/shaders/noise/noise.frag | 35 +++++--------- core/src/main/resources/shaders/ssao/ao.frag | 28 ++++------- .../resources/shaders/ssao/apply-frag.frag | 6 +-- core/src/main/resources/shaders/standard.vert | 3 +- 7 files changed, 70 insertions(+), 108 deletions(-) diff --git a/core/src/main/resources/shaders/curve.vert b/core/src/main/resources/shaders/curve.vert index a5ea716a2..5228831c7 100644 --- a/core/src/main/resources/shaders/curve.vert +++ b/core/src/main/resources/shaders/curve.vert @@ -29,7 +29,7 @@ uniform float earthRadius; */ void main() { - vPos = vec4(vPosition.x, vPosition.y, vPosition.z, vPosition.w); // This is so it can be passed to the fragment shader + vPos = vPosition.x; // This is so it can be passed to the fragment shader vertexWorldPos = vPosition.xyz + modelOffset; @@ -52,36 +52,35 @@ void main() vertexWorldPos.y += my; vertexWorldPos.z += mz; - // Old (disabled) vertex transformation logic - Leetom #if 0 + // Old (disabled) vertex transformation logic - Leetom - // Calculate the vertex pos due to curvature of the earth - // We use spherical coordinates to calculate the vertex position - if(vertexWorldPos.x == 0.0 && vertexWorldPos.z == 0.0) - { - // In the center. No curvature needed - } - else - { - float theta = atan(vertexWorldPos.z, vertexWorldPos.x); // in radians (-pi, pi) - float trueY = earthRadius + vertexWorldPos.y; // true Y position, or height - float phi = sqrt(vertexWorldPos.z * vertexWorldPos.z + vertexWorldPos.x * vertexWorldPos.x) / trueY; - // Convert spherical coordinates to cartesian coordinates - vertexWorldPos.x = trueY * sin(phi) * cos(theta); - vertexWorldPos.z = trueY * sin(phi) * sin(theta); - vertexWorldPos.y = trueY * cos(phi) - earthRadius; - } + // Calculate the vertex pos due to curvature of the earth + // We use spherical coordinates to calculate the vertex position + //if (vertexWorldPos.x == 0.0 && vertexWorldPos.z == 0.0) + //{ + // // In the center. No curvature needed + //} + //else + //{ + float theta = atan(vertexWorldPos.z, vertexWorldPos.x); // in radians (-pi, pi) + float trueY = earthRadius + vertexWorldPos.y; // true Y position, or height + float phi = sqrt(vertexWorldPos.z * vertexWorldPos.z + vertexWorldPos.x * vertexWorldPos.x) / trueY; + // Convert spherical coordinates to cartesian coordinates + vertexWorldPos.x = trueY * sin(phi) * cos(theta); + vertexWorldPos.z = trueY * sin(phi) * sin(theta); + vertexWorldPos.y = trueY * cos(phi) - earthRadius; + //} #else - // new vertex transformation logic - stduhpf + // new vertex transformation logic - stduhpf - float localRadius = earthRadius + vertexYPos;// vertexWorldPos.y + cameraPosition.y - Center_Y; + float localRadius = earthRadius + vertexYPos;// vertexWorldPos.y + cameraPosition.y - Center_Y; - float phi = length(vertexWorldPos.xz) / localRadius; - - vertexWorldPos.y += (cos(phi) - 1.) * localRadius; - vertexWorldPos.xz = vertexWorldPos.xz * sin(phi) / phi; + float phi = length(vertexWorldPos.xz) / localRadius; + vertexWorldPos.y += (cos(phi) - 1.0) * localRadius; + vertexWorldPos.xz = vertexWorldPos.xz * sin(phi) / phi; #endif uint lights = meta & 0xFFu; diff --git a/core/src/main/resources/shaders/flat_shaded.frag b/core/src/main/resources/shaders/flat_shaded.frag index f3bbdedb1..28109a009 100644 --- a/core/src/main/resources/shaders/flat_shaded.frag +++ b/core/src/main/resources/shaders/flat_shaded.frag @@ -18,8 +18,9 @@ uniform int noiseDropoff; // method definitions float fade(float value, float start, float end) { - return (clamp(value,start,end)-start)/(end-start); + return (clamp(value, start, end) - start) / (end - start); } + // The random functions for diffrent dimentions float rand(float co) { return fract(sin(co*(91.3458)) * 47453.5453); } float rand(vec2 co){ return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); } @@ -50,6 +51,7 @@ vec3 RGB2HSV(vec3 c) { float e = 1.0e-10; return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); } + vec3 HSV2RGB(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); @@ -74,15 +76,10 @@ void main() if (noiseEnabled) { vec3 vertexNormal = normalize(cross(dFdx(vPos.xyz), dFdy(vPos.xyz))); // This bit of code is required to fix the vertex position problem cus of floats in the verted world position varuable - vec3 fixedVPos = vec3( - vPos.x - vertexNormal.x * 0.001, - vPos.y - vertexNormal.y * 0.001, - vPos.z - vertexNormal.z * 0.001 - ); + vec3 fixedVPos = vPos.xyz - vertexNormal * 0.001; - - float noiseAmplification = noiseIntensity / 100; - noiseAmplification = (-1 * pow(2*((fragColor.x + fragColor.y + fragColor.z) / 3) - 1, 2) + 1) * noiseAmplification; // Lessen the effect on depending on how dark the object is, equasion for this is -(2x-1)^{2}+1 + float noiseAmplification = noiseIntensity * 0.01; + noiseAmplification = (-1.0 * pow(2.0*((fragColor.x + fragColor.y + fragColor.z) / 3.0) - 1.0, 2.0) + 1.0) * noiseAmplification; // Lessen the effect on depending on how dark the object is, equasion for this is -(2x-1)^{2}+1 noiseAmplification *= fragColor.w; // The effect would lessen on transparent objects // Random value for each position @@ -91,30 +88,20 @@ void main() quantize(fixedVPos.y, noiseSteps), quantize(fixedVPos.z, noiseSteps) )) - * 2. * noiseAmplification - noiseAmplification; + * 2.0 * noiseAmplification - noiseAmplification; // Modifies the color // A value of 0 on the randomValue will result in the original color, while a value of 1 will result in a fully bright color - vec3 newCol = fragColor.rgb + (vec3(1.0) - fragColor.rgb) * randomValue; + vec3 newCol = fragColor.rgb + (1.0 - fragColor.rgb) * randomValue; // Clamps it and turns it back into a vec4 if (noiseDropoff == 0) - fragColor = vec4( - clamp(newCol.r, 0., 1.), - clamp(newCol.g, 0., 1.), - clamp(newCol.b, 0., 1.), - fragColor.w - ); + fragColor = vec4(clamp(newCol.rgb, 0.0, 1.0), fragColor.w); else fragColor = mix( - vec4( - clamp(newCol.r, 0., 1.), - clamp(newCol.g, 0., 1.), - clamp(newCol.b, 0., 1.), - fragColor.w - ), fragColor, - clamp(length(vertexWorldPos) / noiseDropoff, 0., 1.) // The further away it gets, the less noise gets applied + vec4(clamp(newCol.rgb, 0.0, 1.0), fragColor.w), fragColor, + min(length(vertexWorldPos) / noiseDropoff, 1.0) // The further away it gets, the less noise gets applied ); // For testing diff --git a/core/src/main/resources/shaders/fog/fog.frag b/core/src/main/resources/shaders/fog/fog.frag index 9ec282886..fe29c3d23 100644 --- a/core/src/main/resources/shaders/fog/fog.frag +++ b/core/src/main/resources/shaders/fog/fog.frag @@ -59,16 +59,12 @@ float mod(float x, int y) { vec3 calcViewPosition(float fragmentDepth) { - vec4 ndc = vec4( - TexCoord.x * 2.0 - 1.0, - TexCoord.y * 2.0 - 1.0, - fragmentDepth * 2.0 - 1.0, - 1.0 - ); + vec4 ndc = vec4(TexCoord.xy, fragmentDepth, 1.0); + ndc.xyz = ndc.xyz * 2.0 - 1.0; + // TODO: This inverse() should be moved CPU side vec4 eyeCoord = inverse(gMvmProj) * ndc; - vec3 cameraPos = eyeCoord.xyz / eyeCoord.w; - return cameraPos; + return eyeCoord.xyz / eyeCoord.w; } /** @@ -85,7 +81,7 @@ void main() // a fragment depth of "1" means the fragment wasn't drawn to, // we only want to apply Fog to LODs, not to the sky outside the LODs // FIXME: This bit of code causes problems on intel integrated graphics - if (fragmentDepth != -420.0) // Should be `1.0`, but set to `-420.0` both so that the compiler doesnt mess with rest of the code, and it always returns true + if (fragmentDepth < 0.99999) { if (fullFogMode == 0) { @@ -99,17 +95,15 @@ void main() float nearFogThickness = getNearFogThickness(horizontalDist); float farFogThickness = getFarFogThickness(farDist); float heightFogThickness = getHeightFogThickness(heightDist); - float mixedFogThickness = - clamp( - mixFogThickness(nearFogThickness, farFogThickness, heightFogThickness) - , 0.0, 1.0); + float mixedFogThickness = mixFogThickness(nearFogThickness, farFogThickness, heightFogThickness) + mixedFogThickness = clamp(mixedFogThickness, 0.0, 1.0); - fragColor = vec4(fogColor.r, fogColor.g, fogColor.b, mixedFogThickness); + fragColor = vec4(fogColor.rgb, mixedFogThickness); } else if (fullFogMode == 1) { // render everything with the fog color - fragColor = vec4(fogColor.r, fogColor.g, fogColor.b, 1.0); + fragColor = vec4(fogColor.rgb, 1.0); } else { diff --git a/core/src/main/resources/shaders/noise/noise.frag b/core/src/main/resources/shaders/noise/noise.frag index 4eeff968c..9ae668cbe 100644 --- a/core/src/main/resources/shaders/noise/noise.frag +++ b/core/src/main/resources/shaders/noise/noise.frag @@ -26,6 +26,10 @@ float quantize(float val, int stepSize) { return floor(val*stepSize)/stepSize; } +vec3 quantize(vec3 val, int stepSize) { + return floor(val*stepSize)/stepSize; +} + // The modulus function dosnt exist in GLSL so I made my own // To speed up the mod function, this only accepts full numbers for y float mod(float x, int y) { @@ -44,11 +48,7 @@ float mod(float x, int y) { void main() { // This bit of code is required to fix the vertex position problem cus of floats in the verted world position varuable vec3 vertexNormal = normalize(cross(dFdx(vPos.xyz), dFdy(vPos.xyz))); - vec3 fixedVPos = vec3( - vPos.x - vertexNormal.x * 0.001, - vPos.y - vertexNormal.y * 0.001, - vPos.z - vertexNormal.z * 0.001 - ); + vec3 fixedVPos = vPos.xyz - vertexNormal * 0.001; float noiseAmplification = noiseIntensity / 100; @@ -56,29 +56,20 @@ void main() { noiseAmplification *= vertexColor.w; // The effect would lessen on transparent objects // Random value for each position - float randomValue = rand(vec3( - quantize(fixedVPos.x, noiseSteps), - quantize(fixedVPos.y, noiseSteps), - quantize(fixedVPos.z, noiseSteps) - )) - * 2. * noiseAmplification - noiseAmplification; + float randomValue = rand(quantize(fixedVPos.xyz, noiseSteps)) + * 2.0 * noiseAmplification - noiseAmplification; // Modifies the color // A value of 0 on the randomValue will result in the original color, while a value of 1 will result in a fully bright color - vec3 newCol = (vec3(1.0) - vertexColor.rgb) * randomValue; + vec3 newCol = (1.0 - vertexColor.rgb) * randomValue; // Clamps it and turns it back into a vec4 - fragColor = vec4( - clamp(newCol.r, 0., 1.), - clamp(newCol.g, 0., 1.), - clamp(newCol.b, 0., 1.), - clamp(length(vertexWorldPos) * distanceScale * noiseDropoff, 0., 1.) // The further away it gets, the less noise gets applied - ); - fragColor = vec4( - 0f, 0f, 0f, - randomValue // The further away it gets, the less noise gets applied - ); + float distA = length(vertexWorldPos) * distanceScale * noiseDropoff; + fragColor = clamp(vec4(newCol.rgb, distA), 0.0, 1.0); // The further away it gets, the less noise gets applied + + // The further away it gets, the less noise gets applied + fragColor = vec4(0.0, 0.0, 0.0, randomValue); // For testing // if (vertexColor.r != 69420.) { diff --git a/core/src/main/resources/shaders/ssao/ao.frag b/core/src/main/resources/shaders/ssao/ao.frag index 15f648764..c791b458b 100644 --- a/core/src/main/resources/shaders/ssao/ao.frag +++ b/core/src/main/resources/shaders/ssao/ao.frag @@ -17,40 +17,30 @@ uniform vec3 gKernel[MAX_KERNEL_SIZE]; vec3 calcViewPosition(vec2 coords) { float fragmentDepth = texture(gDepthMap, coords).r; + vec4 ndc = vec4(coords.xy, fragmentDepth, 1.0); + ndc.xyz = ndc.xyz * 2.0 - 1.0; - vec4 ndc = vec4( - coords.x * 2.0 - 1.0, - coords.y * 2.0 - 1.0, - fragmentDepth * 2.0 - 1.0, - 1.0 - ); - + // TODO: This inverse() call should be moved CPU side vec4 vs_pos = inverse(gProj) * ndc; - vs_pos.xyz = vs_pos.xyz / vs_pos.w; - return vs_pos.xyz; + return vs_pos.xyz / vs_pos.w; } void main() { vec3 viewPos = calcViewPosition(TexCoord); - vec3 viewNormal = normalize(cross(dFdy(viewPos.xyz), dFdx(viewPos.xyz)) * -1.0); + vec3 viewNormal = normalize(cross(dFdx(viewPos.xyz), dFdy(viewPos.xyz))); - vec3 randomVec = vec3( - 0.0, - -1.0, - 0.0 - ); + vec3 randomVec = vec3(0.0, -1.0, 0.0); vec3 tangent = normalize(randomVec - viewNormal * dot(randomVec, viewNormal)); vec3 bitangent = cross(viewNormal, tangent); mat3 TBN = mat3(tangent, bitangent, viewNormal); + float occlusion_factor = 0.0; for (int i = 0; i < MAX_KERNEL_SIZE; i++) { - vec3 samplePos = vec3(0.0) + (TBN * gKernel[i]); - samplePos = viewPos + samplePos * gSampleRad; + vec3 samplePos = TBN * gKernel[i] * gSampleRad; - vec4 offset = vec4(samplePos, 1.0); - offset = gProj * offset; + vec4 offset = gProj * vec4(samplePos + viewPos, 1.0); offset.xy /= offset.w; offset.xy = offset.xy * HALF_2 + HALF_2; diff --git a/core/src/main/resources/shaders/ssao/apply-frag.frag b/core/src/main/resources/shaders/ssao/apply-frag.frag index 03bb09f18..5c1ec38ca 100644 --- a/core/src/main/resources/shaders/ssao/apply-frag.frag +++ b/core/src/main/resources/shaders/ssao/apply-frag.frag @@ -13,9 +13,9 @@ void main() float fragmentDepth = texture(gDepthMap, TexCoord).r; // a fragment depth of "1" means the fragment wasn't drawn to, // we only want to apply SSAO to LODs, not to the sky outside the LODs - // FIXME: This bit of code causes problems on intel integrated graphics - if (fragmentDepth != -420.0) // Should be `1.0`, but set to `-420.0` both so that the compiler doesnt mess with rest of the code, and it always returns true + if (fragmentDepth < 0.99999) { - fragColor = vec4(0.0, 0.0, 0.0, 1-texture(gSSAOMap, TexCoord).r); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor.a -= textureLod(gSSAOMap, TexCoord, 0).r; } } diff --git a/core/src/main/resources/shaders/standard.vert b/core/src/main/resources/shaders/standard.vert index 364bd1722..c7e446cf8 100644 --- a/core/src/main/resources/shaders/standard.vert +++ b/core/src/main/resources/shaders/standard.vert @@ -29,7 +29,7 @@ uniform float mircoOffset; */ void main() { - vPos = vec4(vPosition.x, vPosition.y, vPosition.z, vPosition.w); // This is so it can be passed to the fragment shader + vPos = vPosition; // This is so it can be passed to the fragment shader vertexWorldPos = vPosition.xyz + modelOffset; @@ -54,6 +54,7 @@ void main() float light2 = (mod(float(lights), 16.0)+0.5) / 16.0; float light = (float(lights/16u)+0.5) / 16.0; vertexColor = vec4(texture(lightMap, vec2(light, light2)).xyz, 1.0); + if (!whiteWorld) { vertexColor *= color; From 4563e4872eb343060744f5387af31787568bc799 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 17 Aug 2023 11:19:38 -0400 Subject: [PATCH 10/20] shader syntax fix --- core/src/main/resources/shaders/fog/fog.frag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/shaders/fog/fog.frag b/core/src/main/resources/shaders/fog/fog.frag index fe29c3d23..b5000241a 100644 --- a/core/src/main/resources/shaders/fog/fog.frag +++ b/core/src/main/resources/shaders/fog/fog.frag @@ -95,7 +95,7 @@ void main() float nearFogThickness = getNearFogThickness(horizontalDist); float farFogThickness = getFarFogThickness(farDist); float heightFogThickness = getHeightFogThickness(heightDist); - float mixedFogThickness = mixFogThickness(nearFogThickness, farFogThickness, heightFogThickness) + float mixedFogThickness = mixFogThickness(nearFogThickness, farFogThickness, heightFogThickness); mixedFogThickness = clamp(mixedFogThickness, 0.0, 1.0); fragColor = vec4(fogColor.rgb, mixedFogThickness); From be1d13e6ad66cab6ac07fccf7263c362913f8759 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 17 Aug 2023 12:08:45 -0400 Subject: [PATCH 11/20] cpu projection inverse --- .../core/render/renderer/shaders/SSAOShader.java | 4 ++-- core/src/main/resources/shaders/ssao/ao.frag | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java index 305c7fe34..32c2a1c5a 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java @@ -46,9 +46,9 @@ public class SSAOShader extends AbstractShaderRenderer MC_RENDER.getTargetFrameBufferViewportWidth() / (float) MC_RENDER.getTargetFrameBufferViewportHeight(), RenderUtil.getNearClipPlaneDistanceInBlocks(partialTicks), (float) ((RenderUtil.getFarClipPlaneDistanceInBlocks() + LodUtil.REGION_WIDTH) * Math.sqrt(2))); - - + this.shader.setUniform(this.shader.getUniformLocation("gProj"), perspective); + this.shader.setUniform(this.shader.getUniformLocation("gProjInv"), perspective.invert()); this.shader.setUniform(this.shader.getUniformLocation("gSampleRad"), 3.0f); this.shader.setUniform(this.shader.getUniformLocation("gFactor"), 0.8f); this.shader.setUniform(this.shader.getUniformLocation("gPower"), 1.0f); diff --git a/core/src/main/resources/shaders/ssao/ao.frag b/core/src/main/resources/shaders/ssao/ao.frag index c791b458b..f681cb0e8 100644 --- a/core/src/main/resources/shaders/ssao/ao.frag +++ b/core/src/main/resources/shaders/ssao/ao.frag @@ -9,6 +9,7 @@ uniform float gSampleRad; uniform float gFactor; uniform float gPower; uniform mat4 gProj; +uniform mat4 gProjInv; const int MAX_KERNEL_SIZE = 32; const float INV_MAX_KERNEL_SIZE_F = 1.0 / float(MAX_KERNEL_SIZE); @@ -20,8 +21,7 @@ vec3 calcViewPosition(vec2 coords) { vec4 ndc = vec4(coords.xy, fragmentDepth, 1.0); ndc.xyz = ndc.xyz * 2.0 - 1.0; - // TODO: This inverse() call should be moved CPU side - vec4 vs_pos = inverse(gProj) * ndc; + vec4 vs_pos = gProjInv * ndc; return vs_pos.xyz / vs_pos.w; } From ea5b19b4e71a6da604a2ac04d8573471d1ebea02 Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 17 Aug 2023 12:35:16 -0400 Subject: [PATCH 12/20] cpu projection inverse fog --- .../core/render/renderer/shaders/FogShader.java | 6 +++--- core/src/main/resources/shaders/fog/fog.frag | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java index 5abae934e..959077b85 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java @@ -49,7 +49,7 @@ public class FogShader extends AbstractShaderRenderer // because disabling fog can cause the GLSL to optimize out most (if not all) uniforms - this.gModelViewProjectionUniform = this.shader.tryGetUniformLocation("gMvmProj"); + this.gModelViewProjectionUniform = this.shader.tryGetUniformLocation("gMvmProjInv"); this.gDepthMapUniform = this.shader.tryGetUniformLocation("gDepthMap"); // Fog uniforms @@ -115,13 +115,13 @@ public class FogShader extends AbstractShaderRenderer return fogColor; } + private Color getSpecialFogColor(float partialTicks) { return MC_RENDER.getSpecialFogColor(partialTicks); } public void setModelViewProjectionMatrix(Mat4f combinedModelViewProjectionMatrix) { this.shader.bind(); - this.shader.setUniform(this.gModelViewProjectionUniform, combinedModelViewProjectionMatrix); + this.shader.setUniform(this.gModelViewProjectionUniform, combinedModelViewProjectionMatrix.invert()); this.shader.unbind(); } - } diff --git a/core/src/main/resources/shaders/fog/fog.frag b/core/src/main/resources/shaders/fog/fog.frag index b5000241a..6bf4b8467 100644 --- a/core/src/main/resources/shaders/fog/fog.frag +++ b/core/src/main/resources/shaders/fog/fog.frag @@ -5,7 +5,7 @@ out vec4 fragColor; uniform sampler2D gDepthMap; // model view matrix and projection matrix -uniform mat4 gMvmProj; +uniform mat4 gMvmProjInv; uniform float fogScale; uniform float fogVerticalScale; @@ -63,7 +63,7 @@ vec3 calcViewPosition(float fragmentDepth) ndc.xyz = ndc.xyz * 2.0 - 1.0; // TODO: This inverse() should be moved CPU side - vec4 eyeCoord = inverse(gMvmProj) * ndc; + vec4 eyeCoord = gMvmProjInv * ndc; return eyeCoord.xyz / eyeCoord.w; } From c75c830ab247f72756287aa1d37ff65e0594d39b Mon Sep 17 00:00:00 2001 From: NULL511 Date: Thu, 17 Aug 2023 13:06:37 -0400 Subject: [PATCH 13/20] revert cpu projection inverse fog --- .../core/render/renderer/shaders/FogShader.java | 6 +++--- core/src/main/resources/shaders/fog/fog.frag | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java index 959077b85..5abae934e 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java @@ -49,7 +49,7 @@ public class FogShader extends AbstractShaderRenderer // because disabling fog can cause the GLSL to optimize out most (if not all) uniforms - this.gModelViewProjectionUniform = this.shader.tryGetUniformLocation("gMvmProjInv"); + this.gModelViewProjectionUniform = this.shader.tryGetUniformLocation("gMvmProj"); this.gDepthMapUniform = this.shader.tryGetUniformLocation("gDepthMap"); // Fog uniforms @@ -115,13 +115,13 @@ public class FogShader extends AbstractShaderRenderer return fogColor; } - private Color getSpecialFogColor(float partialTicks) { return MC_RENDER.getSpecialFogColor(partialTicks); } public void setModelViewProjectionMatrix(Mat4f combinedModelViewProjectionMatrix) { this.shader.bind(); - this.shader.setUniform(this.gModelViewProjectionUniform, combinedModelViewProjectionMatrix.invert()); + this.shader.setUniform(this.gModelViewProjectionUniform, combinedModelViewProjectionMatrix); this.shader.unbind(); } + } diff --git a/core/src/main/resources/shaders/fog/fog.frag b/core/src/main/resources/shaders/fog/fog.frag index 6bf4b8467..b5000241a 100644 --- a/core/src/main/resources/shaders/fog/fog.frag +++ b/core/src/main/resources/shaders/fog/fog.frag @@ -5,7 +5,7 @@ out vec4 fragColor; uniform sampler2D gDepthMap; // model view matrix and projection matrix -uniform mat4 gMvmProjInv; +uniform mat4 gMvmProj; uniform float fogScale; uniform float fogVerticalScale; @@ -63,7 +63,7 @@ vec3 calcViewPosition(float fragmentDepth) ndc.xyz = ndc.xyz * 2.0 - 1.0; // TODO: This inverse() should be moved CPU side - vec4 eyeCoord = gMvmProjInv * ndc; + vec4 eyeCoord = inverse(gMvmProj) * ndc; return eyeCoord.xyz / eyeCoord.w; } From 155648035bbdb51d0e52056ad0cede492e62abc3 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 17 Aug 2023 20:56:35 -0500 Subject: [PATCH 14/20] fix SSAO rendering --- .../render/renderer/shaders/SSAOShader.java | 1 - core/src/main/resources/shaders/fog/fog.frag | 8 +++++-- core/src/main/resources/shaders/ssao/ao.frag | 23 ++++++++++++------- .../resources/shaders/ssao/apply-frag.frag | 10 +++++--- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java index 32c2a1c5a..ce357c140 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/SSAOShader.java @@ -48,7 +48,6 @@ public class SSAOShader extends AbstractShaderRenderer (float) ((RenderUtil.getFarClipPlaneDistanceInBlocks() + LodUtil.REGION_WIDTH) * Math.sqrt(2))); this.shader.setUniform(this.shader.getUniformLocation("gProj"), perspective); - this.shader.setUniform(this.shader.getUniformLocation("gProjInv"), perspective.invert()); this.shader.setUniform(this.shader.getUniformLocation("gSampleRad"), 3.0f); this.shader.setUniform(this.shader.getUniformLocation("gFactor"), 0.8f); this.shader.setUniform(this.shader.getUniformLocation("gPower"), 1.0f); diff --git a/core/src/main/resources/shaders/fog/fog.frag b/core/src/main/resources/shaders/fog/fog.frag index b5000241a..a9f317700 100644 --- a/core/src/main/resources/shaders/fog/fog.frag +++ b/core/src/main/resources/shaders/fog/fog.frag @@ -80,8 +80,7 @@ void main() // a fragment depth of "1" means the fragment wasn't drawn to, // we only want to apply Fog to LODs, not to the sky outside the LODs - // FIXME: This bit of code causes problems on intel integrated graphics - if (fragmentDepth < 0.99999) + if (fragmentDepth < 1) { if (fullFogMode == 0) { @@ -118,6 +117,11 @@ void main() fragColor = vec4(vec3(depthValue), 1.0); // Convert depth value to grayscale color } } + else + { + // every pixel needs to be set to something, otherwise the pixel may be undefined by some drivers (specifically Intel) + fragColor = vec4(0.0, 0.0, 0.0, 0.0); + } } diff --git a/core/src/main/resources/shaders/ssao/ao.frag b/core/src/main/resources/shaders/ssao/ao.frag index f681cb0e8..33be6a37d 100644 --- a/core/src/main/resources/shaders/ssao/ao.frag +++ b/core/src/main/resources/shaders/ssao/ao.frag @@ -9,7 +9,6 @@ uniform float gSampleRad; uniform float gFactor; uniform float gPower; uniform mat4 gProj; -uniform mat4 gProjInv; const int MAX_KERNEL_SIZE = 32; const float INV_MAX_KERNEL_SIZE_F = 1.0 / float(MAX_KERNEL_SIZE); @@ -18,17 +17,23 @@ uniform vec3 gKernel[MAX_KERNEL_SIZE]; vec3 calcViewPosition(vec2 coords) { float fragmentDepth = texture(gDepthMap, coords).r; - vec4 ndc = vec4(coords.xy, fragmentDepth, 1.0); - ndc.xyz = ndc.xyz * 2.0 - 1.0; - vec4 vs_pos = gProjInv * ndc; - return vs_pos.xyz / vs_pos.w; + vec4 ndc = vec4( + coords.x * 2.0 - 1.0, + coords.y * 2.0 - 1.0, + fragmentDepth * 2.0 - 1.0, + 1.0 + ); + + vec4 vs_pos = inverse(gProj) * ndc; + vs_pos.xyz = vs_pos.xyz / vs_pos.w; + return vs_pos.xyz; } void main() { vec3 viewPos = calcViewPosition(TexCoord); - vec3 viewNormal = normalize(cross(dFdx(viewPos.xyz), dFdy(viewPos.xyz))); + vec3 viewNormal = normalize(cross(dFdy(viewPos.xyz), dFdx(viewPos.xyz)) * -1.0); vec3 randomVec = vec3(0.0, -1.0, 0.0); @@ -37,8 +42,10 @@ void main() mat3 TBN = mat3(tangent, bitangent, viewNormal); float occlusion_factor = 0.0; - for (int i = 0; i < MAX_KERNEL_SIZE; i++) { - vec3 samplePos = TBN * gKernel[i] * gSampleRad; + for (int i = 0; i < MAX_KERNEL_SIZE; i++) + { + vec3 samplePos = vec3(0.0) + (TBN * gKernel[i]); + samplePos = viewPos + samplePos * gSampleRad; vec4 offset = gProj * vec4(samplePos + viewPos, 1.0); offset.xy /= offset.w; diff --git a/core/src/main/resources/shaders/ssao/apply-frag.frag b/core/src/main/resources/shaders/ssao/apply-frag.frag index 5c1ec38ca..534306c50 100644 --- a/core/src/main/resources/shaders/ssao/apply-frag.frag +++ b/core/src/main/resources/shaders/ssao/apply-frag.frag @@ -13,9 +13,13 @@ void main() float fragmentDepth = texture(gDepthMap, TexCoord).r; // a fragment depth of "1" means the fragment wasn't drawn to, // we only want to apply SSAO to LODs, not to the sky outside the LODs - if (fragmentDepth < 0.99999) + if (fragmentDepth < 1) { - fragColor = vec4(0.0, 0.0, 0.0, 1.0); - fragColor.a -= textureLod(gSSAOMap, TexCoord, 0).r; + fragColor = vec4(0.0, 0.0, 0.0, 1-texture(gSSAOMap, TexCoord).r); + } + else + { + // every pixel needs to be set to something, otherwise the pixel may be undefined by some drivers (specifically Intel) + fragColor = vec4(0.0, 0.0, 0.0, 0.0); } } From 3784458cbab0fcf05ac483280cdb5198f4ae3d45 Mon Sep 17 00:00:00 2001 From: Builderb0y Date: Fri, 18 Aug 2023 01:58:11 +0000 Subject: [PATCH 15/20] Fix wrong position being calculated and used for block colors (and possibly other things). --- .../transformers/FullDataToRenderDataTransformer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java index aa807a998..d344048c1 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java @@ -226,8 +226,8 @@ public class FullDataToRenderDataTransformer int hash = columnArrayView.getDataHash(); SingleColumnFullDataAccessor fullArrayView = chunkDataView.get(ox * dataToSourceScale, oz * dataToSourceScale); convertColumnData(level, - sourceBlockX + sourceDataPointBlockWidth * relSourceX * dataToSourceScale, - sourceBlockZ + sourceDataPointBlockWidth * relSourceZ * dataToSourceScale, + sourceBlockX + sourceDataPointBlockWidth * relSourceX, + sourceBlockZ + sourceDataPointBlockWidth * relSourceZ, columnArrayView, fullArrayView, 2); changed |= hash != columnArrayView.getDataHash(); } From 8809fa88ced189c91886c85a17c0657da8292f11 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 17 Aug 2023 21:21:49 -0500 Subject: [PATCH 16/20] Fix incorrect vPos in curve.vert, thanks Null! --- core/src/main/resources/shaders/curve.vert | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/resources/shaders/curve.vert b/core/src/main/resources/shaders/curve.vert index 5228831c7..5db053d1e 100644 --- a/core/src/main/resources/shaders/curve.vert +++ b/core/src/main/resources/shaders/curve.vert @@ -29,7 +29,7 @@ uniform float earthRadius; */ void main() { - vPos = vPosition.x; // This is so it can be passed to the fragment shader + vPos = vPosition; // This is so it can be passed to the fragment shader vertexWorldPos = vPosition.xyz + modelOffset; From c80136719dfbf227a5de5343ab322a9a431dfd59 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 17 Aug 2023 22:17:50 -0500 Subject: [PATCH 17/20] Temporary fix to ConfigFileHandling crashing when creating the file --- .../core/config/file/ConfigFileHandling.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java index facc37d89..119948819 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java @@ -10,6 +10,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSha import org.apache.logging.log4j.Logger; import java.io.IOException; +import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; @@ -249,7 +250,12 @@ public class ConfigFileHandling System.out.println("File at [" + this.configPath + "] was " + (fileDeleted? "": "not ") + "able to be deleted."); - Files.createFile(this.configPath); + try + { + Files.createFile(this.configPath); + } + catch (FileAlreadyExistsException ignore) { /* temporary fix due to windows/Intellij issues either locking or changing the permissions of the file */ } + config.load(); } catch (IOException ex) From 11ec8b1eaa0cab4da08e08e028cd3a152327e85d Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 18 Aug 2023 07:47:18 -0500 Subject: [PATCH 18/20] Fix Render data attempting to recreate files on setting change --- .../file/renderfile/RenderMetaDataFile.java | 18 ++++++++++++++++++ .../renderfile/RenderSourceFileHandler.java | 7 +++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderMetaDataFile.java b/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderMetaDataFile.java index e7dc376e9..7362e7df4 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderMetaDataFile.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderMetaDataFile.java @@ -80,6 +80,24 @@ public class RenderMetaDataFile extends AbstractMetaDataContainerFile implements // constructor // //=============// + /** + * Can be used instead of {@link RenderMetaDataFile#createFromExistingFile} or {@link RenderMetaDataFile#createNewFileForPos}, + * if we are uncertain whether a file exists or not. + */ + public static RenderMetaDataFile createFromExistingOrNewFile(RenderSourceFileHandler fileHandler, DhSectionPos pos) throws IOException + { + File file = fileHandler.computeRenderFilePath(pos); + if (file.exists()) + { + return createFromExistingFile(fileHandler, file); + } + else + { + return createNewFileForPos(fileHandler, pos); + } + } + + /** * NOTE: should only be used if there is NOT an existing file. * diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderSourceFileHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderSourceFileHandler.java index 5f6e7feb1..8e3613e34 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderSourceFileHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/renderfile/RenderSourceFileHandler.java @@ -310,12 +310,11 @@ public class RenderSourceFileHandler implements ILodRenderSourceProvider return null; } - // File does not exist, create it. - // In this case, since 'creating' a file object doesn't actually do anything heavy on IO yet, we use CAS - // to avoid overhead of 'synchronized', and eat the mini-overhead of possibly creating duplicate objects. + // File probably doesn't exist, try creating it. try { - metaFile = RenderMetaDataFile.createNewFileForPos(this, pos); + // createFromExistingOrNewFile is due to a rare issue where the file may already exist but isn't in the file list + metaFile = RenderMetaDataFile.createFromExistingOrNewFile(this, pos); } catch (IOException e) { From 123f17288c587546b33d6481a430e95d329dd7b1 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 18 Aug 2023 07:47:51 -0500 Subject: [PATCH 19/20] Temporary config file permission exception suppression --- .../core/config/file/ConfigFileHandling.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java index 119948819..1d9b6dfb6 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandling.java @@ -10,6 +10,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSha import org.apache.logging.log4j.Logger; import java.io.IOException; +import java.nio.file.AccessDeniedException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; @@ -246,8 +247,12 @@ public class ConfigFileHandling Files.createDirectory(this.configPath.getParent()); } - boolean fileDeleted = Files.deleteIfExists(this.configPath); - System.out.println("File at [" + this.configPath + "] was " + (fileDeleted? "": "not ") + "able to be deleted."); + try + { + boolean fileDeleted = Files.deleteIfExists(this.configPath); + System.out.println("File at [" + this.configPath + "] was " + (fileDeleted ? "" : "not ") + "able to be deleted."); + } + catch (AccessDeniedException ignored) { /* temporary fix due to windows/Intellij issues either locking or changing the permissions of the file */ } try From c7ac9faccd4a68de38919fff2aab5ac9bda580e9 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 18 Aug 2023 07:51:05 -0500 Subject: [PATCH 20/20] Fix preset configs not applying after the UI screen changes --- .../AbstractPresetConfigEventHandler.java | 96 ++++++++++++++----- .../wrapperInterfaces/config/IConfigGui.java | 11 +++ 2 files changed, 85 insertions(+), 22 deletions(-) create mode 100644 core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/config/IConfigGui.java diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java index 36b103c49..53f0dd9cf 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java @@ -2,6 +2,8 @@ package com.seibel.distanthorizons.core.config.eventHandlers.presets; import com.seibel.distanthorizons.core.config.ConfigEntryWithPresetOptions; import com.seibel.distanthorizons.core.config.listeners.IConfigListener; +import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; +import com.seibel.distanthorizons.core.wrapperInterfaces.config.IConfigGui; import com.seibel.distanthorizons.coreapi.interfaces.config.IConfigEntry; import com.seibel.distanthorizons.coreapi.util.StringUtil; import org.apache.logging.log4j.LogManager; @@ -12,23 +14,43 @@ import java.util.*; public abstract class AbstractPresetConfigEventHandler> implements IConfigListener { private static final Logger LOGGER = LogManager.getLogger(); - private static final long MS_DELAY_BEFORE_APPLYING_PRESET = 1_000; + private static final long MS_DELAY_BEFORE_APPLYING_PRESET = 3_000; + + private static IConfigGui configGui = SingletonInjector.INSTANCE.get(IConfigGui.class); + private static boolean guiListenersAdded = false; protected final ArrayList> configList = new ArrayList<>(); /** this timer is used so each preset isn't applied while a user is clicking through the config options */ - protected Timer presetApplicationTimer; + protected Timer applyPresetTimer = null; + /** the enum to apply after the timer expires or the UI screen changes. */ + protected TPresetEnum waitingPresetEnum = null; protected boolean changingPreset = false; + //=============// + // constructor // + //=============// + + public AbstractPresetConfigEventHandler() + { + configGui.addOnScreenChangeListener(() -> this.onConfigUiClosed()); + } + + + + //=========// + // methods // + //=========// + /** * Set the UI only config based on what is set in the file.
* This should only be called once. */ public void setUiOnlyConfigValues() { - TPresetEnum currentQualitySetting = this.getCurrentQualityPreset(); + TPresetEnum currentQualitySetting = this.getCurrentPreset(); this.getPresetConfigEntry().set(currentQualitySetting); } @@ -40,45 +62,66 @@ public abstract class AbstractPresetConfigEventHandler configEntry : this.configList) + // only continue if a preset was waiting to be applied + if (newPresetEnum == null) { - configEntry.updateConfigEntry(presetEnum); + return; } + + + LOGGER.info("changing preset to: " + newPresetEnum); + this.changingPreset = true; + + // update the controlled config values + for (ConfigEntryWithPresetOptions configEntry : this.configList) + { + configEntry.updateConfigEntry(newPresetEnum); + } + // update the preset value (required to make sure the UI value changes correctly after the UI page changes). + this.setUiOnlyConfigValues(); + this.changingPreset = false; - LOGGER.debug("preset active: " + presetEnum); + LOGGER.info("preset active: " + newPresetEnum); } - @Override public void onUiModify() { /* do nothing, we only care about modified config values */ } @@ -95,7 +138,7 @@ public abstract class AbstractPresetConfigEventHandler possiblePresetSet = new HashSet<>(this.getPresetEnumList()); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/config/IConfigGui.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/config/IConfigGui.java new file mode 100644 index 000000000..eafb58ac3 --- /dev/null +++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/config/IConfigGui.java @@ -0,0 +1,11 @@ +package com.seibel.distanthorizons.core.wrapperInterfaces.config; + +import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable; + +public interface IConfigGui extends IBindable +{ + + void addOnScreenChangeListener(Runnable newListener); + void removeOnScreenChangeListener(Runnable oldListener); + +}