chunkList = new LinkedList<>();
- ProtoChunk chunk = new ProtoChunk(((ChunkPosWrapper) pos).getChunkPos(), UpgradeData.EMPTY);
+ ProtoChunk chunk = new ProtoChunk(((ChunkPosWrapper) pos).getChunkPos(), UpgradeData.EMPTY, serverWorld);
chunkList.add(chunk);
LodServerWorld lodServerWorld = new LodServerWorld(serverWorld, chunk);
@@ -202,17 +200,18 @@ public class WorldGeneratorWrapper extends AbstractWorldGeneratorWrapper
// generate the terrain (this is thread safe)
- ChunkStatus.EMPTY.generate(serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
+ ChunkStatus.EMPTY.generate(Executor, serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
// override the chunk status, so we can run the next generator stage
chunk.setStatus(ChunkStatus.STRUCTURE_REFERENCES);
chunkGen.createBiomes(serverWorld.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY), chunk);
- ChunkStatus.NOISE.generate(serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
- ChunkStatus.SURFACE.generate(serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
+ ChunkStatus.NOISE.generate(Executor, serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
+ // TODO[FABRIC]: Find whay this dosnt work
+ ChunkStatus.SURFACE.generate(Executor, serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
// this feature has been proven to be thread safe,
// so we will add it
- IceAndSnowFeature snowFeature = new IceAndSnowFeature(NoFeatureConfig.CODEC);
- snowFeature.place(lodServerWorld, chunkGen, serverWorld.random, chunk.getPos().getWorldPosition(), null);
+// SnowAndFreezeFeature snowFeature = new SnowAndFreezeFeature(NoFeatureConfig.CODEC);
+// snowFeature.place(lodServerWorld, chunkGen, serverWorld.random, chunk.getPos().getWorldPosition(), null);
lodBuilder.generateLodNodeFromChunk(lodDim, new ChunkWrapper(chunk), new LodBuilderConfig(DistanceGenerationMode.SURFACE));
@@ -220,8 +219,8 @@ public class WorldGeneratorWrapper extends AbstractWorldGeneratorWrapper
/*TODO if we want to use Biome utils and terrain utils for overworld
* lodBuilder.generateLodNodeFromChunk(lodDim, pos ,detailLevel, serverWorld.getSeed());*/
}
-
-
+
+
/**
* takes about 15 - 20 ms
*
@@ -231,25 +230,25 @@ public class WorldGeneratorWrapper extends AbstractWorldGeneratorWrapper
@Override
public void generateFeatures(AbstractChunkPosWrapper pos)
{
- /*
List chunkList = new LinkedList<>();
- ProtoChunk chunk = new ProtoChunk(((ChunkPosWrapper) pos).getChunkPos(), UpgradeData.EMPTY);
+ ProtoChunk chunk = new ProtoChunk(((ChunkPosWrapper) pos).getChunkPos(), UpgradeData.EMPTY, serverWorld);
chunkList.add(chunk);
LodServerWorld lodServerWorld = new LodServerWorld(serverWorld, chunk);
- ServerChunkProvider chunkSource = serverWorld.getChunkSource();
- ServerWorldLightManager lightEngine = (ServerWorldLightManager) serverWorld.getLightEngine();
- TemplateManager templateManager = serverWorld.getStructureManager();
- ChunkGenerator chunkGen = chunkSource.generator;
+ ServerChunkCache chunkSource = serverWorld.getChunkSource();
+ ThreadedLevelLightEngine lightEngine = (ThreadedLevelLightEngine) serverWorld.getLightEngine();
+ StructureManager templateManager = serverWorld.getStructureManager();
+ ChunkGenerator chunkGen = chunkSource.getGenerator();
// generate the terrain (this is thread safe)
- ChunkStatus.EMPTY.generate(serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
+ ChunkStatus.EMPTY.generate(Executor, serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
// override the chunk status, so we can run the next generator stage
chunk.setStatus(ChunkStatus.STRUCTURE_REFERENCES);
chunkGen.createBiomes(serverWorld.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY), chunk);
- ChunkStatus.NOISE.generate(serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
- ChunkStatus.SURFACE.generate(serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
+ ChunkStatus.NOISE.generate(Executor, serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
+ // TODO[FABRIC]: Find whay this dosnt work
+ ChunkStatus.SURFACE.generate(Executor, serverWorld, chunkGen, templateManager, lightEngine, null, chunkList);
// get all the biomes in the chunk
@@ -337,7 +336,6 @@ public class WorldGeneratorWrapper extends AbstractWorldGeneratorWrapper
// generate a Lod like normal
lodBuilder.generateLodNodeFromChunk(lodDim, new ChunkWrapper(chunk), new LodBuilderConfig(DistanceGenerationMode.FEATURES));
- */
}
diff --git a/fabric/src/main/java/net/minecraftforge/common/WorldWorkerManager.java b/fabric/src/main/java/net/minecraftforge/common/WorldWorkerManager.java
deleted file mode 100644
index 8d4eb0257..000000000
--- a/fabric/src/main/java/net/minecraftforge/common/WorldWorkerManager.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Minecraft Forge
- * Copyright (c) 2016-2021.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation version 2.1
- * of the License.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package net.minecraftforge.common;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class WorldWorkerManager
-{
- private static List workers = new ArrayList();
- private static long startTime = -1;
- private static int index = 0;
-
- public static void tick(boolean start)
- {
- if (start)
- {
- startTime = System.currentTimeMillis();
- return;
- }
-
- index = 0;
- IWorker task = getNext();
- if (task == null)
- return;
-
- long time = 50 - (System.currentTimeMillis() - startTime);
- if (time < 10)
- time = 10; //If ticks are lagging, give us at least 10ms to do something.
- time += System.currentTimeMillis();
-
- while (System.currentTimeMillis() < time && task != null)
- {
- boolean again = task.doWork();
-
- if (!task.hasWork())
- {
- remove(task);
- task = getNext();
- }
- else if (!again)
- {
- task = getNext();
- }
- }
- }
-
- public static synchronized void addWorker(IWorker worker)
- {
- workers.add(worker);
- }
-
- private static synchronized IWorker getNext()
- {
- return workers.size() > index ? workers.get(index++) : null;
- }
-
- private static synchronized void remove(IWorker worker)
- {
- workers.remove(worker);
- index--;
- }
-
- //Internal only, used to clear everything when the server shuts down.
- public static synchronized void clear()
- {
- workers.clear();
- }
-
- public static interface IWorker
- {
- boolean hasWork();
-
- /**
- * Perform a task, returning true from this will have the manager call this function again this tick if there is time left.
- * Returning false will skip calling this worker until next tick.
- */
- boolean doWork();
- }
-}
diff --git a/forge/src/main/java/com/seibel/lod/forge/ForgeConfig.java b/forge/src/main/java/com/seibel/lod/forge/ForgeConfig.java
index 1704f74c6..918918690 100644
--- a/forge/src/main/java/com/seibel/lod/forge/ForgeConfig.java
+++ b/forge/src/main/java/com/seibel/lod/forge/ForgeConfig.java
@@ -19,28 +19,14 @@
package com.seibel.lod.forge;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import org.apache.commons.lang3.tuple.Pair;
-
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
import com.electronwill.nightconfig.core.io.WritingMode;
import com.seibel.lod.core.ModInfo;
-import com.seibel.lod.core.enums.config.BlocksToAvoid;
-import com.seibel.lod.core.enums.config.BufferRebuildTimes;
-import com.seibel.lod.core.enums.config.DistanceGenerationMode;
-import com.seibel.lod.core.enums.config.GenerationPriority;
-import com.seibel.lod.core.enums.config.GpuUploadMethod;
-import com.seibel.lod.core.enums.config.HorizontalQuality;
-import com.seibel.lod.core.enums.config.HorizontalResolution;
-import com.seibel.lod.core.enums.config.HorizontalScale;
-import com.seibel.lod.core.enums.config.LodTemplate;
-import com.seibel.lod.core.enums.config.VanillaOverdraw;
-import com.seibel.lod.core.enums.config.VerticalQuality;
+import com.seibel.lod.core.enums.config.*;
import com.seibel.lod.core.enums.rendering.DebugMode;
+import com.seibel.lod.core.enums.rendering.FogColorMode;
import com.seibel.lod.core.enums.rendering.FogDistance;
-import com.seibel.lod.core.enums.rendering.FogDrawOverride;
+import com.seibel.lod.core.enums.rendering.FogDrawMode;
import com.seibel.lod.core.objects.MinDefaultMax;
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IAdvanced;
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IAdvanced.IBuffers;
@@ -51,15 +37,21 @@ import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.I
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.IFogQuality;
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.IQuality;
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IWorldGenerator;
-
import net.minecraftforge.common.ForgeConfigSpec;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.event.config.ModConfigEvent;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.logging.log4j.LogManager;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
/**
* This handles any configuration the user has access to.
* @author Leonardo Amato
* @author James Seibel
- * @version 11-16-2021
+ * @version 11-29-2021
*/
@Mod.EventBusSubscriber
public class ForgeConfig
@@ -78,16 +70,16 @@ public class ForgeConfig
// |-> Threads
// |-> Buffers
// |-> Debugging
-
-
-
+
+
+
public static class Client
{
public final Graphics graphics;
public final WorldGenerator worldGenerator;
- public final Advanced advanced;
-
-
+ public final AdvancedModOptions advancedModOptions;
+
+
//================//
// Client Configs //
//================//
@@ -97,160 +89,173 @@ public class ForgeConfig
{
graphics = new Graphics(builder);
worldGenerator = new WorldGenerator(builder);
- advanced = new Advanced(builder);
+ advancedModOptions = new AdvancedModOptions(builder);
}
builder.pop();
}
-
-
+
+
//==================//
// Graphics Configs //
//==================//
public static class Graphics
{
- public final Quality quality;
- public final FogQuality fogQuality;
- public final AdvancedGraphics advancedGraphics;
-
+ public final QualityOption qualityOption;
+ public final FogQualityOption fogQuality;
+ public final AdvancedGraphicsOption advancedGraphicsOption;
+
Graphics(ForgeConfigSpec.Builder builder)
{
builder.comment(IGraphics.DESC).push("Graphics");
{
- quality = new Quality(builder);
- advancedGraphics = new AdvancedGraphics(builder);
- fogQuality = new FogQuality(builder);
+ qualityOption = new QualityOption(builder);
+ advancedGraphicsOption = new AdvancedGraphicsOption(builder);
+ fogQuality = new FogQualityOption(builder);
}
builder.pop();
}
-
-
- public static class Quality
+
+
+ public static class QualityOption
{
public final ForgeConfigSpec.EnumValue drawResolution;
public final ForgeConfigSpec.IntValue lodChunkRenderDistance;
public final ForgeConfigSpec.EnumValue verticalQuality;
public final ForgeConfigSpec.EnumValue horizontalScale;
public final ForgeConfigSpec.EnumValue horizontalQuality;
-
- Quality(ForgeConfigSpec.Builder builder)
+
+ QualityOption(ForgeConfigSpec.Builder builder)
{
builder.comment(IQuality.DESC).push(this.getClass().getSimpleName());
-
+
verticalQuality = builder
.comment("\n\n"
+ IQuality.VERTICAL_QUALITY_DESC)
.defineEnum("Vertical Quality", IQuality.VERTICAL_QUALITY_DEFAULT);
-
+
horizontalScale = builder
.comment("\n\n"
+ IQuality.HORIZONTAL_SCALE_DESC)
.defineEnum("Horizontal Scale", IQuality.HORIZONTAL_SCALE_DEFAULT);
-
+
horizontalQuality = builder
.comment("\n\n"
+ IQuality.HORIZONTAL_QUALITY_DESC)
.defineEnum("Horizontal Quality", IQuality.HORIZONTAL_QUALITY_DEFAULT);
-
+
drawResolution = builder
.comment("\n\n"
+ IQuality.DRAW_RESOLUTION_DESC)
.defineEnum("Block size", IQuality.DRAW_RESOLUTION_DEFAULT);
-
+
MinDefaultMax minDefaultMax = IQuality.LOD_CHUNK_RENDER_DISTANCE_MIN_DEFAULT_MAX;
lodChunkRenderDistance = builder
.comment("\n\n"
+ IQuality.LOD_CHUNK_RENDER_DISTANCE_DESC)
.defineInRange("Lod Render Distance", minDefaultMax.defaultValue, minDefaultMax.minValue, minDefaultMax.maxValue);
-
+
builder.pop();
}
}
-
-
- public static class FogQuality
+
+
+ public static class FogQualityOption
{
public final ForgeConfigSpec.EnumValue fogDistance;
- public final ForgeConfigSpec.EnumValue fogDrawOverride;
+ public final ForgeConfigSpec.EnumValue fogDrawMode;
+ public final ForgeConfigSpec.EnumValue fogColorMode;
public final ForgeConfigSpec.BooleanValue disableVanillaFog;
-
- FogQuality(ForgeConfigSpec.Builder builder)
+
+ FogQualityOption(ForgeConfigSpec.Builder builder)
{
builder.comment(IFogQuality.DESC).push(this.getClass().getSimpleName());
-
+
fogDistance = builder
.comment("\n\n"
+ IFogQuality.FOG_DISTANCE_DESC)
.defineEnum("Fog Distance", IFogQuality.FOG_DISTANCE_DEFAULT);
-
- fogDrawOverride = builder
+
+ fogDrawMode = builder
.comment("\n\n"
- + IFogQuality.FOG_DRAW_OVERRIDE_DESC)
- .defineEnum("Fog Draw Override", IFogQuality.FOG_DRAW_OVERRIDE_DEFAULT);
-
+ + IFogQuality.FOG_DRAW_MODE_DESC)
+ .defineEnum("Fog Draw Mode", IFogQuality.FOG_DRAW_MODE_DEFAULT);
+
+ fogColorMode = builder
+ .comment("\n\n"
+ + IFogQuality.FOG_COLOR_MODE_DESC)
+ .defineEnum("Fog Color Mode", IFogQuality.FOG_COLOR_MODE_DEFAULT);
+
disableVanillaFog = builder
.comment("\n\n"
+ IFogQuality.DISABLE_VANILLA_FOG_DESC)
.define("Experimental Disable Vanilla Fog", IFogQuality.DISABLE_VANILLA_FOG_DEFAULT);
-
+
builder.pop();
}
}
-
-
- public static class AdvancedGraphics
+
+
+ public static class AdvancedGraphicsOption
{
public final ForgeConfigSpec.EnumValue lodTemplate;
public final ForgeConfigSpec.BooleanValue disableDirectionalCulling;
public final ForgeConfigSpec.BooleanValue alwaysDrawAtMaxQuality;
public final ForgeConfigSpec.EnumValue vanillaOverdraw;
public final ForgeConfigSpec.EnumValue gpuUploadMethod;
+ public final ForgeConfigSpec.IntValue gpuUploadTimeoutInMilleseconds;
public final ForgeConfigSpec.BooleanValue useExtendedNearClipPlane;
-
- AdvancedGraphics(ForgeConfigSpec.Builder builder)
+
+ AdvancedGraphicsOption(ForgeConfigSpec.Builder builder)
{
builder.comment(IAdvancedGraphics.DESC).push(this.getClass().getSimpleName());
-
+
lodTemplate = builder
.comment("\n\n"
+ IAdvancedGraphics.LOD_TEMPLATE_DESC)
.defineEnum("LOD Template", IAdvancedGraphics.LOD_TEMPLATE_DEFAULT);
-
+
disableDirectionalCulling = builder
.comment("\n\n"
+ IAdvancedGraphics.DISABLE_DIRECTIONAL_CULLING_DESC)
.define("Disable Directional Culling", IAdvancedGraphics.DISABLE_DIRECTIONAL_CULLING_DEFAULT);
-
+
alwaysDrawAtMaxQuality = builder
.comment("\n\n"
+ IAdvancedGraphics.ALWAYS_DRAW_AT_MAD_QUALITY_DESC)
.define("Always Use Max Quality", IAdvancedGraphics.ALWAYS_DRAW_AT_MAD_QUALITY_DEFAULT);
-
+
vanillaOverdraw = builder
.comment("\n\n"
+ IAdvancedGraphics.VANILLA_OVERDRAW_DESC)
.defineEnum("Vanilla Overdraw", IAdvancedGraphics.VANILLA_OVERDRAW_DEFAULT);
-
+
gpuUploadMethod = builder
.comment("\n\n"
+ IAdvancedGraphics.GPU_UPLOAD_METHOD_DESC)
.defineEnum("GPU Upload Method", IAdvancedGraphics.GPU_UPLOAD_METHOD_DEFAULT);
-
+
+ MinDefaultMax minDefaultMax = IAdvancedGraphics.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DEFAULT;
+ gpuUploadTimeoutInMilleseconds = builder
+ .comment("\n\n"
+ + IAdvancedGraphics.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DESC)
+ .defineInRange("GPU Upload Timeout in Milleseconds", minDefaultMax.defaultValue, minDefaultMax.minValue, minDefaultMax.maxValue);
+
// This is a temporary fix (like vanilla overdraw)
// hopefully we can remove both once we get individual chunk rendering figured out
useExtendedNearClipPlane = builder
.comment("\n\n"
+ IAdvancedGraphics.USE_EXTENDED_NEAR_CLIP_PLANE_DESC)
.define("Use Extended Near Clip Plane", IAdvancedGraphics.USE_EXTENDED_NEAR_CLIP_PLANE_DEFAULT);
-
-
+
+
builder.pop();
}
}
}
-
-
-
-
+
+
+
+
//========================//
// WorldGenerator Configs //
//========================//
@@ -261,31 +266,31 @@ public class ForgeConfig
public final ForgeConfigSpec.BooleanValue allowUnstableFeatureGeneration;
public final ForgeConfigSpec.EnumValue blocksToAvoid;
//public final ForgeConfigSpec.BooleanValue useExperimentalPreGenLoading;
-
+
WorldGenerator(ForgeConfigSpec.Builder builder)
{
builder.comment(IWorldGenerator.DESC).push("Generation");
-
+
generationPriority = builder
.comment("\n\n"
+ IWorldGenerator.GENERATION_PRIORITY_DESC)
.defineEnum("Generation Priority", IWorldGenerator.GENERATION_PRIORITY_DEFAULT);
-
+
distanceGenerationMode = builder
.comment("\n\n"
+ IWorldGenerator.DISTANCE_GENERATION_MODE_DESC)
.defineEnum("Distance Generation Mode", IWorldGenerator.DISTANCE_GENERATION_MODE_DEFAULT);
-
+
allowUnstableFeatureGeneration = builder
.comment("\n\n"
+ IWorldGenerator.ALLOW_UNSTABLE_FEATURE_GENERATION_DESC)
.define("Allow Unstable Feature Generation", IWorldGenerator.ALLOW_UNSTABLE_FEATURE_GENERATION_DEFAULT);
-
+
blocksToAvoid = builder
.comment("\n\n"
+ IWorldGenerator.BLOCKS_TO_AVOID_DESC)
.defineEnum("Blocks to avoid", IWorldGenerator.BLOCKS_TO_AVOID_DEFAULT);
-
+
/*useExperimentalPreGenLoading = builder
.comment("\n\n"
+ " if a chunk has been pre-generated, then the mod would use the real chunk for the \n"
@@ -294,20 +299,20 @@ public class ForgeConfig
builder.pop();
}
}
-
-
-
-
+
+
+
+
//============================//
// AdvancedModOptions Configs //
//============================//
- public static class Advanced
+ public static class AdvancedModOptions
{
public final Threading threading;
public final Debugging debugging;
public final Buffers buffers;
-
- public Advanced(ForgeConfigSpec.Builder builder)
+
+ public AdvancedModOptions(ForgeConfigSpec.Builder builder)
{
builder.comment(IAdvanced.DESC).push(this.getClass().getSimpleName());
{
@@ -317,36 +322,36 @@ public class ForgeConfig
}
builder.pop();
}
-
+
public static class Threading
{
public final ForgeConfigSpec.IntValue numberOfWorldGenerationThreads;
public final ForgeConfigSpec.IntValue numberOfBufferBuilderThreads;
-
+
Threading(ForgeConfigSpec.Builder builder)
{
builder.comment(IThreading.DESC).push(this.getClass().getSimpleName());
-
+
MinDefaultMax minDefaultMax = IThreading.NUMBER_OF_WORLD_GENERATION_THREADS_DEFAULT;
numberOfWorldGenerationThreads = builder
.comment("\n\n"
+ IThreading.NUMBER_OF_WORLD_GENERATION_THREADS_DESC)
.defineInRange("numberOfWorldGenerationThreads", minDefaultMax.defaultValue, minDefaultMax.minValue, minDefaultMax.maxValue);
-
-
+
+
minDefaultMax = IThreading.NUMBER_OF_BUFFER_BUILDER_THREADS_MIN_DEFAULT_MAX;
numberOfBufferBuilderThreads = builder
.comment("\n\n"
+ IThreading.NUMBER_OF_BUFFER_BUILDER_THREADS_MIN_DEFAULT_MAX)
.defineInRange("numberOfBufferBuilderThreads", minDefaultMax.defaultValue, minDefaultMax.minValue, minDefaultMax.maxValue);
-
+
builder.pop();
}
}
-
-
-
+
+
+
//===============//
// Debug Options //
//===============//
@@ -355,57 +360,57 @@ public class ForgeConfig
public final ForgeConfigSpec.BooleanValue drawLods;
public final ForgeConfigSpec.EnumValue debugMode;
public final ForgeConfigSpec.BooleanValue enableDebugKeybindings;
-
+
Debugging(ForgeConfigSpec.Builder builder)
{
builder.comment(IDebugging.DESC).push(this.getClass().getSimpleName());
-
+
drawLods = builder
.comment("\n\n"
+ IDebugging.DRAW_LODS_DESC)
.define("Enable Rendering", IDebugging.DRAW_LODS_DEFAULT);
-
+
debugMode = builder
.comment("\n\n"
+ IDebugging.DEBUG_MODE_DESC)
.defineEnum("Debug Mode", IDebugging.DEBUG_MODE_DEFAULT);
-
+
enableDebugKeybindings = builder
.comment("\n\n"
+ IDebugging.DEBUG_KEYBINDINGS_ENABLED_DESC)
.define("Enable Debug Keybinding", IDebugging.DEBUG_KEYBINDINGS_ENABLED_DEFAULT);
-
+
builder.pop();
}
}
-
-
+
+
public static class Buffers
{
public final ForgeConfigSpec.EnumValue rebuildTimes;
-
+
Buffers(ForgeConfigSpec.Builder builder)
{
builder.comment(IBuffers.DESC).push(this.getClass().getSimpleName());
-
+
rebuildTimes = builder
.comment("\n\n"
+ IBuffers.REBUILD_TIMES_DESC)
.defineEnum("rebuildFrequency", IBuffers.REBUILD_TIMES_DEFAULT);
-
+
builder.pop();
}
}
}
}
-
-
+
+
/** {@link Path} to the configuration file of this mod */
private static final Path CONFIG_PATH = Paths.get("config", ModInfo.NAME + ".toml");
-
+
public static final ForgeConfigSpec CLIENT_SPEC;
public static final Client CLIENT;
-
+
static
{
final Pair specPair = new ForgeConfigSpec.Builder().configure(Client::new);
@@ -418,5 +423,18 @@ public class ForgeConfig
clientConfig.save();
CLIENT_SPEC.setConfig(clientConfig);
}
-
+
+ @SubscribeEvent
+ public static void onLoad(final ModConfigEvent.Loading configEvent)
+ {
+ LogManager.getLogger().debug(ModInfo.NAME, "Loaded forge config file {}", configEvent.getConfig().getFileName());
+ }
+
+ @SubscribeEvent
+ public static void onFileChange(final ModConfigEvent.Reloading configEvent)
+ {
+ LogManager.getLogger().debug(ModInfo.NAME, "Forge config just got changed on the file system!");
+ }
+
}
+
diff --git a/forge/src/main/java/com/seibel/lod/forge/wrappers/config/LodConfigWrapperSingleton.java b/forge/src/main/java/com/seibel/lod/forge/wrappers/config/LodConfigWrapperSingleton.java
index a79afabae..13622b19e 100644
--- a/forge/src/main/java/com/seibel/lod/forge/wrappers/config/LodConfigWrapperSingleton.java
+++ b/forge/src/main/java/com/seibel/lod/forge/wrappers/config/LodConfigWrapperSingleton.java
@@ -31,54 +31,55 @@ import com.seibel.lod.core.enums.config.LodTemplate;
import com.seibel.lod.core.enums.config.VanillaOverdraw;
import com.seibel.lod.core.enums.config.VerticalQuality;
import com.seibel.lod.core.enums.rendering.DebugMode;
+import com.seibel.lod.core.enums.rendering.FogColorMode;
import com.seibel.lod.core.enums.rendering.FogDistance;
-import com.seibel.lod.core.enums.rendering.FogDrawOverride;
+import com.seibel.lod.core.enums.rendering.FogDrawMode;
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton;
import com.seibel.lod.forge.ForgeConfig;
/**
* @author James Seibel
- * @version 11-16-2021
+ * @version 11-29-2021
*/
public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
{
public static final LodConfigWrapperSingleton INSTANCE = new LodConfigWrapperSingleton();
-
-
+
+
private static final Client client = new Client();
@Override
public IClient client()
{
return client;
}
-
+
public static class Client implements IClient
{
public final IGraphics graphics;
public final IWorldGenerator worldGenerator;
public final IAdvanced advanced;
-
+
@Override
public IGraphics graphics()
{
return graphics;
}
-
+
@Override
public IWorldGenerator worldGenerator()
{
return worldGenerator;
}
-
+
@Override
public IAdvanced advanced()
{
return advanced;
}
-
-
-
+
+
+
//================//
// Client Configs //
//================//
@@ -88,8 +89,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
worldGenerator = new WorldGenerator();
advanced = new Advanced();
}
-
-
+
+
//==================//
// Graphics Configs //
//==================//
@@ -98,8 +99,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
public final IQuality quality;
public final IFogQuality fogQuality;
public final IAdvancedGraphics advancedGraphics;
-
-
+
+
@Override
public IQuality quality()
@@ -118,79 +119,79 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
{
return advancedGraphics;
}
-
-
+
+
Graphics()
{
quality = new Quality();
advancedGraphics = new AdvancedGraphics();
fogQuality = new FogQuality();
}
-
-
+
+
public static class Quality implements IQuality
{
@Override
public HorizontalResolution getDrawResolution()
{
- return ForgeConfig.CLIENT.graphics.quality.drawResolution.get();
+ return ForgeConfig.CLIENT.graphics.qualityOption.drawResolution.get();
}
@Override
public void setDrawResolution(HorizontalResolution newHorizontalResolution)
{
- ForgeConfig.CLIENT.graphics.quality.drawResolution.set(newHorizontalResolution);
+ ForgeConfig.CLIENT.graphics.qualityOption.drawResolution.set(newHorizontalResolution);
}
-
-
+
+
@Override
public int getLodChunkRenderDistance()
{
- return ForgeConfig.CLIENT.graphics.quality.lodChunkRenderDistance.get();
+ return ForgeConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.get();
}
@Override
public void setLodChunkRenderDistance(int newLodChunkRenderDistance)
{
- ForgeConfig.CLIENT.graphics.quality.lodChunkRenderDistance.set(newLodChunkRenderDistance);
+ ForgeConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.set(newLodChunkRenderDistance);
}
-
-
+
+
@Override
public VerticalQuality getVerticalQuality()
{
- return ForgeConfig.CLIENT.graphics.quality.verticalQuality.get();
+ return ForgeConfig.CLIENT.graphics.qualityOption.verticalQuality.get();
}
@Override
public void setVerticalQuality(VerticalQuality newVerticalQuality)
{
- ForgeConfig.CLIENT.graphics.quality.verticalQuality.set(newVerticalQuality);
+ ForgeConfig.CLIENT.graphics.qualityOption.verticalQuality.set(newVerticalQuality);
}
-
-
+
+
@Override
public HorizontalScale getHorizontalScale()
{
- return ForgeConfig.CLIENT.graphics.quality.horizontalScale.get();
+ return ForgeConfig.CLIENT.graphics.qualityOption.horizontalScale.get();
}
@Override
public void setHorizontalScale(HorizontalScale newHorizontalScale)
{
- ForgeConfig.CLIENT.graphics.quality.horizontalScale.set(newHorizontalScale);
+ ForgeConfig.CLIENT.graphics.qualityOption.horizontalScale.set(newHorizontalScale);
}
-
-
+
+
@Override
public HorizontalQuality getHorizontalQuality()
{
- return ForgeConfig.CLIENT.graphics.quality.horizontalQuality.get();
+ return ForgeConfig.CLIENT.graphics.qualityOption.horizontalQuality.get();
}
@Override
public void setHorizontalQuality(HorizontalQuality newHorizontalQuality)
{
- ForgeConfig.CLIENT.graphics.quality.horizontalQuality.set(newHorizontalQuality);
+ ForgeConfig.CLIENT.graphics.qualityOption.horizontalQuality.set(newHorizontalQuality);
}
}
-
-
+
+
public static class FogQuality implements IFogQuality
{
@Override
@@ -203,20 +204,32 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
{
ForgeConfig.CLIENT.graphics.fogQuality.fogDistance.set(newFogDistance);
}
-
-
+
+
@Override
- public FogDrawOverride getFogDrawOverride()
+ public FogDrawMode getFogDrawMode()
{
- return ForgeConfig.CLIENT.graphics.fogQuality.fogDrawOverride.get();
+ return ForgeConfig.CLIENT.graphics.fogQuality.fogDrawMode.get();
}
@Override
- public void setFogDrawOverride(FogDrawOverride newFogDrawOverride)
+ public void setFogDrawMode(FogDrawMode newFogDrawMode)
{
- ForgeConfig.CLIENT.graphics.fogQuality.fogDrawOverride.set(newFogDrawOverride);
+ ForgeConfig.CLIENT.graphics.fogQuality.fogDrawMode.set(newFogDrawMode);
}
-
-
+
+
+ @Override
+ public FogColorMode getFogColorMode()
+ {
+ return ForgeConfig.CLIENT.graphics.fogQuality.fogColorMode.get();
+ }
+ @Override
+ public void setFogColorMode(FogColorMode newFogColorMode)
+ {
+ ForgeConfig.CLIENT.graphics.fogQuality.fogColorMode.set(newFogColorMode);
+ }
+
+
@Override
public boolean getDisableVanillaFog()
{
@@ -228,86 +241,98 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
ForgeConfig.CLIENT.graphics.fogQuality.disableVanillaFog.set(newDisableVanillaFog);
}
}
-
-
+
+
public static class AdvancedGraphics implements IAdvancedGraphics
{
@Override
public LodTemplate getLodTemplate()
{
- return ForgeConfig.CLIENT.graphics.advancedGraphics.lodTemplate.get();
+ return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.lodTemplate.get();
}
@Override
public void setLodTemplate(LodTemplate newLodTemplate)
{
- ForgeConfig.CLIENT.graphics.advancedGraphics.lodTemplate.set(newLodTemplate);
+ ForgeConfig.CLIENT.graphics.advancedGraphicsOption.lodTemplate.set(newLodTemplate);
}
-
-
+
+
@Override
public boolean getDisableDirectionalCulling()
{
- return ForgeConfig.CLIENT.graphics.advancedGraphics.disableDirectionalCulling.get();
+ return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.disableDirectionalCulling.get();
}
@Override
public void setDisableDirectionalCulling(boolean newDisableDirectionalCulling)
{
- ForgeConfig.CLIENT.graphics.advancedGraphics.disableDirectionalCulling.set(newDisableDirectionalCulling);
+ ForgeConfig.CLIENT.graphics.advancedGraphicsOption.disableDirectionalCulling.set(newDisableDirectionalCulling);
}
-
-
+
+
@Override
public boolean getAlwaysDrawAtMaxQuality()
{
- return ForgeConfig.CLIENT.graphics.advancedGraphics.alwaysDrawAtMaxQuality.get();
+ return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.alwaysDrawAtMaxQuality.get();
}
@Override
public void setAlwaysDrawAtMaxQuality(boolean newAlwaysDrawAtMaxQuality)
{
- ForgeConfig.CLIENT.graphics.advancedGraphics.alwaysDrawAtMaxQuality.set(newAlwaysDrawAtMaxQuality);
+ ForgeConfig.CLIENT.graphics.advancedGraphicsOption.alwaysDrawAtMaxQuality.set(newAlwaysDrawAtMaxQuality);
}
-
-
+
+
@Override
public VanillaOverdraw getVanillaOverdraw()
{
- return ForgeConfig.CLIENT.graphics.advancedGraphics.vanillaOverdraw.get();
+ return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.vanillaOverdraw.get();
}
@Override
public void setVanillaOverdraw(VanillaOverdraw newVanillaOverdraw)
{
- ForgeConfig.CLIENT.graphics.advancedGraphics.vanillaOverdraw.set(newVanillaOverdraw);
+ ForgeConfig.CLIENT.graphics.advancedGraphicsOption.vanillaOverdraw.set(newVanillaOverdraw);
}
-
-
+
+
@Override
public GpuUploadMethod getGpuUploadMethod()
{
- return ForgeConfig.CLIENT.graphics.advancedGraphics.gpuUploadMethod.get();
+ return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadMethod.get();
}
@Override
public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog)
{
- ForgeConfig.CLIENT.graphics.advancedGraphics.gpuUploadMethod.set(newDisableVanillaFog);
+ ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadMethod.set(newDisableVanillaFog);
}
-
-
+
+
+ @Override
+ public int getGpuUploadTimeoutInMilliseconds()
+ {
+ return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadTimeoutInMilleseconds.get();
+ }
+ @Override
+ public void setGpuUploadTimeoutInMilliseconds(int newTimeoutInMilliseconds)
+ {
+ ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadTimeoutInMilleseconds.set(newTimeoutInMilliseconds);
+ }
+
+
@Override
public boolean getUseExtendedNearClipPlane()
{
- return ForgeConfig.CLIENT.graphics.advancedGraphics.useExtendedNearClipPlane.get();
+ return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.useExtendedNearClipPlane.get();
}
@Override
public void setUseExtendedNearClipPlane(boolean newUseExtendedNearClipPlane)
{
- ForgeConfig.CLIENT.graphics.advancedGraphics.useExtendedNearClipPlane.set(newUseExtendedNearClipPlane);
+ ForgeConfig.CLIENT.graphics.advancedGraphicsOption.useExtendedNearClipPlane.set(newUseExtendedNearClipPlane);
}
}
}
-
-
-
-
+
+
+
+
//========================//
// WorldGenerator Configs //
//========================//
@@ -323,8 +348,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
{
ForgeConfig.CLIENT.worldGenerator.generationPriority.set(newGenerationPriority);
}
-
-
+
+
@Override
public DistanceGenerationMode getDistanceGenerationMode()
{
@@ -335,8 +360,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
{
ForgeConfig.CLIENT.worldGenerator.distanceGenerationMode.set(newDistanceGenerationMode);
}
-
-
+
+
@Override
public boolean getAllowUnstableFeatureGeneration()
{
@@ -347,8 +372,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
{
ForgeConfig.CLIENT.worldGenerator.allowUnstableFeatureGeneration.set(newAllowUnstableFeatureGeneration);
}
-
-
+
+
@Override
public BlocksToAvoid getBlocksToAvoid()
{
@@ -360,10 +385,10 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
ForgeConfig.CLIENT.worldGenerator.blocksToAvoid.set(newBlockToAvoid);
}
}
-
-
-
-
+
+
+
+
//============================//
// AdvancedModOptions Configs //
//============================//
@@ -372,8 +397,8 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
public final IThreading threading;
public final IDebugging debugging;
public final IBuffers buffers;
-
-
+
+
@Override
public IThreading threading()
{
@@ -393,44 +418,44 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
{
return buffers;
}
-
-
+
+
public Advanced()
{
threading = new Threading();
debugging = new Debugging();
buffers = new Buffers();
}
-
+
public static class Threading implements IThreading
{
@Override
public int getNumberOfWorldGenerationThreads()
{
- return ForgeConfig.CLIENT.advanced.threading.numberOfWorldGenerationThreads.get();
+ return ForgeConfig.CLIENT.advancedModOptions.threading.numberOfWorldGenerationThreads.get();
}
@Override
public void setNumberOfWorldGenerationThreads(int newNumberOfWorldGenerationThreads)
{
- ForgeConfig.CLIENT.advanced.threading.numberOfWorldGenerationThreads.set(newNumberOfWorldGenerationThreads);
+ ForgeConfig.CLIENT.advancedModOptions.threading.numberOfWorldGenerationThreads.set(newNumberOfWorldGenerationThreads);
}
-
-
+
+
@Override
public int getNumberOfBufferBuilderThreads()
{
- return ForgeConfig.CLIENT.advanced.threading.numberOfBufferBuilderThreads.get();
+ return ForgeConfig.CLIENT.advancedModOptions.threading.numberOfBufferBuilderThreads.get();
}
@Override
public void setNumberOfBufferBuilderThreads(int newNumberOfWorldBuilderThreads)
{
- ForgeConfig.CLIENT.advanced.threading.numberOfBufferBuilderThreads.set(newNumberOfWorldBuilderThreads);
+ ForgeConfig.CLIENT.advancedModOptions.threading.numberOfBufferBuilderThreads.set(newNumberOfWorldBuilderThreads);
}
}
-
-
-
-
+
+
+
+
//===============//
// Debug Options //
//===============//
@@ -439,53 +464,54 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
@Override
public boolean getDrawLods()
{
- return ForgeConfig.CLIENT.advanced.debugging.drawLods.get();
+ return ForgeConfig.CLIENT.advancedModOptions.debugging.drawLods.get();
}
@Override
public void setDrawLods(boolean newDrawLods)
{
- ForgeConfig.CLIENT.advanced.debugging.drawLods.set(newDrawLods);
+ ForgeConfig.CLIENT.advancedModOptions.debugging.drawLods.set(newDrawLods);
}
-
-
+
+
@Override
public DebugMode getDebugMode()
{
- return ForgeConfig.CLIENT.advanced.debugging.debugMode.get();
+ return ForgeConfig.CLIENT.advancedModOptions.debugging.debugMode.get();
}
@Override
public void setDebugMode(DebugMode newDebugMode)
{
- ForgeConfig.CLIENT.advanced.debugging.debugMode.set(newDebugMode);
+ ForgeConfig.CLIENT.advancedModOptions.debugging.debugMode.set(newDebugMode);
}
-
-
+
+
@Override
public boolean getDebugKeybindingsEnabled()
{
- return ForgeConfig.CLIENT.advanced.debugging.enableDebugKeybindings.get();
+ return ForgeConfig.CLIENT.advancedModOptions.debugging.enableDebugKeybindings.get();
}
@Override
public void setDebugKeybindingsEnabled(boolean newEnableDebugKeybindings)
{
- ForgeConfig.CLIENT.advanced.debugging.enableDebugKeybindings.set(newEnableDebugKeybindings);
+ ForgeConfig.CLIENT.advancedModOptions.debugging.enableDebugKeybindings.set(newEnableDebugKeybindings);
}
}
-
-
+
+
public static class Buffers implements IBuffers
{
@Override
public BufferRebuildTimes getRebuildTimes()
{
- return ForgeConfig.CLIENT.advanced.buffers.rebuildTimes.get();
+ return ForgeConfig.CLIENT.advancedModOptions.buffers.rebuildTimes.get();
}
@Override
public void setRebuildTimes(BufferRebuildTimes newBufferRebuildTimes)
{
- ForgeConfig.CLIENT.advanced.buffers.rebuildTimes.set(newBufferRebuildTimes);
+ ForgeConfig.CLIENT.advancedModOptions.buffers.rebuildTimes.set(newBufferRebuildTimes);
}
}
- }
- }
+ }
+ }
}
+
diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml
index eb2c699fe..993cdca17 100644
--- a/forge/src/main/resources/META-INF/mods.toml
+++ b/forge/src/main/resources/META-INF/mods.toml
@@ -24,7 +24,7 @@ modId="lod" #mandatory
#// The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
#//${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata
#// see the associated build.gradle script for how to populate this completely automatically during a build
-version="1.5.3a" #mandatory
+version="1.5.4a" #mandatory
#// A display name for the mod
displayName="Distant Horizons" #mandatory
diff --git a/gradle.properties b/gradle.properties
index 7a4afc28c..e415a2261 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,9 +1,10 @@
org.gradle.jvmargs=-Xmx2048M
+# TODO: HEY REMEMBER TO UPDATE THE lod.accesswidener WHEN UPDATING TO 1.18
minecraft_version=1.17.1
archives_base_name=DistantHorizons
-mod_version=1.5.3a
+mod_version=1.5.4a
maven_group=com.seibel.lod
fabric_loader_version=0.11.6