diff --git a/CakeBuild/CakeBuild.csproj b/CakeBuild/CakeBuild.csproj
index 0e3b64c..85c90f8 100644
--- a/CakeBuild/CakeBuild.csproj
+++ b/CakeBuild/CakeBuild.csproj
@@ -20,4 +20,4 @@
$(VINTAGE_STORY)/VintagestoryAPI.dll
-
\ No newline at end of file
+
diff --git a/Rivers/Rivers.csproj b/Rivers/Rivers.csproj
index 7e06e43..3631e0f 100644
--- a/Rivers/Rivers.csproj
+++ b/Rivers/Rivers.csproj
@@ -66,4 +66,4 @@
-
\ No newline at end of file
+
diff --git a/Rivers/modinfo.json b/Rivers/modinfo.json
index af9eedc..b5feede 100644
--- a/Rivers/modinfo.json
+++ b/Rivers/modinfo.json
@@ -6,8 +6,8 @@
"sneeze"
],
"description": "Standalone version of rivers.",
- "version": "5.0.0",
+ "version": "5.0.1",
"dependencies": {
"game": ""
}
-}
\ No newline at end of file
+}
diff --git a/Rivers/src/Boulders/GeneratePartialFeatures.cs b/Rivers/src/Boulders/GeneratePartialFeatures.cs
index eeaa7a6..66dc1d5 100644
--- a/Rivers/src/Boulders/GeneratePartialFeatures.cs
+++ b/Rivers/src/Boulders/GeneratePartialFeatures.cs
@@ -81,10 +81,12 @@ public override void GeneratePartial(IServerChunk[] chunks, int mainChunkX, int
IMapChunk mapChunk = blockAccessor.GetMapChunk(generatingChunkX, generatingChunkZ);
+ if (mapChunk == null) return;
+
ushort[] heightMap = mapChunk.WorldGenTerrainHeightMap;
ushort[] riverDistanceMap = mapChunk.GetModdata("riverDistance");
-
if (riverDistanceMap == null) return;
+ if (heightMap == null) return;
int startX = generatingChunkX * chunkSize;
int startZ = generatingChunkZ * chunkSize;
@@ -125,4 +127,4 @@ public override void GeneratePartial(IServerChunk[] chunks, int mainChunkX, int
}
}
}
-}
\ No newline at end of file
+}
diff --git a/Rivers/src/Boulders/WorldGenBase.cs b/Rivers/src/Boulders/WorldGenBase.cs
index 48acb8e..c0d4362 100644
--- a/Rivers/src/Boulders/WorldGenBase.cs
+++ b/Rivers/src/Boulders/WorldGenBase.cs
@@ -48,13 +48,29 @@ public void LoadGlobalConfig(ICoreServerAPI api)
globalConfig = api.Assets.Get("game:worldgen/global.json").ToObject();
- globalConfig.defaultRockId = api.World.GetBlock(globalConfig.defaultRockCode).BlockId;
- globalConfig.waterBlockId = api.World.GetBlock(globalConfig.waterBlockCode).BlockId;
- globalConfig.saltWaterBlockId = api.World.GetBlock(globalConfig.saltWaterBlockCode).BlockId;
- globalConfig.lakeIceBlockId = api.World.GetBlock(globalConfig.lakeIceBlockCode).BlockId;
- globalConfig.lavaBlockId = api.World.GetBlock(globalConfig.lavaBlockCode).BlockId;
- globalConfig.basaltBlockId = api.World.GetBlock(globalConfig.basaltBlockCode).BlockId;
- globalConfig.mantleBlockId = api.World.GetBlock(globalConfig.mantleBlockCode).BlockId;
+ Block? block;
+
+ block = api.World.GetBlock(globalConfig.defaultRockCode);
+ globalConfig.defaultRockId = block?.BlockId ?? 0;
+
+ block = api.World.GetBlock(globalConfig.waterBlockCode);
+ globalConfig.waterBlockId = block?.BlockId ?? 0;
+
+ block = api.World.GetBlock(globalConfig.saltWaterBlockCode);
+ globalConfig.saltWaterBlockId = block?.BlockId ?? 0;
+
+ block = api.World.GetBlock(globalConfig.lakeIceBlockCode);
+ globalConfig.lakeIceBlockId = block?.BlockId ?? 0;
+
+ block = api.World.GetBlock(globalConfig.lavaBlockCode);
+ globalConfig.lavaBlockId = block?.BlockId ?? 0;
+
+ block = api.World.GetBlock(globalConfig.basaltBlockCode);
+ globalConfig.basaltBlockId = block?.BlockId ?? 0;
+
+ block = api.World.GetBlock(globalConfig.mantleBlockCode);
+ globalConfig.mantleBlockId = block?.BlockId ?? 0;
+
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
diff --git a/Rivers/src/Boulders/WorldGenPartial.cs b/Rivers/src/Boulders/WorldGenPartial.cs
index 19f4ce4..3be57d9 100644
--- a/Rivers/src/Boulders/WorldGenPartial.cs
+++ b/Rivers/src/Boulders/WorldGenPartial.cs
@@ -15,19 +15,14 @@ public abstract class WorldGenPartial : WorldGenBase
public virtual void ChunkColumnGeneration(IChunkColumnGenerateRequest request)
{
- IServerChunk[] chunks = request.Chunks;
int chunkX = request.ChunkX;
int chunkZ = request.ChunkZ;
- for (int i = -ChunkRange; i <= ChunkRange; i++)
- {
- for (int j = -ChunkRange; j <= ChunkRange; j++)
- {
- GeneratePartial(chunks, chunkX, chunkZ, chunkX + i, chunkZ + j);
- }
- }
+
+ // ONLY process current chunk — moddata already contains river info
+ GeneratePartial(request.Chunks, chunkX, chunkZ, chunkX, chunkZ);
}
public virtual void GeneratePartial(IServerChunk[] chunks, int mainChunkX, int mainChunkZ, int generatingChunkX, int generatingChunkZ)
{
}
-}
\ No newline at end of file
+}
diff --git a/Rivers/src/Gravel/GravelGen.cs b/Rivers/src/Gravel/GravelGen.cs
index 24b8733..b36cee3 100644
--- a/Rivers/src/Gravel/GravelGen.cs
+++ b/Rivers/src/Gravel/GravelGen.cs
@@ -51,6 +51,7 @@ public void InitWorldGen()
foreach (RockStratum stratum in rockStrata.Variants)
{
int stratumId = sapi.World.GetBlock(stratum.BlockCode)?.BlockId ?? 0;
+ if (stratumId == 0) continue; // Skip if block not found
if (gravelMappings.ContainsKey(stratumId) || stratumId == 0) continue;
diff --git a/Rivers/src/Patches/ChunkTesselatorManagerPatch.cs b/Rivers/src/Patches/ChunkTesselatorManagerPatch.cs
index 6ff0752..077c6c6 100644
--- a/Rivers/src/Patches/ChunkTesselatorManagerPatch.cs
+++ b/Rivers/src/Patches/ChunkTesselatorManagerPatch.cs
@@ -1,5 +1,6 @@
using HarmonyLib;
using System.Collections.Generic;
+using System.Reflection;
using System.Reflection.Emit;
using Vintagestory.Client.NoObf;
@@ -62,7 +63,7 @@ public static IEnumerable Transpiler(IEnumerable Transpiler(IEnumerable