mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-22 16:18:32 +00:00
Merge remote-tracking branch 'origin/ver/6.0.0' into architecture/slf4j-logging
# Conflicts: # common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java # common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java # common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java # common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java # common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java # common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java # common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java # common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java # common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java # common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java # common/api/core/src/main/java/com/dfsek/terra/api/Platform.java # common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java # common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java # common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java # common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java # common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java # common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java # common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java # common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java # common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java # common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java # common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java # common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java # platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java # platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java # platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java # platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java # platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java # platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java # platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java # platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java
This commit is contained in:
@@ -18,7 +18,9 @@ import com.dfsek.terra.api.tectonic.LoaderRegistrar;
|
||||
/**
|
||||
* Represents a Terra mod/plugin instance.
|
||||
*/
|
||||
public interface TerraPlugin extends LoaderRegistrar {
|
||||
public interface Platform extends LoaderRegistrar {
|
||||
Logger logger();
|
||||
|
||||
boolean reload();
|
||||
|
||||
String platformName();
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.dfsek.terra.api.addon;
|
||||
|
||||
import com.dfsek.terra.api.TerraPlugin;
|
||||
import com.dfsek.terra.api.Platform;
|
||||
import com.dfsek.terra.api.registry.CheckedRegistry;
|
||||
|
||||
|
||||
public interface AddonLoader {
|
||||
/**
|
||||
* Load all addons.
|
||||
* @param main TerraPlugin instance.
|
||||
* @param platform TerraPlugin instance.
|
||||
*/
|
||||
void load(TerraPlugin main, CheckedRegistry<Addon> addons);
|
||||
void load(Platform platform, CheckedRegistry<Addon> addons);
|
||||
}
|
||||
|
||||
@@ -9,19 +9,19 @@ import com.dfsek.terra.api.util.generic.Lazy;
|
||||
|
||||
public interface EnumProperty<T extends Enum<T>> extends Property<T> {
|
||||
static <T extends Enum<T>> EnumProperty<T> of(String name, Class<T> clazz) {
|
||||
return new EnumProperty<T>() {
|
||||
return new EnumProperty<>() {
|
||||
private final Lazy<Collection<T>> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants()));
|
||||
|
||||
|
||||
@Override
|
||||
public Collection<T> values() {
|
||||
return constants.value();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<T> getType() {
|
||||
return clazz;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
|
||||
@@ -28,32 +28,21 @@ public enum Direction {
|
||||
}
|
||||
|
||||
public Direction rotate(Rotation rotation) {
|
||||
switch(this) {
|
||||
case UP:
|
||||
case DOWN:
|
||||
return this;
|
||||
default:
|
||||
return rotations[(this.rotation + rotation.getDegrees() / 90) % 4];
|
||||
}
|
||||
return switch(this) {
|
||||
case UP, DOWN -> this;
|
||||
default -> rotations[(this.rotation + rotation.getDegrees() / 90) % 4];
|
||||
};
|
||||
}
|
||||
|
||||
public Direction opposite() {
|
||||
switch(this) {
|
||||
case DOWN:
|
||||
return UP;
|
||||
case UP:
|
||||
return DOWN;
|
||||
case EAST:
|
||||
return WEST;
|
||||
case WEST:
|
||||
return EAST;
|
||||
case NORTH:
|
||||
return SOUTH;
|
||||
case SOUTH:
|
||||
return NORTH;
|
||||
}
|
||||
|
||||
throw new IllegalStateException();
|
||||
return switch(this) {
|
||||
case DOWN -> UP;
|
||||
case UP -> DOWN;
|
||||
case EAST -> WEST;
|
||||
case WEST -> EAST;
|
||||
case NORTH -> SOUTH;
|
||||
case SOUTH -> NORTH;
|
||||
};
|
||||
}
|
||||
|
||||
public int getModX() {
|
||||
|
||||
@@ -3,9 +3,9 @@ package com.dfsek.terra.api.config;
|
||||
import com.dfsek.tectonic.config.ConfigTemplate;
|
||||
import com.dfsek.tectonic.exception.LoadException;
|
||||
|
||||
import com.dfsek.terra.api.TerraPlugin;
|
||||
import com.dfsek.terra.api.Platform;
|
||||
|
||||
|
||||
public interface ConfigFactory<C extends ConfigTemplate, O> {
|
||||
O build(C config, TerraPlugin main) throws LoadException;
|
||||
O build(C config, Platform platform) throws LoadException;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.dfsek.terra.api.config;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.dfsek.terra.api.TerraPlugin;
|
||||
import com.dfsek.terra.api.Platform;
|
||||
import com.dfsek.terra.api.registry.OpenRegistry;
|
||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
public interface ConfigType<T extends AbstractableTemplate, R> {
|
||||
Supplier<OpenRegistry<R>> registrySupplier(ConfigPack pack);
|
||||
|
||||
T getTemplate(ConfigPack pack, TerraPlugin main);
|
||||
T getTemplate(ConfigPack pack, Platform platform);
|
||||
|
||||
ConfigFactory<T, R> getFactory();
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.api.config;
|
||||
|
||||
import com.dfsek.terra.api.TerraPlugin;
|
||||
import com.dfsek.terra.api.Platform;
|
||||
|
||||
|
||||
public interface PluginConfig {
|
||||
void load(TerraPlugin main);
|
||||
void load(Platform platform);
|
||||
|
||||
boolean dumpDefaultConfig();
|
||||
|
||||
|
||||
@@ -10,4 +10,12 @@ public interface Distributor {
|
||||
default Distributor or(Distributor other) {
|
||||
return (x, z, seed) -> this.matches(x, z, seed) || other.matches(x, z, seed);
|
||||
}
|
||||
|
||||
static Distributor yes() {
|
||||
return (x, z, seed) -> true;
|
||||
}
|
||||
|
||||
static Distributor no() {
|
||||
return (x, z, seed) -> false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,33 +16,22 @@ public enum Rotation {
|
||||
}
|
||||
|
||||
public static Rotation fromDegrees(int deg) {
|
||||
switch(FastMath.floorMod(deg, 360)) {
|
||||
case 0:
|
||||
return Rotation.NONE;
|
||||
case 90:
|
||||
return Rotation.CW_90;
|
||||
case 180:
|
||||
return Rotation.CW_180;
|
||||
case 270:
|
||||
return Rotation.CCW_90;
|
||||
default:
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
return switch(FastMath.floorMod(deg, 360)) {
|
||||
case 0 -> Rotation.NONE;
|
||||
case 90 -> Rotation.CW_90;
|
||||
case 180 -> Rotation.CW_180;
|
||||
case 270 -> Rotation.CCW_90;
|
||||
default -> throw new IllegalArgumentException();
|
||||
};
|
||||
}
|
||||
|
||||
public Rotation inverse() {
|
||||
switch(this) {
|
||||
case NONE:
|
||||
return NONE;
|
||||
case CCW_90:
|
||||
return CW_90;
|
||||
case CW_90:
|
||||
return CCW_90;
|
||||
case CW_180:
|
||||
return CW_180;
|
||||
default:
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
return switch(this) {
|
||||
case NONE -> NONE;
|
||||
case CCW_90 -> CW_90;
|
||||
case CW_90 -> CCW_90;
|
||||
case CW_180 -> CW_180;
|
||||
};
|
||||
}
|
||||
|
||||
public Rotation rotate(Rotation rotation) {
|
||||
|
||||
@@ -23,15 +23,9 @@ public final class RotationUtil {
|
||||
public static void rotateVector(Vector2 orig, Rotation r) {
|
||||
Vector2 copy = orig.clone();
|
||||
switch(r) {
|
||||
case CW_90:
|
||||
copy.setX(orig.getZ()).setZ(-orig.getX());
|
||||
break;
|
||||
case CCW_90:
|
||||
copy.setX(-orig.getZ()).setZ(orig.getX());
|
||||
break;
|
||||
case CW_180:
|
||||
copy.multiply(-1);
|
||||
break;
|
||||
case CW_90 -> copy.setX(orig.getZ()).setZ(-orig.getX());
|
||||
case CCW_90 -> copy.setX(-orig.getZ()).setZ(orig.getX());
|
||||
case CW_180 -> copy.multiply(-1);
|
||||
}
|
||||
orig.setX(copy.getX());
|
||||
orig.setZ(copy.getZ());
|
||||
@@ -64,74 +58,44 @@ public final class RotationUtil {
|
||||
public static RailShape getRotatedRail(RailShape orig, Rotation r) {
|
||||
switch(r) {
|
||||
case CCW_90:
|
||||
switch(orig) {
|
||||
case NORTH_WEST:
|
||||
return RailShape.SOUTH_WEST;
|
||||
case NORTH_SOUTH:
|
||||
return RailShape.EAST_WEST;
|
||||
case SOUTH_WEST:
|
||||
return RailShape.SOUTH_EAST;
|
||||
case SOUTH_EAST:
|
||||
return RailShape.NORTH_EAST;
|
||||
case EAST_WEST:
|
||||
return RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST:
|
||||
return RailShape.NORTH_WEST;
|
||||
case ASCENDING_EAST:
|
||||
return RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_WEST:
|
||||
return RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_NORTH:
|
||||
return RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_SOUTH:
|
||||
return RailShape.ASCENDING_EAST;
|
||||
}
|
||||
return switch(orig) {
|
||||
case NORTH_WEST -> RailShape.SOUTH_WEST;
|
||||
case NORTH_SOUTH -> RailShape.EAST_WEST;
|
||||
case SOUTH_WEST -> RailShape.SOUTH_EAST;
|
||||
case SOUTH_EAST -> RailShape.NORTH_EAST;
|
||||
case EAST_WEST -> RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST -> RailShape.NORTH_WEST;
|
||||
case ASCENDING_EAST -> RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_WEST -> RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_NORTH -> RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_SOUTH -> RailShape.ASCENDING_EAST;
|
||||
};
|
||||
case CW_90:
|
||||
switch(orig) {
|
||||
case NORTH_WEST:
|
||||
return RailShape.NORTH_EAST;
|
||||
case NORTH_SOUTH:
|
||||
return RailShape.EAST_WEST;
|
||||
case SOUTH_WEST:
|
||||
return RailShape.NORTH_WEST;
|
||||
case SOUTH_EAST:
|
||||
return RailShape.SOUTH_WEST;
|
||||
case EAST_WEST:
|
||||
return RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST:
|
||||
return RailShape.SOUTH_EAST;
|
||||
case ASCENDING_EAST:
|
||||
return RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_WEST:
|
||||
return RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_NORTH:
|
||||
return RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_SOUTH:
|
||||
return RailShape.ASCENDING_WEST;
|
||||
}
|
||||
return switch(orig) {
|
||||
case NORTH_WEST -> RailShape.NORTH_EAST;
|
||||
case NORTH_SOUTH -> RailShape.EAST_WEST;
|
||||
case SOUTH_WEST -> RailShape.NORTH_WEST;
|
||||
case SOUTH_EAST -> RailShape.SOUTH_WEST;
|
||||
case EAST_WEST -> RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST -> RailShape.SOUTH_EAST;
|
||||
case ASCENDING_EAST -> RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_WEST -> RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_NORTH -> RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_SOUTH -> RailShape.ASCENDING_WEST;
|
||||
};
|
||||
case CW_180:
|
||||
switch(orig) {
|
||||
case NORTH_WEST:
|
||||
return RailShape.SOUTH_EAST;
|
||||
case NORTH_SOUTH:
|
||||
return RailShape.NORTH_SOUTH;
|
||||
case SOUTH_WEST:
|
||||
return RailShape.NORTH_EAST;
|
||||
case SOUTH_EAST:
|
||||
return RailShape.NORTH_WEST;
|
||||
case EAST_WEST:
|
||||
return RailShape.EAST_WEST;
|
||||
case NORTH_EAST:
|
||||
return RailShape.SOUTH_WEST;
|
||||
case ASCENDING_EAST:
|
||||
return RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_WEST:
|
||||
return RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_NORTH:
|
||||
return RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_SOUTH:
|
||||
return RailShape.ASCENDING_NORTH;
|
||||
}
|
||||
return switch(orig) {
|
||||
case NORTH_WEST -> RailShape.SOUTH_EAST;
|
||||
case NORTH_SOUTH -> RailShape.NORTH_SOUTH;
|
||||
case SOUTH_WEST -> RailShape.NORTH_EAST;
|
||||
case SOUTH_EAST -> RailShape.NORTH_WEST;
|
||||
case EAST_WEST -> RailShape.EAST_WEST;
|
||||
case NORTH_EAST -> RailShape.SOUTH_WEST;
|
||||
case ASCENDING_EAST -> RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_WEST -> RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_NORTH -> RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_SOUTH -> RailShape.ASCENDING_NORTH;
|
||||
};
|
||||
}
|
||||
return orig;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.dfsek.terra.api.world;
|
||||
|
||||
import com.dfsek.terra.api.block.state.BlockState;
|
||||
import com.dfsek.terra.api.structure.feature.BinaryColumn;
|
||||
|
||||
import java.util.function.IntConsumer;
|
||||
|
||||
|
||||
/**
|
||||
@@ -18,4 +21,8 @@ public interface Column {
|
||||
int getMinY();
|
||||
|
||||
int getMaxY();
|
||||
|
||||
void forEach(IntConsumer function);
|
||||
|
||||
BinaryColumn newBinaryColumn();
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.dfsek.terra.api.TerraPlugin;
|
||||
import com.dfsek.terra.api.Platform;
|
||||
import com.dfsek.terra.api.block.state.BlockState;
|
||||
import com.dfsek.terra.api.config.ConfigPack;
|
||||
import com.dfsek.terra.api.util.vector.Vector3;
|
||||
@@ -24,7 +24,7 @@ public interface ChunkGenerator {
|
||||
|
||||
ConfigPack getConfigPack();
|
||||
|
||||
TerraPlugin getMain();
|
||||
Platform getPlatform();
|
||||
|
||||
List<GenerationStage> getGenerationStages();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user