create TaskScheduler

This commit is contained in:
dfsek
2021-04-21 15:37:10 -07:00
parent 901677d2c3
commit 5821302eb8
9 changed files with 127 additions and 1 deletions

View File

@@ -24,6 +24,7 @@ import com.dfsek.terra.api.platform.world.Tree;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.LockedRegistry;
import com.dfsek.terra.api.task.TaskScheduler;
import com.dfsek.terra.api.transform.NotNullValidator;
import com.dfsek.terra.api.transform.Transformer;
import com.dfsek.terra.api.util.logging.DebugLogger;
@@ -38,6 +39,7 @@ import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
import com.dfsek.terra.fabric.mixin.GeneratorTypeAccessor;
import com.dfsek.terra.fabric.task.FabricTaskScheduler;
import com.dfsek.terra.fabric.world.FabricAdapter;
import com.dfsek.terra.fabric.world.FabricBiome;
import com.dfsek.terra.fabric.world.FabricTree;
@@ -98,7 +100,6 @@ import static net.minecraft.server.command.CommandManager.literal;
public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(DefaultFeatureConfig.CODEC);
public static final ConfiguredFeature<?, ?> POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate(Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE));
private static TerraFabricPlugin instance;
@@ -134,6 +135,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private final Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>()
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>())
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build();
private final TaskScheduler scheduler = new FabricTaskScheduler();
private File dataFolder;
public static TerraFabricPlugin getInstance() {
@@ -391,6 +394,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
return eventManager;
}
@Override
public TaskScheduler getScheduler() {
return scheduler;
}
@Addon("Terra-Fabric")
@Author("Terra")
@Version("1.0.0")

View File

@@ -0,0 +1,20 @@
package com.dfsek.terra.fabric.task;
import com.dfsek.terra.api.task.TaskScheduler;
import net.minecraft.server.MinecraftServer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class FabricTaskScheduler implements TaskScheduler {
private final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()-1);
@Override
public void runTaskAsynchronously(Runnable task, long ticks) {
runTask(() -> executorService.execute(task), ticks);
}
@Override
public void runTask(Runnable task, long ticks) {
// TODO implementation
}
}