diff --git a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java index 1cf95a226..0130347df 100644 --- a/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java +++ b/platforms/minestom/example/src/main/java/com/dfsek/terra/minestom/TerraMinestomExample.java @@ -31,7 +31,8 @@ public class TerraMinestomExample { } public void attachTerra() { - world = TerraMinestomWorldBuilder.from(instance) + TerraMinestomPlatform platform = new TerraMinestomPlatform(); + world = platform.worldBuilder(instance) .defaultPack() .attach(); } diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java similarity index 69% rename from platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java rename to platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java index c63378a28..bce7fe270 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/MinestomPlatform.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/TerraMinestomPlatform.java @@ -2,6 +2,7 @@ package com.dfsek.terra.minestom; import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.loader.type.TypeLoader; + import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; @@ -14,34 +15,41 @@ import com.dfsek.terra.minestom.entity.MinestomEntityType; import com.dfsek.terra.minestom.item.MinestomItemHandle; import com.dfsek.terra.minestom.world.MinestomChunkGeneratorWrapper; import com.dfsek.terra.minestom.world.MinestomWorldHandle; -import com.dfsek.terra.registry.master.ConfigRegistry.PackLoadFailuresException; + +import com.dfsek.terra.minestom.world.TerraMinestomWorldBuilder; import net.minestom.server.MinecraftServer; +import net.minestom.server.instance.Instance; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; -import java.io.IOException; +public final class TerraMinestomPlatform extends AbstractPlatform { + private static final Logger LOGGER = LoggerFactory.getLogger(TerraMinestomPlatform.class); + private final WorldHandle worldHandle; + private final ItemHandle itemHandle; + private final TypeLoader biomeTypeLoader; -public final class MinestomPlatform extends AbstractPlatform { - private static final Logger LOGGER = LoggerFactory.getLogger(MinestomPlatform.class); - private static MinestomPlatform INSTANCE = null; - private final MinestomWorldHandle worldHandle = new MinestomWorldHandle(); - private final MinestomItemHandle itemHandle = new MinestomItemHandle(); - - private MinestomPlatform() { + public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader biomeTypeLoader) { + this.worldHandle = worldHandle; + this.itemHandle = itemHandle; + this.biomeTypeLoader = biomeTypeLoader; load(); getEventManager().callEvent(new PlatformInitializationEvent()); } + public TerraMinestomPlatform() { + this(new MinestomWorldHandle(), new MinestomItemHandle(), new MinestomBiomeLoader()); + } + @Override public void register(TypeRegistry registry) { super.register(registry); registry - .registerLoader(PlatformBiome.class, new MinestomBiomeLoader()) + .registerLoader(PlatformBiome.class, biomeTypeLoader) .registerLoader(EntityType.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> new MinestomEntityType((String) o)) .registerLoader(BlockState.class, (TypeLoader) (annotatedType, o, configLoader, depthTracker) -> worldHandle.createBlockState((String) o)); } @@ -82,16 +90,17 @@ public final class MinestomPlatform extends AbstractPlatform { @Override public @NotNull File getDataFolder() { String pathName = System.getProperty("terra.datafolder"); - if (pathName == null) pathName = "./terra/"; + if(pathName == null) pathName = "./terra/"; File file = new File(pathName); if(!file.exists()) file.mkdirs(); return file; } - public static MinestomPlatform getInstance() { - if(INSTANCE == null) { - INSTANCE = new MinestomPlatform(); - } - return INSTANCE; + public TerraMinestomWorldBuilder worldBuilder(Instance instance) { + return new TerraMinestomWorldBuilder(this, instance); + } + + public TerraMinestomWorldBuilder worldBuilder() { + return new TerraMinestomWorldBuilder(this, MinecraftServer.getInstanceManager().createInstanceContainer()); } } \ No newline at end of file diff --git a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java index 46ae1691c..3c77c372b 100644 --- a/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java +++ b/platforms/minestom/src/main/java/com/dfsek/terra/minestom/world/TerraMinestomWorldBuilder.java @@ -4,7 +4,7 @@ import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.minestom.MinestomPlatform; +import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.api.BlockEntityFactory; import com.dfsek.terra.minestom.api.EntityFactory; import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory; @@ -18,20 +18,16 @@ import java.util.function.Function; public class TerraMinestomWorldBuilder { + private final TerraMinestomPlatform platform; private final Instance instance; private ConfigPack pack; private long seed = new Random().nextLong(); private EntityFactory entityFactory = new DefaultEntityFactory(); private BlockEntityFactory blockEntityFactory = new DefaultBlockEntityFactory(); - private TerraMinestomWorldBuilder(Instance instance) { this.instance = instance; } - - public static TerraMinestomWorldBuilder from(Instance instance) { - return new TerraMinestomWorldBuilder(instance); - } - - public static TerraMinestomWorldBuilder builder() { - return new TerraMinestomWorldBuilder(MinecraftServer.getInstanceManager().createInstanceContainer()); + public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) { + this.platform = platform; + this.instance = instance; } public TerraMinestomWorldBuilder pack(ConfigPack pack) { @@ -40,13 +36,13 @@ public class TerraMinestomWorldBuilder { } public TerraMinestomWorldBuilder packById(String id) { - this.pack = MinestomPlatform.getInstance().getConfigRegistry().getByID(id).orElseThrow(); + this.pack = platform.getConfigRegistry().getByID(id).orElseThrow(); return this; } public TerraMinestomWorldBuilder findPack(Function, ConfigPack> fn) { - this.pack = fn.apply(MinestomPlatform.getInstance().getConfigRegistry()); + this.pack = fn.apply(platform.getConfigRegistry()); return this; }