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:
dfsek
2021-09-26 22:46:54 -07:00
160 changed files with 1172 additions and 1365 deletions

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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() {

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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();

View File

@@ -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;
}
}

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -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();
}

View File

@@ -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();