refactor: move biomes to use user-defined naming conventions.

Replaced "Custom" with "UserDefined" in biome classes, factories, and references for consistency and clarity. Updated relevant imports, method signatures, and internal logic to align with the new terminology. This change improves readability and better represents the purpose of these biome-related components.
This commit is contained in:
Christian Bergschneider
2025-06-04 00:05:15 +02:00
parent 858adfe866
commit 56a1feb708
10 changed files with 54 additions and 50 deletions

View File

@@ -16,7 +16,6 @@ import java.time.Duration;
import java.util.concurrent.atomic.AtomicInteger;
import com.dfsek.terra.minestom.world.TerraMinestomWorld;
import com.dfsek.terra.minestom.world.TerraMinestomWorldBuilder;
public class TerraMinestomExample {

View File

@@ -24,7 +24,7 @@ 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.minestom.world.TerraMinestomWorldBuilder;
import com.dfsek.terra.minestom.api.TerraMinestomWorldBuilder;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.util.RGBLike;
@@ -37,6 +37,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -45,11 +46,13 @@ public final class TerraMinestomPlatform extends AbstractPlatform {
private final WorldHandle worldHandle;
private final ItemHandle itemHandle;
private final TypeLoader<PlatformBiome> biomeTypeLoader;
private final ArrayList<BaseAddon> platformAddons = new ArrayList<>(List.of(new MinestomAddon(this)));
public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader<PlatformBiome> biomeTypeLoader) {
public TerraMinestomPlatform(WorldHandle worldHandle, ItemHandle itemHandle, TypeLoader<PlatformBiome> biomeTypeLoader, BaseAddon... extraAddons) {
this.worldHandle = worldHandle;
this.itemHandle = itemHandle;
this.biomeTypeLoader = biomeTypeLoader;
this.platformAddons.addAll(List.of(extraAddons));
load();
getEventManager().callEvent(new PlatformInitializationEvent());
}
@@ -115,6 +118,11 @@ public final class TerraMinestomPlatform extends AbstractPlatform {
return file;
}
@Override
protected Iterable<BaseAddon> platformAddon() {
return platformAddons;
}
public TerraMinestomWorldBuilder worldBuilder(Instance instance) {
return new TerraMinestomWorldBuilder(this, instance);
}
@@ -122,9 +130,4 @@ public final class TerraMinestomPlatform extends AbstractPlatform {
public TerraMinestomWorldBuilder worldBuilder() {
return new TerraMinestomWorldBuilder(this, MinecraftServer.getInstanceManager().createInstanceContainer());
}
@Override
protected Iterable<BaseAddon> platformAddon() {
return List.of(new MinestomAddon(this));
}
}

View File

@@ -0,0 +1,15 @@
package com.dfsek.terra.minestom.api;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.minestom.biome.UserDefinedBiome;
/**
* BiomeFactory serves as a contract for creating custom user-defined biomes in Terra.
* Implementations of this interface are responsible for defining the logic to convert
* configured biomes and source biome data into instances of UserDefinedBiome.
*/
public interface BiomeFactory {
UserDefinedBiome create(ConfigPack pack, Biome source);
}

View File

@@ -1,18 +1,15 @@
package com.dfsek.terra.minestom.world;
package com.dfsek.terra.minestom.api;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.registry.CheckedRegistry;
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.biome.BiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory;
import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory;
import com.dfsek.terra.minestom.entity.DefaultEntityFactory;
import net.minestom.server.MinecraftServer;
import com.dfsek.terra.minestom.world.TerraMinestomWorld;
import net.minestom.server.instance.Instance;
import java.util.Random;
@@ -26,7 +23,7 @@ public class TerraMinestomWorldBuilder {
private long seed = new Random().nextLong();
private EntityFactory entityFactory = new DefaultEntityFactory();
private BlockEntityFactory blockEntityFactory = new DefaultBlockEntityFactory();
private BiomeFactory biomeFactory = new MinestomCustomBiomeFactory();
private BiomeFactory biomeFactory = new MinestomUserDefinedBiomeFactory();
public TerraMinestomWorldBuilder(TerraMinestomPlatform platform, Instance instance) {
this.platform = platform;

View File

@@ -1,9 +0,0 @@
package com.dfsek.terra.minestom.biome;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.biome.Biome;
public interface BiomeFactory {
NativeBiome create(ConfigPack pack, Biome source);
}

View File

@@ -1,7 +1,7 @@
package com.dfsek.terra.minestom.biome;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.registry.key.RegistryKey;
import com.dfsek.terra.minestom.api.BiomeFactory;
import com.dfsek.terra.minestom.config.VanillaBiomeProperties;
import net.kyori.adventure.key.Key;
@@ -17,12 +17,12 @@ import java.util.Locale;
import java.util.Objects;
public class MinestomCustomBiomeFactory implements BiomeFactory {
public class MinestomUserDefinedBiomeFactory implements BiomeFactory {
private final DynamicRegistry<Biome> biomeRegistry = MinecraftServer.getBiomeRegistry();
private final @NotNull Biome plainsBiome = Objects.requireNonNull(biomeRegistry.get(Key.key("minecraft:plains")));
@Override
public NativeBiome create(ConfigPack pack, com.dfsek.terra.api.world.biome.Biome source) {
public UserDefinedBiome create(ConfigPack pack, com.dfsek.terra.api.world.biome.Biome source) {
VanillaBiomeProperties properties = source.getContext().get(VanillaBiomeProperties.class);
DynamicRegistry.Key<Biome> parentKey = ((MinestomBiome) source.getPlatformBiome()).getHandle();
Biome parent = mergeNullable(biomeRegistry.get(parentKey), plainsBiome);
@@ -58,7 +58,7 @@ public class MinestomCustomBiomeFactory implements BiomeFactory {
.build();
DynamicRegistry.Key<Biome> registryKey = MinecraftServer.getBiomeRegistry().register(key, target);
return new NativeBiome(key, registryKey, source.getID(), target);
return new UserDefinedBiome(key, registryKey, source.getID(), target);
}
private static <T> T mergeNullable(T first, T second) {

View File

@@ -6,22 +6,22 @@ import com.dfsek.terra.api.world.biome.Biome;
import java.util.HashMap;
public class MinestomCustomBiomePool {
private final HashMap<String, NativeBiome> biomes = new HashMap<>();
private final MinestomCustomBiomeFactory factory;
public class MinestomUserDefinedBiomePool {
private final HashMap<String, UserDefinedBiome> biomes = new HashMap<>();
private final MinestomUserDefinedBiomeFactory factory;
private final ConfigPack configPack;
public MinestomCustomBiomePool(ConfigPack configPack, MinestomCustomBiomeFactory factory) {
public MinestomUserDefinedBiomePool(ConfigPack configPack, MinestomUserDefinedBiomeFactory factory) {
this.configPack = configPack;
this.factory = factory;
}
public NativeBiome getBiome(Biome source) {
NativeBiome nativeBiome = biomes.get(source.getID());
if(nativeBiome != null) return nativeBiome;
nativeBiome = factory.create(configPack, source);
biomes.put(source.getID(), nativeBiome);
return nativeBiome;
public UserDefinedBiome getBiome(Biome source) {
UserDefinedBiome userDefinedBiome = biomes.get(source.getID());
if(userDefinedBiome != null) return userDefinedBiome;
userDefinedBiome = factory.create(configPack, source);
biomes.put(source.getID(), userDefinedBiome);
return userDefinedBiome;
}
public void preloadBiomes(Iterable<Biome> biomesToLoad) {

View File

@@ -5,5 +5,5 @@ import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.world.biome.Biome;
public record NativeBiome(Key key, DynamicRegistry.Key<Biome> registry, String id, Biome biome) {
public record UserDefinedBiome(Key key, DynamicRegistry.Key<Biome> registry, String id, Biome biome) {
}

View File

@@ -7,9 +7,8 @@ import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.api.world.chunk.generation.stage.GenerationStage;
import com.dfsek.terra.api.world.chunk.generation.util.GeneratorWrapper;
import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomCustomBiomePool;
import com.dfsek.terra.minestom.biome.NativeBiome;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool;
import com.dfsek.terra.minestom.biome.UserDefinedBiome;
import com.dfsek.terra.minestom.chunk.CachedChunk;
import com.dfsek.terra.minestom.chunk.GeneratedChunkCache;
@@ -28,14 +27,14 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe
private final TerraMinestomWorld world;
private final BiomeProvider biomeProvider;
private ConfigPack pack;
private final MinestomCustomBiomePool biomePool;
private final MinestomUserDefinedBiomePool biomePool;
public MinestomChunkGeneratorWrapper(
Platform platform,
ChunkGenerator generator,
TerraMinestomWorld world,
ConfigPack pack,
MinestomCustomBiomePool biomePool
MinestomUserDefinedBiomePool biomePool
) {
this.generator = generator;
this.world = world;
@@ -61,8 +60,8 @@ public class MinestomChunkGeneratorWrapper implements Generator, GeneratorWrappe
UnitModifier modifier = unit.modifier();
chunk.writeRelative(modifier);
NativeBiome nativeBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed()));
modifier.fillBiome(nativeBiome.registry());
UserDefinedBiome userDefinedBiome = biomePool.getBiome(biomeProvider.getBiome(blockX, 100, blockZ, world.getSeed()));
modifier.fillBiome(userDefinedBiome.registry());
unit.fork(setter -> {
MinestomProtoWorld protoWorld = new MinestomProtoWorld(cache, x, z, world, setter);

View File

@@ -16,9 +16,9 @@ import com.dfsek.terra.api.world.info.WorldProperties;
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.biome.BiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomCustomBiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomCustomBiomePool;
import com.dfsek.terra.minestom.api.BiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool;
import com.dfsek.terra.minestom.block.MinestomBlockState;
import com.dfsek.terra.minestom.entity.MinestomEntity;
@@ -62,7 +62,7 @@ public final class TerraMinestomWorld implements ServerWorld, WorldProperties {
pack.getGeneratorProvider().newInstance(pack),
this,
pack,
new MinestomCustomBiomePool(pack, new MinestomCustomBiomeFactory())
new MinestomUserDefinedBiomePool(pack, new MinestomUserDefinedBiomeFactory())
);
this.entityFactory = entityFactory;