package com.dynious.biota.biosystem;
import com.dynious.biota.api.IPlant;
import com.dynious.biota.config.PlantConfig;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import net.minecraft.block.Block;
import net.minecraft.world.chunk.Chunk;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
public class BioSystemInitThread implements Callable
{
private static ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
private final BioSystem bioSystem;
public BioSystemInitThread(BioSystem bioSystem)
{
this.bioSystem = bioSystem;
}
@Override
public Object call()
{
float biomass = 0F;
Chunk chunk = bioSystem.chunkReference.get();
if (chunk != null)
{
for (int x = 0; x < 16; x++)
{
for (int y = 0; y < 256; y++)
{
for (int z = 0; z < 16; z++)
{
Block block = chunk.getBlock(x, y, z);
if (block instanceof IPlant)
{
int meta = chunk.getBlockMetadata(x, y, z);
biomass += PlantConfig.getPlantBlockBiomassValue(block, meta);
}
}
}
}
bioSystem.setBiomass(biomass);
}
return null;
}
public static void addBioSystem(BioSystem bioSystem)
{
listeningExecutorService.submit(new BioSystemInitThread(bioSystem));
}
}