mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-04 23:06:05 +00:00
fabric scheduler impl
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package com.dfsek.terra.fabric;
|
||||
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.dedicated.MinecraftDedicatedServer;
|
||||
|
||||
public class FabricUtil {
|
||||
@SuppressWarnings("deprecation")
|
||||
public static MinecraftServer getServer() {
|
||||
Object game = FabricLoader.getInstance().getGameInstance();
|
||||
if(game instanceof MinecraftDedicatedServer) {
|
||||
return (MinecraftDedicatedServer) game;
|
||||
} else if(game instanceof MinecraftClient) {
|
||||
MinecraftClient client = (MinecraftClient) game;
|
||||
if(!client.isIntegratedServerRunning()) {
|
||||
throw new IllegalStateException("Client is not running integrated server: " + client);
|
||||
}
|
||||
return client.getServer();
|
||||
}
|
||||
throw new IllegalStateException("No MinecraftServer initialized: " + game);
|
||||
}
|
||||
}
|
||||
@@ -40,11 +40,7 @@ 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;
|
||||
import com.dfsek.terra.fabric.world.FabricWorldHandle;
|
||||
import com.dfsek.terra.fabric.world.TerraBiomeSource;
|
||||
import com.dfsek.terra.fabric.world.*;
|
||||
import com.dfsek.terra.fabric.world.features.PopulatorFeature;
|
||||
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
|
||||
import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper;
|
||||
@@ -69,7 +65,6 @@ import net.minecraft.util.registry.RegistryKey;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.biome.BiomeEffects;
|
||||
import net.minecraft.world.biome.GenerationSettings;
|
||||
import net.minecraft.world.biome.SpawnSettings;
|
||||
import net.minecraft.world.gen.GenerationStep;
|
||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
||||
@@ -77,7 +72,6 @@ import net.minecraft.world.gen.decorator.Decorator;
|
||||
import net.minecraft.world.gen.decorator.NopeDecoratorConfig;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeatures;
|
||||
import net.minecraft.world.gen.feature.DefaultBiomeFeatures;
|
||||
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
|
||||
import net.minecraft.world.gen.feature.FeatureConfig;
|
||||
import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder;
|
||||
@@ -88,12 +82,7 @@ import org.apache.logging.log4j.LogManager;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
import static net.minecraft.server.command.CommandManager.argument;
|
||||
import static net.minecraft.server.command.CommandManager.literal;
|
||||
@@ -403,7 +392,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
@Author("Terra")
|
||||
@Version("1.0.0")
|
||||
private static final class FabricAddon extends TerraAddon implements EventListener {
|
||||
|
||||
private final TerraPlugin main;
|
||||
|
||||
private FabricAddon(TerraPlugin main) {
|
||||
@@ -440,7 +428,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
injectTree(treeRegistry, "WARPED_FUNGUS", ConfiguredFeatures.WARPED_FUNGI);
|
||||
}
|
||||
|
||||
|
||||
private void injectTree(CheckedRegistry<Tree> registry, String id, ConfiguredFeature<?, ?> tree) {
|
||||
try {
|
||||
registry.add(id, new FabricTree(tree));
|
||||
|
||||
@@ -1,20 +1,25 @@
|
||||
package com.dfsek.terra.fabric.task;
|
||||
|
||||
import com.dfsek.terra.api.task.TaskScheduler;
|
||||
import com.dfsek.terra.fabric.FabricUtil;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import net.minecraft.server.ServerTask;
|
||||
import net.minecraft.util.Util;
|
||||
|
||||
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);
|
||||
runTask(() -> Util.getMainWorkerExecutor().execute(task), ticks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runTaskAsynchronously(Runnable task) {
|
||||
Util.getMainWorkerExecutor().execute(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runTask(Runnable task, long ticks) {
|
||||
// TODO implementation
|
||||
MinecraftServer server = FabricUtil.getServer();
|
||||
server.send(new ServerTask(server.getTicks() + (int) ticks, task));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user