diff --git a/assets/Data/entity/foliage.json b/assets/Data/entity/foliage.json index d2d21214..775e433a 100644 --- a/assets/Data/entity/foliage.json +++ b/assets/Data/entity/foliage.json @@ -6,6 +6,7 @@ "Data/entity/foliage/trees.json", "Data/entity/foliage/bushes.json", "Data/entity/foliage/rocks.json", - "Data/entity/foliage/flowers.json" + "Data/entity/foliage/flowers.json", + "Data/entity/foliage/crops.json" ] } diff --git a/assets/Data/entity/objects/crops.json b/assets/Data/entity/foliage/crops.json similarity index 98% rename from assets/Data/entity/objects/crops.json rename to assets/Data/entity/foliage/crops.json index 9b27eda5..23919cde 100644 --- a/assets/Data/entity/objects/crops.json +++ b/assets/Data/entity/foliage/crops.json @@ -1,5 +1,5 @@ { - "objects" : [ + "foliageList" : [ { "id" : "wheat_plant", diff --git a/assets/Data/entity/objects.json b/assets/Data/entity/objects.json index d94d84e2..280dba49 100644 --- a/assets/Data/entity/objects.json +++ b/assets/Data/entity/objects.json @@ -7,7 +7,6 @@ "Data/entity/objects/debug_objects.json", "Data/entity/objects/game_objects.json", "Data/entity/objects/containers.json", - "Data/entity/objects/furniture.json", - "Data/entity/objects/crops.json" + "Data/entity/objects/furniture.json" ] } \ No newline at end of file diff --git a/assets/Data/game/biomes.json b/assets/Data/game/biomes.json index 74438522..b8ad652f 100644 --- a/assets/Data/game/biomes.json +++ b/assets/Data/game/biomes.json @@ -88,6 +88,15 @@ "scale": 0.5, "priority": 5.0 }, + { + "entityIDs": [ + "wheat_plant" + ], + "regularity": 0.6, + "threshold": 0.04, + "scale": 0.5, + "priority": 4.0 + }, { "entityIDs": [ "bush4" diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index dee78054..fa9a242b 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1743,6 +1743,7 @@ Multiple loot pool support Crops replace loot pool on completion of growth Display name for all common entity data Enitity id collision validation +Full-sized wheat plants spawn in forest now diff --git a/src/main/java/electrosphere/entity/state/growth/ServerGrowthComponent.java b/src/main/java/electrosphere/entity/state/growth/ServerGrowthComponent.java index 0276db99..371bc7b7 100644 --- a/src/main/java/electrosphere/entity/state/growth/ServerGrowthComponent.java +++ b/src/main/java/electrosphere/entity/state/growth/ServerGrowthComponent.java @@ -55,13 +55,25 @@ public class ServerGrowthComponent implements BehaviorTree { if(status < data.getGrowthMax()){ this.setStatus(status + 1); } - if(status == data.getGrowthMax()){ + if(status == data.getGrowthMax() && this.data.getMaxGrowthLoot() != null){ ServerLifeTree.setLootPool(parent, this.data.getMaxGrowthLoot()); } float percentage = this.status / (float)data.getGrowthMax(); Vector3d targetScale = new Vector3d(data.getScaleMax() * percentage); ServerEntityUtils.setScale(parent, targetScale); } + + /** + * Maxes out the growth for this component + */ + public void maxGrowth(){ + this.setStatus(this.data.getGrowthMax()); + if(this.data.getMaxGrowthLoot() != null){ + ServerLifeTree.setLootPool(parent, this.data.getMaxGrowthLoot()); + } + Vector3d targetScale = new Vector3d(data.getScaleMax() * 1.0f); + ServerEntityUtils.setScale(parent, targetScale); + } /** *

(initially) Automatically generated

diff --git a/src/main/java/electrosphere/server/entity/ServerContentGenerator.java b/src/main/java/electrosphere/server/entity/ServerContentGenerator.java index 6fb31636..24588bb0 100644 --- a/src/main/java/electrosphere/server/entity/ServerContentGenerator.java +++ b/src/main/java/electrosphere/server/entity/ServerContentGenerator.java @@ -8,7 +8,11 @@ import org.joml.Vector3i; import electrosphere.data.biome.BiomeData; import electrosphere.data.biome.BiomeFoliageDescription; +import electrosphere.engine.Globals; +import electrosphere.entity.Entity; +import electrosphere.entity.state.growth.ServerGrowthComponent; import electrosphere.entity.types.foliage.FoliageUtils; +import electrosphere.logger.LoggerInterface; import electrosphere.server.datacell.Realm; import electrosphere.server.datacell.ServerDataCell; import electrosphere.server.datacell.ServerWorldData; @@ -110,7 +114,11 @@ public class ServerContentGenerator { } if(toPlace != null){ String type = toPlace.getEntityIDs().get(random.nextInt(0,toPlace.getEntityIDs().size())); - FoliageUtils.serverSpawnTreeFoliage( + if(Globals.gameConfigCurrent.getFoliageMap().getType(type) == null){ + LoggerInterface.loggerEngine.WARNING("Foliage declared in biome " + biome.getDisplayName() + " does not exist " + type); + continue; + } + Entity foliage = FoliageUtils.serverSpawnTreeFoliage( realm, new Vector3d( realX, @@ -119,6 +127,9 @@ public class ServerContentGenerator { ), type ); + if(ServerGrowthComponent.hasServerGrowthComponent(foliage)){ + ServerGrowthComponent.getServerGrowthComponent(foliage).maxGrowth(); + } } } }