diff --git a/assets/Data/game/biomes.json b/assets/Data/game/biomes.json index 883b053b..f26f8166 100644 --- a/assets/Data/game/biomes.json +++ b/assets/Data/game/biomes.json @@ -86,7 +86,7 @@ "regularity": 0.6, "threshold": 0.03, "scale": 0.5, - "priority": 1.0 + "priority": 5.0 }, { "entityIDs": [ @@ -95,14 +95,14 @@ "regularity": 0.6, "threshold": 0.05, "scale": 0.5, - "priority": 1.0 + "priority": 3.0 }, { "entityIDs": [ "rock_static" ], "regularity": 0.6, - "threshold": 0.04, + "threshold": 0.06, "scale": 0.5, "priority": 1.0 } diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index a1ac9d19..6d57fcc4 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1520,7 +1520,9 @@ Fix nav mesh construction params (04/24/2025) GriddedDataCellManager debugging tools NavMesh bugfix -Fix jump tree not enabling physics body +Fix jump trees not enabling physics body +Priority based foliage content placement + diff --git a/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsInventory.java b/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsInventory.java index 1666645b..4bfc0624 100644 --- a/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsInventory.java +++ b/src/main/java/electrosphere/client/ui/menu/ingame/MenuGeneratorsInventory.java @@ -6,7 +6,6 @@ import electrosphere.client.ui.menu.WindowStrings; import electrosphere.client.ui.menu.WindowUtils; import electrosphere.engine.Globals; import electrosphere.engine.assetmanager.AssetDataStrings; -import electrosphere.engine.signal.Signal.SignalType; import electrosphere.entity.state.inventory.InventoryUtils; import electrosphere.entity.types.item.ItemUtils; import electrosphere.game.data.item.Item; diff --git a/src/main/java/electrosphere/server/entity/ServerContentGenerator.java b/src/main/java/electrosphere/server/entity/ServerContentGenerator.java index dcc13341..c4b3c810 100644 --- a/src/main/java/electrosphere/server/entity/ServerContentGenerator.java +++ b/src/main/java/electrosphere/server/entity/ServerContentGenerator.java @@ -66,26 +66,38 @@ public class ServerContentGenerator { realm.getServerWorldData().convertVoxelToRealSpace(0, worldPos.y) < height && realm.getServerWorldData().convertVoxelToRealSpace(ServerTerrainChunk.CHUNK_DIMENSION, worldPos.y) > height ){ + BiomeFoliageDescription toPlace = null; + double foundPriority = -1; + double realX = realm.getServerWorldData().convertVoxelToRealSpace(x, worldPos.x); + double realZ = realm.getServerWorldData().convertVoxelToRealSpace(z, worldPos.z); for(BiomeFoliageDescription foliageDescription : foliageDescriptions){ double scale = foliageDescription.getScale(); double regularity = foliageDescription.getRegularity(); double threshold = foliageDescription.getThreshold(); - double realX = realm.getServerWorldData().convertVoxelToRealSpace(x, worldPos.x); - double realZ = realm.getServerWorldData().convertVoxelToRealSpace(z, worldPos.z); - if(NoiseUtils.relaxedPointGen(realX * scale, realZ * scale, regularity, threshold) > 0){ - String type = foliageDescription.getEntityIDs().get(random.nextInt(0,foliageDescription.getEntityIDs().size())); - FoliageUtils.serverSpawnTreeFoliage( - realm, - new Vector3d( - realX, - height, - realZ - ), - type, - random.nextLong() - ); + double value = NoiseUtils.relaxedPointGen(realX * scale, realZ * scale, regularity, threshold); + if(value > 0){ + if(toPlace == null){ + foundPriority = foliageDescription.getPriority(); + toPlace = foliageDescription; + } else if(foliageDescription.getPriority() > foundPriority) { + foundPriority = foliageDescription.getPriority(); + toPlace = foliageDescription; + } } } + if(toPlace != null){ + String type = toPlace.getEntityIDs().get(random.nextInt(0,toPlace.getEntityIDs().size())); + FoliageUtils.serverSpawnTreeFoliage( + realm, + new Vector3d( + realX, + height, + realZ + ), + type, + random.nextLong() + ); + } } } }