package com.bioxx.tfc2.handlers; import java.util.Vector; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import com.bioxx.jmapgen.IslandMap; import com.bioxx.jmapgen.graph.Center; import com.bioxx.jmapgen.processing.AnimalProcessor; import com.bioxx.tfc2.api.AnimalSpawnRegistry; import com.bioxx.tfc2.api.AnimalSpawnRegistry.SpawnEntry; import com.bioxx.tfc2.api.AnimalSpawnRegistry.SpawnGroup; import com.bioxx.tfc2.api.events.IslandUpdateEvent; public class IslandUpdateHandler { @SubscribeEvent public void handle(IslandUpdateEvent event) { for(SpawnEntry entry : event.map.getIslandData().animalEntries.values()) { SpawnGroup group = AnimalSpawnRegistry.getInstance().getGroupFromName(entry.getGroupName()); if(entry.hasRoomForNewSpawns()) { //Don't spawn new entities unless there is enough for a new group if(entry.getAmountToSpawn() < group.getMaxGroupSpawn()) continue; genSingleGroup(group, event.map); } } } public int genSingleGroup(SpawnGroup group, IslandMap map) { Vector<Center> spawnableList = AnimalProcessor.GetSpawnableCenters(group, map); Center c = spawnableList.get(map.mapRandom.nextInt(spawnableList.size())); NBTTagList spawnList = AnimalProcessor.GetCenterSpawnList(c); int groupCount = group.getMinGroupSpawn() + map.mapRandom.nextInt(1+group.getMaxGroupSpawn() - group.getMinGroupSpawn()); for(int j = 0; j < groupCount; j++) { spawnList.appendTag(new NBTTagString(group.getGroupName())); } return groupCount; } }