This commit is contained in:
Zoe Gidiere
2025-12-10 02:55:26 -07:00
parent 12f1b3f8fc
commit ddc8cc7db5
23 changed files with 69 additions and 86 deletions

View File

@@ -7,11 +7,11 @@
package com.dfsek.terra.addons.terrascript.parser.lang.functions; package com.dfsek.terra.addons.terrascript.parser.lang.functions;
import java.util.List;
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable;
import com.dfsek.terra.addons.terrascript.tokenizer.Position; import com.dfsek.terra.addons.terrascript.tokenizer.Position;
import java.util.List;
public interface FunctionBuilder<T extends Function<?>> { public interface FunctionBuilder<T extends Function<?>> {
T build(List<Returnable<?>> argumentList, Position position); T build(List<Returnable<?>> argumentList, Position position);

View File

@@ -52,7 +52,8 @@ import com.dfsek.terra.api.util.reflection.TypeKey;
public class OpenRegistryImpl<T> implements OpenRegistry<T> { public class OpenRegistryImpl<T> implements OpenRegistry<T> {
private static final Entry<?> NULL = new Entry<>(null); private static final Entry<?> NULL = new Entry<>(null);
private final Map<RegistryKey, Entry<T>> objects; private final Map<RegistryKey, Entry<T>> objects;
private final ListMultimap<String, Pair<RegistryKey, Entry<T>>> objectIDs = Multimaps.newListMultimap(new ConcurrentHashMap<>(), ArrayList::new); private final ListMultimap<String, Pair<RegistryKey, Entry<T>>> objectIDs = Multimaps.newListMultimap(new ConcurrentHashMap<>(),
ArrayList::new);
private final TypeKey<T> typeKey; private final TypeKey<T> typeKey;
public OpenRegistryImpl(TypeKey<T> typeKey) { public OpenRegistryImpl(TypeKey<T> typeKey) {

View File

@@ -21,7 +21,6 @@ import java.io.IOException;
import java.io.Serial; import java.io.Serial;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Stream; import java.util.stream.Stream;

View File

@@ -19,7 +19,7 @@ public class JeBlockState {
private JeBlockState(String data) { private JeBlockState(String data) {
// TODO: support block state with nbt (identifier[properties]{nbt}), for now we just ignore it // TODO: support block state with nbt (identifier[properties]{nbt}), for now we just ignore it
int braceIndex = data.indexOf('{'); int braceIndex = data.indexOf('{');
if (braceIndex != -1) { if(braceIndex != -1) {
data = data.substring(0, braceIndex); data = data.substring(0, braceIndex);
} }

View File

@@ -13,7 +13,6 @@ import org.allaymc.api.block.type.BlockStateGetter;
import org.allaymc.api.block.type.BlockTypes; import org.allaymc.api.block.type.BlockTypes;
import org.allaymc.api.item.type.ItemType; import org.allaymc.api.item.type.ItemType;
import org.allaymc.api.item.type.ItemTypeGetter; import org.allaymc.api.item.type.ItemTypeGetter;
import org.allaymc.api.world.data.DimensionInfo;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.io.IOException; import java.io.IOException;
@@ -83,7 +82,7 @@ public final class Mapping {
} }
public static String dimensionIdBeToJe(String beDimensionId) { public static String dimensionIdBeToJe(String beDimensionId) {
return switch (beDimensionId) { return switch(beDimensionId) {
case "overworld" -> "minecraft:overworld"; case "overworld" -> "minecraft:overworld";
case "nether" -> "minecraft:the_nether"; case "nether" -> "minecraft:the_nether";
case "the_end" -> "minecraft:the_end"; case "the_end" -> "minecraft:the_end";

View File

@@ -1,12 +1,11 @@
package com.dfsek.terra.allay.delegate; package com.dfsek.terra.allay.delegate;
import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.seismic.type.vector.Vector3;
import org.allaymc.api.blockentity.BlockEntity;
import com.dfsek.terra.allay.Mapping; import com.dfsek.terra.allay.Mapping;
import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.BlockState;
import org.allaymc.api.blockentity.BlockEntity;
/** /**
* @author daoge_cmd * @author daoge_cmd

View File

@@ -22,9 +22,9 @@ public record AllayChunk(ServerWorld world, Chunk allayChunk) implements com.dfs
@Override @Override
public void setBlock(int x, int y, int z, BlockState data, boolean physics) { public void setBlock(int x, int y, int z, BlockState data, boolean physics) {
var dimensionInfo = allayChunk.getDimensionInfo(); var dimensionInfo = allayChunk.getDimensionInfo();
if (x < 0 || x > 15 || if(x < 0 || x > 15 ||
z < 0 || z > 15 || z < 0 || z > 15 ||
y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) { y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) {
return; return;
} }

View File

@@ -1,7 +1,7 @@
package com.dfsek.terra.allay.delegate; package com.dfsek.terra.allay.delegate;
import org.allaymc.api.block.property.type.BlockPropertyTypes;
import org.allaymc.api.block.data.BlockTags; import org.allaymc.api.block.data.BlockTags;
import org.allaymc.api.block.property.type.BlockPropertyTypes;
import org.allaymc.api.block.type.BlockTypes; import org.allaymc.api.block.type.BlockTypes;
import org.allaymc.api.world.chunk.UnsafeChunk; import org.allaymc.api.world.chunk.UnsafeChunk;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -27,9 +27,9 @@ public record AllayProtoChunk(UnsafeChunk allayChunk) implements ProtoChunk {
@Override @Override
public void setBlock(int x, int y, int z, @NotNull BlockState blockState) { public void setBlock(int x, int y, int z, @NotNull BlockState blockState) {
var dimensionInfo = allayChunk.getDimensionInfo(); var dimensionInfo = allayChunk.getDimensionInfo();
if (x < 0 || x > 15 || if(x < 0 || x > 15 ||
z < 0 || z > 15 || z < 0 || z > 15 ||
y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) { y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) {
return; return;
} }

View File

@@ -1,8 +1,8 @@
package com.dfsek.terra.allay.delegate; package com.dfsek.terra.allay.delegate;
import com.dfsek.seismic.type.vector.Vector3; import com.dfsek.seismic.type.vector.Vector3;
import org.allaymc.api.block.property.type.BlockPropertyTypes;
import org.allaymc.api.block.data.BlockTags; import org.allaymc.api.block.data.BlockTags;
import org.allaymc.api.block.property.type.BlockPropertyTypes;
import org.allaymc.api.block.type.BlockTypes; import org.allaymc.api.block.type.BlockTypes;
import org.allaymc.api.world.generator.context.OtherChunkAccessibleContext; import org.allaymc.api.world.generator.context.OtherChunkAccessibleContext;
@@ -26,6 +26,23 @@ public record AllayProtoWorld(AllayServerWorld allayServerWorld, OtherChunkAcces
private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState( private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState(
BlockPropertyTypes.LIQUID_DEPTH.createValue(0)); BlockPropertyTypes.LIQUID_DEPTH.createValue(0));
// TODO: use method in OtherChunkAccessibleContext directly after bumped allay-api version to 0.14.0
private static org.allaymc.api.blockentity.BlockEntity getBlockEntity(OtherChunkAccessibleContext context, int x, int y, int z) {
var currentChunk = context.getCurrentChunk();
var currentChunkX = currentChunk.getX();
var currentChunkZ = currentChunk.getZ();
var dimInfo = currentChunk.getDimensionInfo();
if(x >= currentChunkX * 16 && x < currentChunkX * 16 + 16 &&
z >= currentChunkZ * 16 && z < currentChunkZ * 16 + 16 &&
y >= dimInfo.minHeight() && y <= dimInfo.maxHeight()) {
return currentChunk.getBlockEntity(x & 15, y, z & 15);
} else {
var chunk = context.getChunkSource().getChunk(x >> 4, z >> 4);
return chunk == null ? null : chunk.getBlockEntity(x & 15, y, z & 15);
}
}
@Override @Override
public int centerChunkX() { public int centerChunkX() {
return context.getCurrentChunk().getX(); return context.getCurrentChunk().getX();
@@ -44,7 +61,7 @@ public record AllayProtoWorld(AllayServerWorld allayServerWorld, OtherChunkAcces
@Override @Override
public void setBlockState(int x, int y, int z, BlockState data, boolean physics) { public void setBlockState(int x, int y, int z, BlockState data, boolean physics) {
var dimensionInfo = allayServerWorld.allayDimension().getDimensionInfo(); var dimensionInfo = allayServerWorld.allayDimension().getDimensionInfo();
if (y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) { if(y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) {
return; return;
} }
@@ -71,23 +88,6 @@ public record AllayProtoWorld(AllayServerWorld allayServerWorld, OtherChunkAcces
return new AllayBlockEntity(getBlockEntity(context, x, y, z)); return new AllayBlockEntity(getBlockEntity(context, x, y, z));
} }
// TODO: use method in OtherChunkAccessibleContext directly after bumped allay-api version to 0.14.0
private static org.allaymc.api.blockentity.BlockEntity getBlockEntity(OtherChunkAccessibleContext context, int x, int y, int z) {
var currentChunk = context.getCurrentChunk();
var currentChunkX = currentChunk.getX();
var currentChunkZ = currentChunk.getZ();
var dimInfo = currentChunk.getDimensionInfo();
if (x >= currentChunkX * 16 && x < currentChunkX * 16 + 16 &&
z >= currentChunkZ * 16 && z < currentChunkZ * 16 + 16 &&
y >= dimInfo.minHeight() && y <= dimInfo.maxHeight()) {
return currentChunk.getBlockEntity(x & 15, y, z & 15);
} else {
var chunk = context.getChunkSource().getChunk(x >> 4, z >> 4);
return chunk == null ? null : chunk.getBlockEntity(x & 15, y, z & 15);
}
}
@Override @Override
public ChunkGenerator getGenerator() { public ChunkGenerator getGenerator() {
return allayServerWorld.getGenerator(); return allayServerWorld.getGenerator();

View File

@@ -28,7 +28,7 @@ public record AllayServerWorld(AllayGeneratorWrapper allayGeneratorWrapper, Dime
@Override @Override
public void setBlockState(int x, int y, int z, BlockState data, boolean physics) { public void setBlockState(int x, int y, int z, BlockState data, boolean physics) {
var dimensionInfo = allayDimension.getDimensionInfo(); var dimensionInfo = allayDimension.getDimensionInfo();
if (y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) { if(y < dimensionInfo.minHeight() || y > dimensionInfo.maxHeight()) {
return; return;
} }

View File

@@ -1,9 +1,9 @@
package com.dfsek.terra.allay.delegate; package com.dfsek.terra.allay.delegate;
import com.dfsek.terra.api.world.info.WorldProperties;
import org.allaymc.api.world.data.DimensionInfo; import org.allaymc.api.world.data.DimensionInfo;
import com.dfsek.terra.api.world.info.WorldProperties;
/** /**
* @author daoge_cmd * @author daoge_cmd

View File

@@ -1,8 +1,5 @@
package com.dfsek.terra.allay.generator; package com.dfsek.terra.allay.generator;
import com.dfsek.terra.allay.Mapping;
import com.dfsek.terra.allay.delegate.AllayWorldProperties;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import org.allaymc.api.utils.AllayStringUtils; import org.allaymc.api.utils.AllayStringUtils;
import org.allaymc.api.world.biome.BiomeType; import org.allaymc.api.world.biome.BiomeType;
@@ -14,10 +11,12 @@ import org.allaymc.api.world.generator.context.PopulateContext;
import org.allaymc.api.world.generator.function.Noiser; import org.allaymc.api.world.generator.function.Noiser;
import org.allaymc.api.world.generator.function.Populator; import org.allaymc.api.world.generator.function.Populator;
import com.dfsek.terra.allay.Mapping;
import com.dfsek.terra.allay.TerraAllayPlugin; import com.dfsek.terra.allay.TerraAllayPlugin;
import com.dfsek.terra.allay.delegate.AllayProtoChunk; import com.dfsek.terra.allay.delegate.AllayProtoChunk;
import com.dfsek.terra.allay.delegate.AllayProtoWorld; import com.dfsek.terra.allay.delegate.AllayProtoWorld;
import com.dfsek.terra.allay.delegate.AllayServerWorld; import com.dfsek.terra.allay.delegate.AllayServerWorld;
import com.dfsek.terra.allay.delegate.AllayWorldProperties;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
@@ -59,7 +58,7 @@ public class AllayGeneratorWrapper implements GeneratorWrapper {
this.worldProperties = new AllayWorldProperties(this.seed, dimension.getDimensionInfo()); this.worldProperties = new AllayWorldProperties(this.seed, dimension.getDimensionInfo());
var metaPackName = options.get(OPTION_META_PACK_NAME); var metaPackName = options.get(OPTION_META_PACK_NAME);
if (metaPackName != null) { if(metaPackName != null) {
setConfigPack(getConfigPackByMeta(metaPackName, dimension.getDimensionInfo())); setConfigPack(getConfigPackByMeta(metaPackName, dimension.getDimensionInfo()));
return; return;
} }

View File

@@ -1,6 +1,7 @@
package com.dfsek.terra.allay.handle; package com.dfsek.terra.allay.handle;
import org.allaymc.api.registry.Registries; import org.allaymc.api.registry.Registries;
import org.allaymc.api.utils.identifier.Identifier;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -12,8 +13,6 @@ import com.dfsek.terra.api.handle.ItemHandle;
import com.dfsek.terra.api.inventory.Item; import com.dfsek.terra.api.inventory.Item;
import com.dfsek.terra.api.inventory.item.Enchantment; import com.dfsek.terra.api.inventory.item.Enchantment;
import org.allaymc.api.utils.identifier.Identifier;
/** /**
* @author daoge_cmd * @author daoge_cmd

View File

@@ -3,10 +3,10 @@ package com.dfsek.terra.bukkit;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.dfsek.terra.bukkit.util.VersionUtil;
import java.util.List; import java.util.List;
import com.dfsek.terra.bukkit.util.VersionUtil;
public interface NMSInitializer { public interface NMSInitializer {
List<String> SUPPORTED_VERSIONS = List.of("v1.21.9", "v1.21.10"); List<String> SUPPORTED_VERSIONS = List.of("v1.21.9", "v1.21.10");
@@ -16,8 +16,9 @@ public interface NMSInitializer {
static PlatformImpl init(TerraBukkitPlugin plugin) { static PlatformImpl init(TerraBukkitPlugin plugin) {
Logger logger = LoggerFactory.getLogger(NMSInitializer.class); Logger logger = LoggerFactory.getLogger(NMSInitializer.class);
if (!SUPPORTED_VERSIONS.contains(MINECRAFT_VERSION)) { if(!SUPPORTED_VERSIONS.contains(MINECRAFT_VERSION)) {
logger.error("You are running your server on Minecraft version {} which is not supported by this version of Terra.", MINECRAFT_VERSION); logger.error("You are running your server on Minecraft version {} which is not supported by this version of Terra.",
MINECRAFT_VERSION);
String bypassKey = "IKnowThereAreNoNMSBindingsFor" + MINECRAFT_VERSION.replace(".", "_") + "ButIWillProceedAnyway"; String bypassKey = "IKnowThereAreNoNMSBindingsFor" + MINECRAFT_VERSION.replace(".", "_") + "ButIWillProceedAnyway";
if(System.getProperty(bypassKey) == null) { if(System.getProperty(bypassKey) == null) {

View File

@@ -17,12 +17,12 @@
package com.dfsek.terra.bukkit.util; package com.dfsek.terra.bukkit.util;
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import static io.papermc.lib.PaperLib.suggestPaper; import static io.papermc.lib.PaperLib.suggestPaper;

View File

@@ -2,12 +2,6 @@ package com.dfsek.terra.minestom;
import com.dfsek.tectonic.api.TypeRegistry; import com.dfsek.tectonic.api.TypeRegistry;
import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.tectonic.api.loader.type.TypeLoader;
import com.dfsek.terra.minestom.api.BiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool;
import net.kyori.adventure.key.Key; import net.kyori.adventure.key.Key;
import net.kyori.adventure.util.RGBLike; import net.kyori.adventure.util.RGBLike;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
@@ -32,8 +26,11 @@ import com.dfsek.terra.api.handle.ItemHandle;
import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.handle.WorldHandle;
import com.dfsek.terra.api.world.biome.PlatformBiome; import com.dfsek.terra.api.world.biome.PlatformBiome;
import com.dfsek.terra.minestom.addon.MinestomAddon; import com.dfsek.terra.minestom.addon.MinestomAddon;
import com.dfsek.terra.minestom.api.BiomeFactory;
import com.dfsek.terra.minestom.api.TerraMinestomWorldBuilder; import com.dfsek.terra.minestom.api.TerraMinestomWorldBuilder;
import com.dfsek.terra.minestom.biome.MinestomBiomeLoader; import com.dfsek.terra.minestom.biome.MinestomBiomeLoader;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomeFactory;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool;
import com.dfsek.terra.minestom.config.BiomeAdditionsSoundTemplate; import com.dfsek.terra.minestom.config.BiomeAdditionsSoundTemplate;
import com.dfsek.terra.minestom.config.BiomeMoodSoundTemplate; import com.dfsek.terra.minestom.config.BiomeMoodSoundTemplate;
import com.dfsek.terra.minestom.config.BiomeParticleConfigTemplate; import com.dfsek.terra.minestom.config.BiomeParticleConfigTemplate;
@@ -70,6 +67,10 @@ public final class TerraMinestomPlatform extends AbstractPlatform {
this(new MinestomWorldHandle(), new MinestomItemHandle(), new MinestomBiomeLoader(), new MinestomUserDefinedBiomeFactory()); this(new MinestomWorldHandle(), new MinestomItemHandle(), new MinestomBiomeLoader(), new MinestomUserDefinedBiomeFactory());
} }
public static Builder builder() {
return new Builder();
}
@Override @Override
public void register(TypeRegistry registry) { public void register(TypeRegistry registry) {
super.register(registry); super.register(registry);
@@ -146,16 +147,13 @@ public final class TerraMinestomPlatform extends AbstractPlatform {
return worldBuilder(MinecraftServer.getInstanceManager().createInstanceContainer()); return worldBuilder(MinecraftServer.getInstanceManager().createInstanceContainer());
} }
public static Builder builder() {
return new Builder();
}
public static class Builder { public static class Builder {
private final List<BaseAddon> platformAddons = new ArrayList<>();
private @Nullable WorldHandle worldHandle; private @Nullable WorldHandle worldHandle;
private @Nullable ItemHandle itemHandle; private @Nullable ItemHandle itemHandle;
private @Nullable TypeLoader<PlatformBiome> biomeTypeLoader; private @Nullable TypeLoader<PlatformBiome> biomeTypeLoader;
private @Nullable BiomeFactory biomeFactory; private @Nullable BiomeFactory biomeFactory;
private final List<BaseAddon> platformAddons = new ArrayList<>();
public Builder worldHandle(@Nullable WorldHandle worldHandle) { public Builder worldHandle(@Nullable WorldHandle worldHandle) {
this.worldHandle = worldHandle; this.worldHandle = worldHandle;

View File

@@ -1,8 +1,9 @@
package com.dfsek.terra.minestom.api; package com.dfsek.terra.minestom.api;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool;
import net.minestom.server.instance.Instance; import net.minestom.server.instance.Instance;
import net.minestom.server.registry.RegistryKey;
import net.minestom.server.world.DimensionType;
import org.jspecify.annotations.NonNull;
import java.util.Random; import java.util.Random;
import java.util.function.Function; import java.util.function.Function;
@@ -10,14 +11,11 @@ import java.util.function.Function;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.TerraMinestomPlatform;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool;
import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory; import com.dfsek.terra.minestom.block.DefaultBlockEntityFactory;
import com.dfsek.terra.minestom.entity.DefaultEntityFactory; import com.dfsek.terra.minestom.entity.DefaultEntityFactory;
import com.dfsek.terra.minestom.world.TerraMinestomWorld; import com.dfsek.terra.minestom.world.TerraMinestomWorld;
import net.minestom.server.registry.RegistryKey;
import net.minestom.server.world.DimensionType;
import org.jspecify.annotations.NonNull;
public class TerraMinestomWorldBuilder { public class TerraMinestomWorldBuilder {
private final TerraMinestomPlatform platform; private final TerraMinestomPlatform platform;

View File

@@ -4,9 +4,6 @@ import com.dfsek.tectonic.api.depth.DepthTracker;
import com.dfsek.tectonic.api.exception.LoadException; import com.dfsek.tectonic.api.exception.LoadException;
import com.dfsek.tectonic.api.loader.ConfigLoader; import com.dfsek.tectonic.api.loader.ConfigLoader;
import com.dfsek.tectonic.api.loader.type.TypeLoader; import com.dfsek.tectonic.api.loader.type.TypeLoader;
import com.dfsek.terra.api.world.biome.PlatformBiome;
import net.kyori.adventure.key.Key; import net.kyori.adventure.key.Key;
import net.minestom.server.registry.RegistryKey; import net.minestom.server.registry.RegistryKey;
import org.intellij.lang.annotations.Subst; import org.intellij.lang.annotations.Subst;
@@ -14,6 +11,8 @@ import org.jetbrains.annotations.NotNull;
import java.lang.reflect.AnnotatedType; import java.lang.reflect.AnnotatedType;
import com.dfsek.terra.api.world.biome.PlatformBiome;
public class MinestomBiomeLoader implements TypeLoader<PlatformBiome> { public class MinestomBiomeLoader implements TypeLoader<PlatformBiome> {
@Override @Override

View File

@@ -12,8 +12,8 @@ import com.dfsek.terra.api.block.state.properties.Property;
public class MinestomBlockState implements BlockState { public class MinestomBlockState implements BlockState {
private final Block block;
public static final MinestomBlockState AIR = new MinestomBlockState(Block.AIR); public static final MinestomBlockState AIR = new MinestomBlockState(Block.AIR);
private final Block block;
public MinestomBlockState(Block block) { public MinestomBlockState(Block block) {
if(block == null) { if(block == null) {

View File

@@ -33,7 +33,7 @@ public class CachedChunk implements ProtoChunk {
Block block = (Block) blockState.getHandle(); Block block = (Block) blockState.getHandle();
if(block == null) return; if(block == null) return;
int index = getIndex(x, y, z); int index = getIndex(x, y, z);
if (index > blocks.length || index < 0) return; if(index > blocks.length || index < 0) return;
blocks[index] = block; blocks[index] = block;
} }
@@ -45,7 +45,7 @@ public class CachedChunk implements ProtoChunk {
@Override @Override
public @NotNull BlockState getBlock(int x, int y, int z) { public @NotNull BlockState getBlock(int x, int y, int z) {
int index = getIndex(x, y, z); int index = getIndex(x, y, z);
if (index > blocks.length || index < 0) return MinestomBlockState.AIR; if(index > blocks.length || index < 0) return MinestomBlockState.AIR;
return new MinestomBlockState(blocks[index]); return new MinestomBlockState(blocks[index]);
} }

View File

@@ -3,19 +3,10 @@ package com.dfsek.terra.minestom.config;
import com.dfsek.tectonic.api.config.template.annotations.Default; import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value; import com.dfsek.tectonic.api.config.template.annotations.Value;
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
import net.kyori.adventure.nbt.BinaryTagIO;
import net.kyori.adventure.nbt.CompoundBinaryTag;
import net.kyori.adventure.nbt.TagStringIO;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentParticle;
import net.minestom.server.particle.Particle; import net.minestom.server.particle.Particle;
import net.minestom.server.world.biome.BiomeEffects; import net.minestom.server.world.biome.BiomeEffects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.io.IOException;
public class BiomeParticleConfigTemplate implements ObjectTemplate<BiomeEffects.Particle> { public class BiomeParticleConfigTemplate implements ObjectTemplate<BiomeEffects.Particle> {
@Value("particle") @Value("particle")
@@ -34,8 +25,9 @@ public class BiomeParticleConfigTemplate implements ObjectTemplate<BiomeEffects.
String[] parts = particle.split("\\{"); String[] parts = particle.split("\\{");
Particle parsedParticle = Particle.fromKey(parts[0]); Particle parsedParticle = Particle.fromKey(parts[0]);
if (parts.length > 1) { if(parts.length > 1) {
LoggerFactory.getLogger(BiomeParticleConfigTemplate.class).warn("Particle {} has additional data, particle will be ignored.", particle); LoggerFactory.getLogger(BiomeParticleConfigTemplate.class).warn("Particle {} has additional data, particle will be ignored.",
particle);
return null; return null;
} }

View File

@@ -1,10 +1,10 @@
package com.dfsek.terra.minestom.entity; package com.dfsek.terra.minestom.entity;
import com.dfsek.terra.minestom.api.EntityFactory;
import net.minestom.server.entity.Entity; import net.minestom.server.entity.Entity;
import net.minestom.server.entity.EntityType; import net.minestom.server.entity.EntityType;
import com.dfsek.terra.minestom.api.EntityFactory;
public class DefaultEntityFactory implements EntityFactory { public class DefaultEntityFactory implements EntityFactory {
@Override @Override

View File

@@ -20,7 +20,6 @@ import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator; import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
import com.dfsek.terra.api.world.info.WorldProperties; import com.dfsek.terra.api.world.info.WorldProperties;
import com.dfsek.terra.minestom.TerraMinestomPlatform; import com.dfsek.terra.minestom.TerraMinestomPlatform;
import com.dfsek.terra.minestom.api.BiomeFactory;
import com.dfsek.terra.minestom.api.BlockEntityFactory; import com.dfsek.terra.minestom.api.BlockEntityFactory;
import com.dfsek.terra.minestom.api.EntityFactory; import com.dfsek.terra.minestom.api.EntityFactory;
import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool; import com.dfsek.terra.minestom.biome.MinestomUserDefinedBiomePool;