From 4d8d8f656a75dbcc9193a1d71b4cedacda625207 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 26 Sep 2021 13:35:54 -0700 Subject: [PATCH 01/97] make ParseException unchecked --- .../addons/terrascript/parser/Parser.java | 39 ++++++++----------- .../addons/terrascript/parser/ParserUtil.java | 14 +++---- .../parser/exceptions/ParseException.java | 2 +- .../lang/functions/FunctionBuilder.java | 2 +- .../terrascript/script/StructureScript.java | 2 +- .../script/builders/BlockFunctionBuilder.java | 2 +- .../script/builders/CheckFunctionBuilder.java | 2 +- .../builders/EntityFunctionBuilder.java | 2 +- .../script/builders/PullFunctionBuilder.java | 2 +- .../builders/RandomFunctionBuilder.java | 2 +- .../builders/RecursionsFunctionBuilder.java | 2 +- .../builders/SetMarkFunctionBuilder.java | 2 +- .../script/builders/StateFunctionBuilder.java | 2 +- .../builders/StructureFunctionBuilder.java | 2 +- .../script/functions/EntityFunction.java | 2 +- .../script/functions/PullFunction.java | 2 +- .../terrascript/tokenizer/Tokenizer.java | 8 ++-- 17 files changed, 41 insertions(+), 48 deletions(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index 68084fa7e..814d88886 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -78,7 +78,7 @@ public class Parser { * * @throws ParseException If parsing fails. */ - public Block parse() throws ParseException { + public Block parse() { Tokenizer tokens = new Tokenizer(data); // Parse ID @@ -108,8 +108,7 @@ public class Parser { }; } - private WhileKeyword parseWhileLoop(Tokenizer tokens, Map variableMap, Position start) - throws ParseException { + private WhileKeyword parseWhileLoop(Tokenizer tokens, Map variableMap, Position start) { Returnable first = parseExpression(tokens, true, variableMap); ParserUtil.checkReturnType(first, Returnable.ReturnType.BOOLEAN); @@ -118,8 +117,7 @@ public class Parser { return new WhileKeyword(parseStatementBlock(tokens, variableMap, true), (Returnable) first, start); // While loop } - private IfKeyword parseIfStatement(Tokenizer tokens, Map variableMap, Position start, boolean loop) - throws ParseException { + private IfKeyword parseIfStatement(Tokenizer tokens, Map variableMap, Position start, boolean loop) { Returnable condition = parseExpression(tokens, true, variableMap); ParserUtil.checkReturnType(condition, Returnable.ReturnType.BOOLEAN); @@ -146,8 +144,7 @@ public class Parser { return new IfKeyword(statement, (Returnable) condition, elseIf, elseBlock, start); // If statement } - private Block parseStatementBlock(Tokenizer tokens, Map variableMap, boolean loop) - throws ParseException { + private Block parseStatementBlock(Tokenizer tokens, Map variableMap, boolean loop) { if(tokens.get().getType().equals(Token.Type.BLOCK_BEGIN)) { ParserUtil.checkType(tokens.consume(), Token.Type.BLOCK_BEGIN); @@ -162,7 +159,7 @@ public class Parser { } } - private ForKeyword parseForLoop(Tokenizer tokens, Map old, Position start) throws ParseException { + private ForKeyword parseForLoop(Tokenizer tokens, Map old, Position start) { Map variableMap = new HashMap<>(old); // New scope Token f = tokens.get(); ParserUtil.checkType(f, Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.IDENTIFIER); @@ -191,8 +188,7 @@ public class Parser { start); } - private Returnable parseExpression(Tokenizer tokens, boolean full, Map variableMap) - throws ParseException { + private Returnable parseExpression(Tokenizer tokens, boolean full, Map variableMap) { boolean booleanInverted = false; // Check for boolean not operator boolean negate = false; if(tokens.get().getType().equals(Token.Type.BOOLEAN_NOT)) { @@ -235,7 +231,7 @@ public class Parser { return expression; } - private ConstantExpression parseConstantExpression(Tokenizer tokens) throws ParseException { + private ConstantExpression parseConstantExpression(Tokenizer tokens) { Token constantToken = tokens.consume(); Position position = constantToken.getPosition(); switch(constantToken.getType()) { @@ -252,15 +248,14 @@ public class Parser { } } - private Returnable parseGroup(Tokenizer tokens, Map variableMap) throws ParseException { + private Returnable parseGroup(Tokenizer tokens, Map variableMap) { ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); Returnable expression = parseExpression(tokens, true, variableMap); // Parse inside of group as a separate expression ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); return expression; } - private BinaryOperation parseBinaryOperation(Returnable left, Tokenizer tokens, Map variableMap) - throws ParseException { + private BinaryOperation parseBinaryOperation(Returnable left, Tokenizer tokens, Map variableMap) { Token binaryOperator = tokens.consume(); ParserUtil.checkBinaryOperator(binaryOperator); @@ -275,7 +270,7 @@ public class Parser { return assemble(left, right, binaryOperator); } - private BinaryOperation assemble(Returnable left, Returnable right, Token binaryOperator) throws ParseException { + private BinaryOperation assemble(Returnable left, Returnable right, Token binaryOperator) { if(binaryOperator.isStrictNumericOperator()) ParserUtil.checkArithmeticOperation(left, right, binaryOperator); // Numeric type checking if(binaryOperator.isStrictBooleanOperator()) ParserUtil.checkBooleanOperation(left, right, binaryOperator); // Boolean type checking @@ -315,8 +310,7 @@ public class Parser { } } - private Declaration parseVariableDeclaration(Tokenizer tokens, Map variableMap) - throws ParseException { + private Declaration parseVariableDeclaration(Tokenizer tokens, Map variableMap) { Token type = tokens.consume(); ParserUtil.checkType(type, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.NUMBER_VARIABLE); @@ -337,7 +331,7 @@ public class Parser { return new Declaration<>(tokens.get().getPosition(), identifier.getContent(), value, returnType); } - private Block parseBlock(Tokenizer tokens, Map superVars, boolean loop) throws ParseException { + private Block parseBlock(Tokenizer tokens, Map superVars, boolean loop) { List> parsedItems = new ArrayList<>(); Map parsedVariables = new HashMap<>( @@ -357,7 +351,7 @@ public class Parser { return new Block(parsedItems, first.getPosition()); } - private Item parseItem(Tokenizer tokens, Map variableMap, boolean loop) throws ParseException { + private Item parseItem(Tokenizer tokens, Map variableMap, boolean loop) { Token token = tokens.get(); if(loop) ParserUtil.checkType(token, Token.Type.IDENTIFIER, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP, Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, @@ -383,7 +377,7 @@ public class Parser { else throw new UnsupportedOperationException("Unexpected token " + token.getType() + ": " + token.getPosition()); } - private Assignment parseAssignment(Tokenizer tokens, Map variableMap) throws ParseException { + private Assignment parseAssignment(Tokenizer tokens, Map variableMap) { Token identifier = tokens.consume(); ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); @@ -397,8 +391,7 @@ public class Parser { return new Assignment<>(value, identifier.getContent(), identifier.getPosition()); } - private Function parseFunction(Tokenizer tokens, boolean fullStatement, Map variableMap) - throws ParseException { + private Function parseFunction(Tokenizer tokens, boolean fullStatement, Map variableMap) { Token identifier = tokens.consume(); ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); // First token must be identifier @@ -440,7 +433,7 @@ public class Parser { return id; } - private List> getArgs(Tokenizer tokens, Map variableMap) throws ParseException { + private List> getArgs(Tokenizer tokens, Map variableMap) { List> args = new ArrayList<>(); while(!tokens.get().getType().equals(Token.Type.GROUP_END)) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java index 11f89a8e2..3224c69ad 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java @@ -44,17 +44,17 @@ public class ParserUtil { PRECEDENCE.put(Token.Type.BOOLEAN_OR, booleanOps); } - public static void checkType(Token token, Token.Type... expected) throws ParseException { + public static void checkType(Token token, Token.Type... expected) { for(Token.Type type : expected) if(token.getType().equals(type)) return; throw new ParseException("Expected " + Arrays.toString(expected) + " but found " + token.getType(), token.getPosition()); } - public static void checkReturnType(Returnable returnable, Returnable.ReturnType... types) throws ParseException { + public static void checkReturnType(Returnable returnable, Returnable.ReturnType... types) { for(Returnable.ReturnType type : types) if(returnable.returnType().equals(type)) return; throw new ParseException("Expected " + Arrays.toString(types) + " but found " + returnable.returnType(), returnable.getPosition()); } - public static void checkArithmeticOperation(Returnable left, Returnable right, Token operation) throws ParseException { + public static void checkArithmeticOperation(Returnable left, Returnable right, Token operation) { if(!left.returnType().equals(Returnable.ReturnType.NUMBER) || !right.returnType().equals(Returnable.ReturnType.NUMBER)) { throw new ParseException( "Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), @@ -62,7 +62,7 @@ public class ParserUtil { } } - public static void checkBooleanOperation(Returnable left, Returnable right, Token operation) throws ParseException { + public static void checkBooleanOperation(Returnable left, Returnable right, Token operation) { if(!left.returnType().equals(Returnable.ReturnType.BOOLEAN) || !right.returnType().equals(Returnable.ReturnType.BOOLEAN)) { throw new ParseException( "Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), @@ -70,7 +70,7 @@ public class ParserUtil { } } - public static void checkVarType(Token token, Returnable.ReturnType returnType) throws ParseException { + public static void checkVarType(Token token, Returnable.ReturnType returnType) { if(returnType.equals(Returnable.ReturnType.STRING) && token.getType().equals(Token.Type.STRING_VARIABLE)) return; if(returnType.equals(Returnable.ReturnType.NUMBER) && token.getType().equals(Token.Type.NUMBER_VARIABLE)) return; if(returnType.equals(Returnable.ReturnType.BOOLEAN) && token.getType().equals(Token.Type.BOOLEAN_VARIABLE)) return; @@ -84,12 +84,12 @@ public class ParserUtil { * * @throws ParseException If token isn't a binary operator */ - public static void checkBinaryOperator(Token token) throws ParseException { + public static void checkBinaryOperator(Token token) { if(!token.isBinaryOperator()) throw new ParseException("Expected binary operator, found " + token.getType(), token.getPosition()); } - public static Returnable.ReturnType getVariableReturnType(Token varToken) throws ParseException { + public static Returnable.ReturnType getVariableReturnType(Token varToken) { return switch(varToken.getType()) { case NUMBER_VARIABLE -> Returnable.ReturnType.NUMBER; case STRING_VARIABLE -> Returnable.ReturnType.STRING; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java index f016b3700..b56340d0a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java @@ -3,7 +3,7 @@ package com.dfsek.terra.addons.terrascript.parser.exceptions; import com.dfsek.terra.addons.terrascript.tokenizer.Position; -public class ParseException extends Exception { +public class ParseException extends RuntimeException { private static final long serialVersionUID = 6744390543046766386L; private final Position position; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java index 7c0fa41a8..a2916174b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java @@ -8,7 +8,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public interface FunctionBuilder> { - T build(List> argumentList, Position position) throws ParseException; + T build(List> argumentList, Position position); int argNumber(); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 7317ad726..c7b0fe221 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -56,7 +56,7 @@ public class StructureScript implements Structure { private String tempID; public StructureScript(InputStream inputStream, Platform platform, Registry registry, Registry lootRegistry, - Registry> functionRegistry) throws ParseException { + Registry> functionRegistry) { Parser parser; try { parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index 543feb5a8..f99727389 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -21,7 +21,7 @@ public class BlockFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @Override - public BlockFunction build(List> argumentList, Position position) throws ParseException { + public BlockFunction build(List> argumentList, Position position) { if(argumentList.size() < 4) throw new ParseException("Expected data", position); Returnable booleanReturnable = new BooleanConstant(true, position); if(argumentList.size() == 5) booleanReturnable = (Returnable) argumentList.get(4); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java index f6e3eae13..483f98947 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java @@ -19,7 +19,7 @@ public class CheckFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @Override - public CheckFunction build(List> argumentList, Position position) throws ParseException { + public CheckFunction build(List> argumentList, Position position) { return new CheckFunction(platform, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java index 43546ee17..2c3d3c289 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java @@ -19,7 +19,7 @@ public class EntityFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @Override - public EntityFunction build(List> argumentList, Position position) throws ParseException { + public EntityFunction build(List> argumentList, Position position) { return new EntityFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java index 7cdaf8935..f2cd93cd8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java @@ -19,7 +19,7 @@ public class PullFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @Override - public PullFunction build(List> argumentList, Position position) throws ParseException { + public PullFunction build(List> argumentList, Position position) { return new PullFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java index a001051ce..bc0334f65 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java @@ -12,7 +12,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class RandomFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @Override - public RandomFunction build(List> argumentList, Position position) throws ParseException { + public RandomFunction build(List> argumentList, Position position) { return new RandomFunction((Returnable) argumentList.get(0), position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java index 8fe2815ca..793cd7cb2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java @@ -11,7 +11,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position; public class RecursionsFunctionBuilder implements FunctionBuilder { @Override - public RecursionsFunction build(List> argumentList, Position position) throws ParseException { + public RecursionsFunction build(List> argumentList, Position position) { return new RecursionsFunction(position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java index aaacf31ef..51d269133 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java @@ -16,7 +16,7 @@ public class SetMarkFunctionBuilder implements FunctionBuilder @SuppressWarnings("unchecked") @Override - public SetMarkFunction build(List> argumentList, Position position) throws ParseException { + public SetMarkFunction build(List> argumentList, Position position) { return new SetMarkFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), position); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java index e8f90bb77..e1b9b41a5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java @@ -19,7 +19,7 @@ public class StateFunctionBuilder implements FunctionBuilder { @SuppressWarnings("unchecked") @Override - public StateFunction build(List> argumentList, Position position) throws ParseException { + public StateFunction build(List> argumentList, Position position) { if(argumentList.size() < 4) throw new ParseException("Expected data", position); return new StateFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java index 51575849d..95c0a4164 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java @@ -24,7 +24,7 @@ public class StructureFunctionBuilder implements FunctionBuilder> argumentList, Position position) throws ParseException { + public StructureFunction build(List> argumentList, Position position) { if(argumentList.size() < 5) throw new ParseException("Expected rotations", position); return new StructureFunction((Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java index 420601b11..cae74890e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java @@ -25,7 +25,7 @@ public class EntityFunction implements Function { private final Platform platform; public EntityFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, - Position position) throws ParseException { + Position position) { this.position = position; this.platform = platform; if(!(data instanceof ConstantExpression)) throw new ParseException("Entity data must be constant", data.getPosition()); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index 8866c1edc..b80310839 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -26,7 +26,7 @@ public class PullFunction implements Function { private final Position position; public PullFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, - Position position) throws ParseException { + Position position) { this.position = position; if(!(data instanceof ConstantExpression)) throw new ParseException("Block data must be constant", data.getPosition()); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java index 72438f3d4..566adc012 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java @@ -20,7 +20,7 @@ public class Tokenizer { private Token current; private Token last; - public Tokenizer(String data) throws ParseException { + public Tokenizer(String data) { reader = new Lookahead(new StringReader(data + '\0')); current = fetchCheck(); } @@ -32,7 +32,7 @@ public class Tokenizer { * * @throws ParseException If token does not exist */ - public Token get() throws ParseException { + public Token get() { if(!hasNext()) throw new ParseException("Unexpected end of input", last.getPosition()); return current; } @@ -44,14 +44,14 @@ public class Tokenizer { * * @throws ParseException If token does not exist */ - public Token consume() throws ParseException { + public Token consume() { if(!hasNext()) throw new ParseException("Unexpected end of input", last.getPosition()); Token temp = current; current = fetchCheck(); return temp; } - private Token fetchCheck() throws ParseException { + private Token fetchCheck() { Token fetch = fetch(); if(fetch != null) { last = fetch; From 98d147a304c85ba99b86942971739ca95dbd98ce Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 26 Sep 2021 14:40:41 -0700 Subject: [PATCH 02/97] depend on Strata --- common/api/core/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/api/core/build.gradle.kts b/common/api/core/build.gradle.kts index d2b4c8a5b..974fd5097 100644 --- a/common/api/core/build.gradle.kts +++ b/common/api/core/build.gradle.kts @@ -7,5 +7,7 @@ dependencies { "shadedApi"("com.dfsek.tectonic:common:2.1.2") "shadedApi"("net.jafama:jafama:2.3.2") + + "shadedApi"("ca.solo-studios:strata:1.0.0") } From 9bcdc40eb5aaad349117d84c00cccd5094ff6557 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 26 Sep 2021 23:35:19 -0700 Subject: [PATCH 03/97] implement global and local functions in expression samplers --- .../dfsek/terra/addons/noise/NoiseAddon.java | 13 +++++++++---- .../addons/noise/NoiseConfigPackTemplate.java | 13 ++++++++++++- .../config/templates/FunctionTemplate.java | 2 +- .../noise/ExpressionFunctionTemplate.java | 19 +++++++++++++------ 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java index 6b0535a9a..20ec42d17 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java @@ -3,11 +3,13 @@ package com.dfsek.terra.addons.noise; import com.dfsek.tectonic.loading.object.ObjectTemplate; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.function.Supplier; import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; +import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; import com.dfsek.terra.addons.noise.config.templates.KernelTemplate; import com.dfsek.terra.addons.noise.config.templates.noise.CellularNoiseTemplate; @@ -64,7 +66,8 @@ public class NoiseAddon extends TerraAddon { .applyLoader(CellularSampler.DistanceFunction.class, (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) - .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new); + .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new) + .applyLoader(FunctionTemplate.class, FunctionTemplate::new); noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); @@ -97,13 +100,15 @@ public class NoiseAddon extends TerraAddon { noiseRegistry.register("KERNEL", KernelTemplate::new); - Map packFunctions = new HashMap<>(); - noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packFunctions)); + Map packSamplers = new LinkedHashMap<>(); + Map packFunctions = new LinkedHashMap<>(); + noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packSamplers, packFunctions)); NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); event.loadTemplate(template); - packFunctions.putAll(template.getNoiseBuilderMap()); + packSamplers.putAll(template.getSamplers()); + packFunctions.putAll(template.getFunctions()); }) .failThrough(); } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java index e8e733d25..355a4509b 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java @@ -1,11 +1,14 @@ package com.dfsek.terra.addons.noise; +import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import java.util.LinkedHashMap; import java.util.Map; import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; +import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; import com.dfsek.terra.api.config.meta.Meta; @@ -13,7 +16,15 @@ public class NoiseConfigPackTemplate implements ConfigTemplate { @Value("noise") private @Meta Map noiseBuilderMap; - public Map getNoiseBuilderMap() { + @Value("functions") + @Default + private @Meta LinkedHashMap expressions = new LinkedHashMap<>(); + + public Map getSamplers() { return noiseBuilderMap; } + + public LinkedHashMap getFunctions() { + return expressions; + } } diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java index 79cbc0078..41857573d 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java @@ -13,7 +13,7 @@ public class FunctionTemplate implements ObjectTemplate { @Value("arguments") private List args; - @Value("function") + @Value("expression") private @Meta String function; @Override diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java index 58ad1ab07..27c2d39e8 100644 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java @@ -33,16 +33,19 @@ public class ExpressionFunctionTemplate extends SamplerTemplate functions = new LinkedHashMap<>(); + private @Meta LinkedHashMap samplers = new LinkedHashMap<>(); @Value("functions") @Default - private @Meta LinkedHashMap expressions = new LinkedHashMap<>(); + private @Meta LinkedHashMap functions = new LinkedHashMap<>(); - public ExpressionFunctionTemplate(Map otherFunctions) { + private final Map globalFunctions; + + public ExpressionFunctionTemplate(Map otherFunctions, Map samplers) { this.otherFunctions = otherFunctions; + this.globalFunctions = samplers; } @Override @@ -68,8 +71,12 @@ public class ExpressionFunctionTemplate extends SamplerTemplate generateFunctions() throws ParseException { Map noiseFunctionMap = new HashMap<>(); + + for(Map.Entry entry : globalFunctions.entrySet()) { + noiseFunctionMap.put(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), new Parser(), new Scope())); + } - for(Map.Entry entry : expressions.entrySet()) { + for(Map.Entry entry : functions.entrySet()) { noiseFunctionMap.put(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), new Parser(), new Scope())); } @@ -79,7 +86,7 @@ public class ExpressionFunctionTemplate extends SamplerTemplate { + samplers.forEach((id, function) -> { if(function.getDimensions() == 2) { noiseFunctionMap.put(id, new NoiseFunction2(function.getSampler())); } else noiseFunctionMap.put(id, new NoiseFunction3(function.getSampler())); From a1a043c296fc0ca9ecbd66de98838ed0d654ffac Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 21:26:06 -0700 Subject: [PATCH 04/97] refactor FabricEntryPoint#getPlatform --- .../com/dfsek/terra/fabric/FabricEntryPoint.java | 2 +- .../java/com/dfsek/terra/fabric/PlatformImpl.java | 13 +++++++++++++ .../generation/FabricChunkGeneratorWrapper.java | 2 +- .../terra/fabric/generation/TerraBiomeSource.java | 2 +- .../terra/fabric/generation/TerraGeneratorType.java | 2 +- .../terra/fabric/mixin/CommandManagerMixin.java | 2 +- .../dfsek/terra/fabric/mixin/ServerWorldMixin.java | 3 ++- .../implementations/ConfiguredFeatureMixin.java | 8 ++++---- .../block/state/MobSpawnerBlockEntityMixin.java | 2 +- .../lifecycle/client/MinecraftClientMixin.java | 4 ++-- .../lifecycle/server/GeneratorOptionsMixin.java | 2 +- .../mixin/lifecycle/server/ServerMainMixin.java | 2 +- 12 files changed, 29 insertions(+), 15 deletions(-) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java index 20f900b9b..9d59c686a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -22,7 +22,7 @@ public class FabricEntryPoint implements ModInitializer { Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); private static final PlatformImpl TERRA_PLUGIN = new PlatformImpl(); - public static PlatformImpl getTerraPlugin() { + public static PlatformImpl getPlatform() { return TERRA_PLUGIN; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index bc84d86e1..0271ce1f5 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -2,13 +2,19 @@ package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; + +import com.dfsek.terra.fabric.util.FabricUtil; + import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import org.apache.logging.log4j.LogManager; import java.io.File; +import java.util.HashSet; import java.util.Optional; +import java.util.Set; import com.dfsek.terra.AbstractPlatform; import com.dfsek.terra.api.util.Logger; @@ -28,6 +34,12 @@ public class PlatformImpl extends AbstractPlatform { private final WorldHandle worldHandle = new FabricWorldHandle(); private final Lazy dataFolder = Lazy.lazy(() -> new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra")); + private final Set worlds = new HashSet<>(); + + public void addWorld(ServerWorld world) { + worlds.add(world); + } + public PlatformImpl() { load(); } @@ -37,6 +49,7 @@ public class PlatformImpl extends AbstractPlatform { getTerraConfig().load(this); LangUtil.load(getTerraConfig().getLanguage(), this); // Load language. boolean succeed = getRawConfigRegistry().loadAll(this); + return succeed; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index 49c1fa60a..ab5db3047 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -46,7 +46,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C config -> config.group( Codec.STRING.fieldOf("pack") .forGetter(ConfigPack::getID) - ).apply(config, config.stable(FabricEntryPoint.getTerraPlugin().getConfigRegistry()::get))); + ).apply(config, config.stable(FabricEntryPoint.getPlatform().getConfigRegistry()::get))); public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index c3f8608bc..6ea7b0de9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -23,7 +23,7 @@ public class TerraBiomeSource extends BiomeSource { Codec.STRING.fieldOf("pack").forGetter(ConfigPack::getID) ) .apply(config, config.stable( - FabricEntryPoint.getTerraPlugin() + FabricEntryPoint.getPlatform() .getConfigRegistry()::get)))); public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( RegistryLookupCodec.of(Registry.BIOME_KEY).forGetter(source -> source.biomeRegistry), diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index 597bc00f1..c16e0b325 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -28,7 +28,7 @@ public class TerraGeneratorType extends GeneratorType { public GeneratorOptions createDefaultOptions(DynamicRegistryManager.Impl registryManager, long seed, boolean generateStructures, boolean bonusChest) { GeneratorOptions options = super.createDefaultOptions(registryManager, seed, generateStructures, bonusChest); - FabricEntryPoint.getTerraPlugin().getEventManager().callEvent(new BiomeRegistrationEvent(registryManager)); // register biomes + FabricEntryPoint.getPlatform().getEventManager().callEvent(new BiomeRegistrationEvent(registryManager)); // register biomes return options; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java index 621d6938e..575be7572 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java @@ -38,7 +38,7 @@ public abstract class CommandManagerMixin { target = "Lcom/mojang/brigadier/CommandDispatcher;findAmbiguities(Lcom/mojang/brigadier/AmbiguityConsumer;)V", remap = false)) private void injectTerraCommands(CommandManager.RegistrationEnvironment environment, CallbackInfo ci) { - com.dfsek.terra.api.command.CommandManager manager = FabricEntryPoint.getTerraPlugin().getManager(); + com.dfsek.terra.api.command.CommandManager manager = FabricEntryPoint.getPlatform().getManager(); int max = manager.getMaxArgumentDepth(); RequiredArgumentBuilder arg = argument("arg" + (max - 1), StringArgumentType.word()); for(int i = 0; i < max; i++) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java index c1fd971dd..55edfa5c7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java @@ -31,7 +31,8 @@ public abstract class ServerWorldMixin { boolean debugWorld, long l, List list, boolean bl, CallbackInfo ci) { if(chunkGenerator instanceof FabricChunkGeneratorWrapper) { ((FabricChunkGeneratorWrapper) chunkGenerator).setWorld((ServerWorld) (Object) this); - FabricEntryPoint.getTerraPlugin().logger().info("Registered world " + this); + FabricEntryPoint.getPlatform().addWorld((ServerWorld) (Object) this); + FabricEntryPoint.getPlatform().logger().info("Registered world " + this); } } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 5d781edc0..79ca8b718 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -33,7 +33,7 @@ public abstract class ConfiguredFeatureMixin { @SuppressWarnings({ "ConstantConditions", "try" }) public boolean terra$plant(Vector3 l, World world, Random r) { String id = BuiltinRegistries.CONFIGURED_FEATURE.getId((ConfiguredFeature) (Object) this).toString(); - try(ProfileFrame ignore = FabricEntryPoint.getTerraPlugin().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { + try(ProfileFrame ignore = FabricEntryPoint.getPlatform().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) world); ChunkGenerator generatorWrapper = ((ServerWorldAccess) world).toServerWorld().getChunkManager().getChunkGenerator(); return generate(fabricWorldAccess, generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ())); @@ -41,8 +41,8 @@ public abstract class ConfiguredFeatureMixin { } public Set terra$getSpawnable() { - return MaterialSet.get(FabricEntryPoint.getTerraPlugin().getWorldHandle().createBlockData("minecraft:grass_block"), - FabricEntryPoint.getTerraPlugin().getWorldHandle().createBlockData("minecraft:podzol"), - FabricEntryPoint.getTerraPlugin().getWorldHandle().createBlockData("minecraft:mycelium")); + return MaterialSet.get(FabricEntryPoint.getPlatform().getWorldHandle().createBlockData("minecraft:grass_block"), + FabricEntryPoint.getPlatform().getWorldHandle().createBlockData("minecraft:podzol"), + FabricEntryPoint.getPlatform().getWorldHandle().createBlockData("minecraft:mycelium")); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index 5b1d3709d..d187b0d16 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -97,7 +97,7 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { public void terra$applyState(String state) { SerialState.parse(state).forEach((k, v) -> { switch(k) { - case "type" -> terra$setSpawnedType(FabricEntryPoint.getTerraPlugin().getWorldHandle().getEntity(v)); + case "type" -> terra$setSpawnedType(FabricEntryPoint.getPlatform().getWorldHandle().getEntity(v)); case "delay" -> terra$setDelay(Integer.parseInt(v)); case "min_delay" -> terra$setMinSpawnDelay(Integer.parseInt(v)); case "max_delay" -> terra$setMaxSpawnDelay(Integer.parseInt(v)); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java index 80f61320a..a71ed21dd 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java @@ -24,8 +24,8 @@ public class MinecraftClientMixin { // sorta arbitrary position, after mod init, before window opens shift = At.Shift.BEFORE)) public void injectConstructor(RunArgs args, CallbackInfo callbackInfo) { - FabricEntryPoint.getTerraPlugin().getEventManager().callEvent(new PlatformInitializationEvent()); - FabricEntryPoint.getTerraPlugin().getConfigRegistry().forEach(pack -> { + FabricEntryPoint.getPlatform().getEventManager().callEvent(new PlatformInitializationEvent()); + FabricEntryPoint.getPlatform().getConfigRegistry().forEach(pack -> { final GeneratorType generatorType = new TerraGeneratorType(pack); //noinspection ConstantConditions ((GeneratorTypeAccessor) generatorType).setTranslationKey(new LiteralText("Terra:" + pack.getID())); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index 394f8bb8e..c80ee3ab2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -37,7 +37,7 @@ public abstract class GeneratorOptionsMixin { return; } - PlatformImpl main = FabricEntryPoint.getTerraPlugin(); + PlatformImpl main = FabricEntryPoint.getPlatform(); String prop = properties.get("level-type").toString().trim(); if(prop.startsWith("Terra")) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java index ced401cdf..e5836d657 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java @@ -17,7 +17,7 @@ public class ServerMainMixin { target = "Lnet/minecraft/util/registry/DynamicRegistryManager;create()" + "Lnet/minecraft/util/registry/DynamicRegistryManager$Impl;")) private static void injectConstructor(String[] args, CallbackInfo ci) { - FabricEntryPoint.getTerraPlugin().getEventManager().callEvent( + FabricEntryPoint.getPlatform().getEventManager().callEvent( new PlatformInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks and stuff } } From b8a841f88e104adc90ed566ab6dc22f4547a942d Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 21:31:52 -0700 Subject: [PATCH 05/97] create sponge loader project --- .../structure-sponge-loader/build.gradle.kts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 common/addons/structure-sponge-loader/build.gradle.kts diff --git a/common/addons/structure-sponge-loader/build.gradle.kts b/common/addons/structure-sponge-loader/build.gradle.kts new file mode 100644 index 000000000..6ce55f7b1 --- /dev/null +++ b/common/addons/structure-sponge-loader/build.gradle.kts @@ -0,0 +1,18 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + id("com.github.johnrengelman.shadow") +} + +dependencies { + "shadedApi"("commons-io:commons-io:2.6") +} + +tasks.named("shadowJar") { + archiveClassifier.set("") + relocate("org.apache.commons", "com.dfsek.terra.addons.sponge.lib.commons") +} + +tasks.named("build") { + finalizedBy(tasks.named("shadowJar")) +} \ No newline at end of file From cc660e820d8bda57909e6e162d4267fb7138d462 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 22:02:51 -0700 Subject: [PATCH 06/97] create SpongeSchematicAddon --- .../structure-sponge-loader/build.gradle.kts | 5 + .../addons/sponge/SpongeSchematicAddon.java | 96 +++++++++++++++++++ .../terra/addons/sponge/SpongeStructure.java | 42 ++++++++ 3 files changed, 143 insertions(+) create mode 100644 common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java create mode 100644 common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java diff --git a/common/addons/structure-sponge-loader/build.gradle.kts b/common/addons/structure-sponge-loader/build.gradle.kts index 6ce55f7b1..e1fa2c43d 100644 --- a/common/addons/structure-sponge-loader/build.gradle.kts +++ b/common/addons/structure-sponge-loader/build.gradle.kts @@ -4,8 +4,13 @@ plugins { id("com.github.johnrengelman.shadow") } +repositories { + maven { url = uri("https://jitpack.io/") } +} + dependencies { "shadedApi"("commons-io:commons-io:2.6") + "shadedApi"("com.github.Querz:NBT:6.1") } tasks.named("shadowJar") { diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java new file mode 100644 index 000000000..318f6837b --- /dev/null +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -0,0 +1,96 @@ +package com.dfsek.terra.addons.sponge; + +import com.dfsek.terra.api.block.state.BlockState; + +import net.querz.nbt.io.NBTDeserializer; +import net.querz.nbt.io.NBTUtil; +import net.querz.nbt.tag.ByteArrayTag; +import net.querz.nbt.tag.CompoundTag; +import net.querz.nbt.tag.IntTag; +import net.querz.nbt.tag.Tag; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PushbackInputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.GZIPInputStream; + +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.inject.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.structure.Structure; + + +public class SpongeSchematicAddon extends TerraAddon { + @Inject + private Platform platform; + + + + + @Override + public void initialize() { + platform.getEventManager() + .getHandler(FunctionalEventHandler.class) + .register(this, ConfigPackPreLoadEvent.class) + .then(event -> { + CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); + event.getPack().getLoader().open("", ".schem").thenEntries(entries -> { + for(Map.Entry entry : entries) { + + } + }).close(); + }) + .failThrough(); + } + + + public String convert(InputStream in) { + try { + CompoundTag baseTag = (CompoundTag) new NBTDeserializer(false).fromStream(detectDecompression(in)).getTag(); + int wid = baseTag.getShort("Width"); + int len = baseTag.getShort("Length"); + int hei = baseTag.getShort("Height"); + + ByteArrayTag blocks = baseTag.getByteArrayTag("BlockData"); + + CompoundTag palette = (CompoundTag) baseTag.get("Palette"); + Map data = new HashMap<>(); + + for(Map.Entry> entry : palette.entrySet()) { + data.put(((IntTag) entry.getValue()).asInt(), entry.getKey()); + } + + byte[] arr = blocks.getValue(); + ScriptBuilder builder = new ScriptBuilder(); + for(int x = 0; x < hei; x++) { + for(int y = 0; y < wid; y++) { + for(int z = 0; z < len; z++) { + String block = data.get((int) arr[x+z*wid+y*wid*len]); + if(block.startsWith("minecraft:structure_void")) continue; + builder.block(x, y, z, block); + } + } + } + + return builder.build(); + } catch(IOException e) { + e.printStackTrace(); + } + return null; + } + private static InputStream detectDecompression(InputStream is) throws IOException { + PushbackInputStream pbis = new PushbackInputStream(is, 2); + int signature = (pbis.read() & 0xFF) + (pbis.read() << 8); + pbis.unread(signature >> 8); + pbis.unread(signature & 0xFF); + if (signature == GZIPInputStream.GZIP_MAGIC) { + return new GZIPInputStream(pbis); + } + return pbis; + } +} diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java new file mode 100644 index 000000000..9d3496098 --- /dev/null +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java @@ -0,0 +1,42 @@ +package com.dfsek.terra.addons.sponge; + +import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.structure.buffer.Buffer; +import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.vector.Vector3; +import com.dfsek.terra.api.world.Chunk; +import com.dfsek.terra.api.world.World; + +import java.util.Random; + + +public class SpongeStructure implements Structure { + + private final BufferedItem[][][] blocks; + + public SpongeStructure() { + blocks = new BufferedItem[0][][]; + } + + @Override + public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { + return true; + } + + @Override + public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { + return true; + } + + @Override + public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { + return true; + } + + @Override + public String getID() { + return null; + } +} From 7c5b7e5b459b4eefea8e71a04336904d2bbb07e4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 22:04:01 -0700 Subject: [PATCH 07/97] refactor BufferedBlock --- .../addons/terrascript/script/functions/BlockFunction.java | 2 +- .../dfsek/terra/api/structure}/buffer/items/BufferedBlock.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename common/{addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript => api/core/src/main/java/com/dfsek/terra/api/structure}/buffer/items/BufferedBlock.java (96%) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index 253d82093..d34803f8a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -7,7 +7,7 @@ import net.jafama.FastMath; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedBlock; +import com.dfsek.terra.api.structure.buffer.items.BufferedBlock; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/BufferedBlock.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java rename to common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/BufferedBlock.java index 369922ecb..cc0f18af5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedBlock.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/BufferedBlock.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; +package com.dfsek.terra.api.structure.buffer.items; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; From cd4ccc993b78a058cefbfb86f72dcff1c54e45e5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 22:05:29 -0700 Subject: [PATCH 08/97] refactor buffers --- .../terra/addons/terrascript/script/StructureScript.java | 5 ++--- .../terra/api/structure/buffer/buffers}/DirectBuffer.java | 2 +- .../terra/api/structure/buffer/buffers}/StructureBuffer.java | 4 +++- .../com/dfsek/terra/api/structure/buffer/items}/Cell.java | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) rename common/{addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer => api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers}/DirectBuffer.java (96%) rename common/{addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer => api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers}/StructureBuffer.java (94%) rename common/{addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer => api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items}/Cell.java (93%) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index c7b0fe221..28589d587 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -11,10 +11,9 @@ import java.nio.charset.Charset; import java.util.Random; import java.util.concurrent.ExecutionException; -import com.dfsek.terra.addons.terrascript.buffer.DirectBuffer; -import com.dfsek.terra.addons.terrascript.buffer.StructureBuffer; +import com.dfsek.terra.api.structure.buffer.buffers.DirectBuffer; +import com.dfsek.terra.api.structure.buffer.buffers.StructureBuffer; import com.dfsek.terra.addons.terrascript.parser.Parser; -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/DirectBuffer.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java rename to common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/DirectBuffer.java index 784ad6a46..9c57a9476 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/DirectBuffer.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/DirectBuffer.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer; +package com.dfsek.terra.api.structure.buffer.buffers; import java.util.LinkedHashMap; import java.util.Map; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java similarity index 94% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java rename to common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java index d21a160b5..0bc5277b3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/StructureBuffer.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java @@ -1,4 +1,6 @@ -package com.dfsek.terra.addons.terrascript.buffer; +package com.dfsek.terra.api.structure.buffer.buffers; + +import com.dfsek.terra.api.structure.buffer.items.Cell; import net.jafama.FastMath; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/Cell.java similarity index 93% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java rename to common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/Cell.java index 35b37fbc9..81ab82fc9 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/Cell.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/Cell.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.addons.terrascript.buffer; +package com.dfsek.terra.api.structure.buffer.items; import java.util.ArrayList; import java.util.List; From 56651a6307bce6a16a3cddf5b7dd7967d91eeece Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 22:15:20 -0700 Subject: [PATCH 09/97] make RotationUtil#rotateVector return vector --- .../main/java/com/dfsek/terra/api/util/RotationUtil.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index a216c32ba..9c107e571 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -16,11 +16,11 @@ public final class RotationUtil { /** * Rotate and mirror a coordinate pair. - * - * @param orig Vector to rotate. + * @param orig Vector to rotate. * @param r Rotation + * @return */ - public static void rotateVector(Vector2 orig, Rotation r) { + public static Vector2 rotateVector(Vector2 orig, Rotation r) { Vector2 copy = orig.clone(); switch(r) { case CW_90 -> copy.setX(orig.getZ()).setZ(-orig.getX()); @@ -29,6 +29,7 @@ public final class RotationUtil { } orig.setX(copy.getX()); orig.setZ(copy.getZ()); + return orig; } From e971223e4f6d5d69c4d9c21d9782528ea5b6d00a Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 22:15:35 -0700 Subject: [PATCH 10/97] implement SpongeStructure --- .../terra/addons/sponge/SpongeStructure.java | 59 +++++++++++++++++-- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java index 9d3496098..8e7a7852d 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java @@ -1,42 +1,91 @@ package com.dfsek.terra.addons.sponge; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.structure.buffer.items.BufferedBlock; import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.RotationUtil; +import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; +import net.jafama.FastMath; + import java.util.Random; public class SpongeStructure implements Structure { - private final BufferedItem[][][] blocks; + private final BlockState[][][] blocks; + private final Platform platform; - public SpongeStructure() { - blocks = new BufferedItem[0][][]; + private final String id; + + public SpongeStructure(BlockState[][][] blocks, Platform platform, String id) { + this.blocks = blocks; + this.platform = platform; + this.id = id; } @Override public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { + int bX = location.getBlockX(); + int bY = location.getBlockY(); + int bZ = location.getBlockZ(); + for(int x = 0; x < blocks.length; x++) { + for(int z = 0; z < blocks[x].length; z++) { + Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation); + int rX = r.getBlockX(); + int rZ = r.getBlockZ(); + if(FastMath.floorDiv(bX+rX, 16) != chunk.getX() || FastMath.floorDiv(bZ+rZ, 16) != chunk.getZ()) { + continue; + } + for(int y = 0; y < blocks[z].length; y++) { + world.setBlockData(bX+rX, bY+y, bZ+rZ, blocks[x][z][y]); + } + } + } return true; } @Override public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { + for(int x = 0; x < blocks.length; x++) { + for(int z = 0; z < blocks[x].length; z++) { + Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation); + int rX = r.getBlockX(); + int rZ = r.getBlockZ(); + for(int y = 0; y < blocks[z].length; y++) { + buffer.addItem(new BufferedBlock(blocks[x][z][y], true, platform, false), new Vector3(rX, y, rZ)); + } + } + } return true; } @Override public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { + int bX = location.getBlockX(); + int bY = location.getBlockY(); + int bZ = location.getBlockZ(); + for(int x = 0; x < blocks.length; x++) { + for(int z = 0; z < blocks[x].length; z++) { + Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation); + int rX = r.getBlockX(); + int rZ = r.getBlockZ(); + for(int y = 0; y < blocks[z].length; y++) { + world.setBlockData(bX+rX, bY+y, bZ+rZ, blocks[x][z][y]); + } + } + } return true; } @Override public String getID() { - return null; + return id; } } From ab100c85a13e9f268a28142426da706aa6af9da6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 15 Oct 2021 22:21:16 -0700 Subject: [PATCH 11/97] finish sponge schematic addon --- .../addons/sponge/SpongeSchematicAddon.java | 53 ++++++++++--------- .../terra/addons/sponge/SpongeStructure.java | 12 +++-- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index 318f6837b..f12e516d2 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -1,9 +1,18 @@ package com.dfsek.terra.addons.sponge; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.annotations.Addon; +import com.dfsek.terra.api.addon.annotations.Author; +import com.dfsek.terra.api.addon.annotations.Version; import com.dfsek.terra.api.block.state.BlockState; +import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.inject.annotations.Inject; +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.structure.Structure; import net.querz.nbt.io.NBTDeserializer; -import net.querz.nbt.io.NBTUtil; import net.querz.nbt.tag.ByteArrayTag; import net.querz.nbt.tag.CompoundTag; import net.querz.nbt.tag.IntTag; @@ -16,22 +25,14 @@ import java.util.HashMap; import java.util.Map; import java.util.zip.GZIPInputStream; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.structure.Structure; - - +@Addon("structure-sponge-loader") +@Author("Terra") +@Version("1.0.0") public class SpongeSchematicAddon extends TerraAddon { @Inject private Platform platform; - - @Override public void initialize() { platform.getEventManager() @@ -41,7 +42,8 @@ public class SpongeSchematicAddon extends TerraAddon { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); event.getPack().getLoader().open("", ".schem").thenEntries(entries -> { for(Map.Entry entry : entries) { - + String id = entry.getKey().substring(0, entry.getKey().length() - ".schem".length()); + structureRegistry.register(id, convert(entry.getValue(), id)); } }).close(); }) @@ -49,7 +51,7 @@ public class SpongeSchematicAddon extends TerraAddon { } - public String convert(InputStream in) { + public SpongeStructure convert(InputStream in, String id) { try { CompoundTag baseTag = (CompoundTag) new NBTDeserializer(false).fromStream(detectDecompression(in)).getTag(); int wid = baseTag.getShort("Width"); @@ -65,30 +67,31 @@ public class SpongeSchematicAddon extends TerraAddon { data.put(((IntTag) entry.getValue()).asInt(), entry.getKey()); } - byte[] arr = blocks.getValue(); - ScriptBuilder builder = new ScriptBuilder(); - for(int x = 0; x < hei; x++) { - for(int y = 0; y < wid; y++) { - for(int z = 0; z < len; z++) { - String block = data.get((int) arr[x+z*wid+y*wid*len]); + BlockState[][][] states = new BlockState[wid][len][hei]; + + byte[] arr = blocks.getValue(); + for(int x = 0; x < wid; x++) { + for(int z = 0; z < len; z++) { + for(int y = 0; y < hei; y++) { + String block = data.get((int) arr[x + z * wid + y * wid * len]); if(block.startsWith("minecraft:structure_void")) continue; - builder.block(x, y, z, block); + states[x][z][y] = platform.getWorldHandle().createBlockData(block); } } } - return builder.build(); + return new SpongeStructure(states, platform, id); } catch(IOException e) { - e.printStackTrace(); + throw new IllegalArgumentException("Failed to parse Sponge schematic: ", e); } - return null; } + private static InputStream detectDecompression(InputStream is) throws IOException { PushbackInputStream pbis = new PushbackInputStream(is, 2); int signature = (pbis.read() & 0xFF) + (pbis.read() << 8); pbis.unread(signature >> 8); pbis.unread(signature & 0xFF); - if (signature == GZIPInputStream.GZIP_MAGIC) { + if(signature == GZIPInputStream.GZIP_MAGIC) { return new GZIPInputStream(pbis); } return pbis; diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java index 8e7a7852d..a427e4359 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java @@ -44,7 +44,9 @@ public class SpongeStructure implements Structure { continue; } for(int y = 0; y < blocks[z].length; y++) { - world.setBlockData(bX+rX, bY+y, bZ+rZ, blocks[x][z][y]); + BlockState state = blocks[x][z][y]; + if(state == null) continue; + world.setBlockData(bX+rX, bY+y, bZ+rZ, state); } } } @@ -59,7 +61,9 @@ public class SpongeStructure implements Structure { int rX = r.getBlockX(); int rZ = r.getBlockZ(); for(int y = 0; y < blocks[z].length; y++) { - buffer.addItem(new BufferedBlock(blocks[x][z][y], true, platform, false), new Vector3(rX, y, rZ)); + BlockState state = blocks[x][z][y]; + if(state == null) continue; + buffer.addItem(new BufferedBlock(state, true, platform, false), new Vector3(rX, y, rZ)); } } } @@ -77,7 +81,9 @@ public class SpongeStructure implements Structure { int rX = r.getBlockX(); int rZ = r.getBlockZ(); for(int y = 0; y < blocks[z].length; y++) { - world.setBlockData(bX+rX, bY+y, bZ+rZ, blocks[x][z][y]); + BlockState state = blocks[x][z][y]; + if(state == null) continue; + world.setBlockData(bX+rX, bY+y, bZ+rZ, state); } } } From 18bc08343197d3da7f5f56a99b5dada32016bc01 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 11:16:24 -0700 Subject: [PATCH 12/97] remove TerraScript ID keyword in favor of file name --- .../addons/sponge/SpongeSchematicAddon.java | 4 ++- .../addons/terrascript/TerraScriptAddon.java | 29 ++++++++++--------- .../addons/terrascript/parser/Parser.java | 18 +----------- .../terrascript/script/StructureScript.java | 8 ++--- .../addons/terrascript/tokenizer/Token.java | 4 --- .../terrascript/tokenizer/Tokenizer.java | 3 -- .../src/test/resources/test.tesf | 2 -- .../com/dfsek/terra/api/util/StringUtil.java | 16 ++++++++++ 8 files changed, 39 insertions(+), 45 deletions(-) create mode 100644 common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java index f12e516d2..24d966a8f 100644 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java @@ -12,6 +12,8 @@ import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.StringUtil; + import net.querz.nbt.io.NBTDeserializer; import net.querz.nbt.tag.ByteArrayTag; import net.querz.nbt.tag.CompoundTag; @@ -42,7 +44,7 @@ public class SpongeSchematicAddon extends TerraAddon { CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); event.getPack().getLoader().open("", ".schem").thenEntries(entries -> { for(Map.Entry entry : entries) { - String id = entry.getKey().substring(0, entry.getKey().length() - ".schem".length()); + String id = StringUtil.fileName(entry.getKey()); structureRegistry.register(id, convert(entry.getValue(), id)); } }).close(); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index dcf77e4a7..3e84f218f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -18,6 +18,7 @@ import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.structure.LootTable; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.StringUtil; @Addon("structure-terrascript-loader") @@ -33,20 +34,22 @@ public class TerraScriptAddon extends TerraAddon { .getHandler(FunctionalEventHandler.class) .register(this, ConfigPackPreLoadEvent.class) .then(event -> { - CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); - CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); - event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { - for(Map.Entry entry : entries) { - try { - StructureScript structureScript = new StructureScript(entry.getValue(), platform, structureRegistry, lootRegistry, - event.getPack().getRegistryFactory().create()); - structureRegistry.register(structureScript.getID(), structureScript); - } catch(ParseException e) { - throw new LoadException("Failed to load script: ", e); + CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); + CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); + event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { + for(Map.Entry entry : entries) { + try { + String id = StringUtil.fileName(entry.getKey()); + StructureScript structureScript = new StructureScript(entry.getValue(), id, platform, structureRegistry, + lootRegistry, + event.getPack().getRegistryFactory().create()); + structureRegistry.register(structureScript.getID(), structureScript); + } catch(ParseException e) { + throw new LoadException("Failed to load script: ", e); + } } - } - }).close(); - }) + }).close(); + }) .failThrough(); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index 814d88886..f043737b1 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -55,8 +55,6 @@ public class Parser { private final Map>> functions = new HashMap<>(); private final List ignoredFunctions = new ArrayList<>(); - private String id; - public Parser(String data) { this.data = data; } @@ -79,17 +77,7 @@ public class Parser { * @throws ParseException If parsing fails. */ public Block parse() { - Tokenizer tokens = new Tokenizer(data); - - // Parse ID - ParserUtil.checkType(tokens.consume(), Token.Type.ID); // First token must be ID - Token idToken = tokens.get(); - ParserUtil.checkType(tokens.consume(), Token.Type.STRING); // Second token must be string literal containing ID - ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); - this.id = idToken.getContent(); - - - return parseBlock(tokens, new HashMap<>(), false); + return parseBlock(new Tokenizer(data), new HashMap<>(), false); } private Keyword parseLoopLike(Tokenizer tokens, Map variableMap, boolean loop) throws ParseException { @@ -429,10 +417,6 @@ public class Parser { throw new UnsupportedOperationException("Unsupported function: " + identifier.getContent()); } - public String getID() { - return id; - } - private List> getArgs(Tokenizer tokens, Map variableMap) { List> args = new ArrayList<>(); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 28589d587..b260bc8f3 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -52,9 +52,8 @@ public class StructureScript implements Structure { private final String id; private final Cache cache; private final Platform platform; - private String tempID; - public StructureScript(InputStream inputStream, Platform platform, Registry registry, Registry lootRegistry, + public StructureScript(InputStream inputStream, String id, Platform platform, Registry registry, Registry lootRegistry, Registry> functionRegistry) { Parser parser; try { @@ -62,6 +61,7 @@ public class StructureScript implements Structure { } catch(IOException e) { throw new RuntimeException(e); } + this.id = id; functionRegistry.forEach(parser::registerFunction); // Register registry functions. @@ -92,7 +92,7 @@ public class StructureScript implements Structure { .registerFunction("rotationDegrees", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().getDegrees(), Returnable.ReturnType.NUMBER)) .registerFunction("print", - new UnaryStringFunctionBuilder(string -> platform.getDebugLogger().info("[" + tempID + "] " + string))) + new UnaryStringFunctionBuilder(string -> platform.getDebugLogger().info("[" + id + "] " + string))) .registerFunction("abs", new UnaryNumberFunctionBuilder(number -> FastMath.abs(number.doubleValue()))) .registerFunction("pow", new BinaryNumberFunctionBuilder( (number, number2) -> FastMath.pow(number.doubleValue(), number2.doubleValue()))) @@ -117,8 +117,6 @@ public class StructureScript implements Structure { } block = parser.parse(); - this.id = parser.getID(); - tempID = id; this.platform = platform; this.cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getStructureCache()).build(); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java index 252e69aeb..578dc65b4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java @@ -218,10 +218,6 @@ public class Token { * Fail statement. Like return keyword, but specifies that generation has failed. */ FAIL, - /** - * ID declaration - */ - ID, /** * For loop initializer token */ diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java index 566adc012..5c82f1b81 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java @@ -190,9 +190,6 @@ public class Tokenizer { if(tokenString.equals("fail")) return new Token(tokenString, Token.Type.FAIL, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("id")) - return new Token(tokenString, Token.Type.ID, new Position(reader.getLine(), reader.getIndex())); - return new Token(tokenString, Token.Type.IDENTIFIER, new Position(reader.getLine(), reader.getIndex())); } diff --git a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf index 93fe11eda..8bcce7177 100644 --- a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf +++ b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf @@ -1,5 +1,3 @@ -id "testScript"; - bool thing1 = 2 > (2+2) || false; if(2 > 2 || 3 + 4 <= 2 && 4 + 5 > 2 / 3) { diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java new file mode 100644 index 000000000..2886c0d19 --- /dev/null +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.api.util; + +import java.io.File; + + +public class StringUtil { + public static String fileName(String path) { + if(path.contains(File.separator)) { + return path.substring(path.lastIndexOf(File.separatorChar) + 1, path.lastIndexOf('.')); + } else if(path.contains(".")) { + return path.substring(0, path.lastIndexOf('.')); + } else { + return path; + } + } +} From d7811959fac2252a17b1845a610606bec292596c Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 11:16:41 -0700 Subject: [PATCH 13/97] include script path in script compile errors --- .../com/dfsek/terra/addons/terrascript/TerraScriptAddon.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java index 3e84f218f..727944e83 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java @@ -45,7 +45,7 @@ public class TerraScriptAddon extends TerraAddon { event.getPack().getRegistryFactory().create()); structureRegistry.register(structureScript.getID(), structureScript); } catch(ParseException e) { - throw new LoadException("Failed to load script: ", e); + throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e); } } }).close(); From 1892dd1c379481ee6edae7a1e6cbf47ac8ef9c94 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 11:22:23 -0700 Subject: [PATCH 14/97] improve registry load error message --- .../java/com/dfsek/terra/registry/OpenRegistryImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 018910664..67a87b32c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -11,6 +11,7 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.stream.Collector; import java.util.stream.Collectors; import com.dfsek.terra.api.registry.OpenRegistry; @@ -37,14 +38,13 @@ public class OpenRegistryImpl implements OpenRegistry { @Override public T load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { T obj = get((String) o); - StringBuilder keys = new StringBuilder("["); + String list = objects.keySet().stream().reduce("", (a, b) -> a + "\n - " + b); - objects.keySet().forEach(key -> keys.append(key).append(", ")); + if(objects.isEmpty()) list = "[ ]"; if(obj == null) throw new LoadException("No such " + type.getType().getTypeName() + " matching \"" + o + - "\" was found in this registry. Registry contains items: " + keys.substring(0, keys.length() - 2) + - "]"); + "\" was found in this registry. Registry contains items: " + list); return obj; } From f5fdb6cb30a4d8ce247d491c61bb5dc752430253 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 11:27:05 -0700 Subject: [PATCH 15/97] sort registry items in error message --- .../main/java/com/dfsek/terra/registry/OpenRegistryImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 67a87b32c..cde06c1d4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -38,7 +38,7 @@ public class OpenRegistryImpl implements OpenRegistry { @Override public T load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { T obj = get((String) o); - String list = objects.keySet().stream().reduce("", (a, b) -> a + "\n - " + b); + String list = objects.keySet().stream().sorted().reduce("", (a, b) -> a + "\n - " + b); if(objects.isEmpty()) list = "[ ]"; From 56170d8392d0fbd6b1fabcbf859a2c397e973503 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 11:27:33 -0700 Subject: [PATCH 16/97] remove CheckedRegistry#registerUnchecked --- .../dfsek/terra/api/registry/CheckedRegistry.java | 12 ------------ .../dfsek/terra/registry/CheckedRegistryImpl.java | 6 ------ 2 files changed, 18 deletions(-) diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/core/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index 0b2ba55a9..db651f233 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -14,16 +14,4 @@ public interface CheckedRegistry extends Registry { */ void register(String identifier, T value) throws DuplicateEntryException; - /** - * Add a value to the registry, without checking presence beforehand. - *

- * Use of this method is generally discouraged, as it is bad practice to overwrite registry values. - * - * @param identifier Identifier to assign value. - * @param value Value to register. - * - * @deprecated Use of {@link #register(String, Object)} is encouraged. - */ - @Deprecated - void registerUnchecked(String identifier, T value); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index c7ea1cbf9..a44b0f11a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -31,12 +31,6 @@ public class CheckedRegistryImpl implements CheckedRegistry { registry.registerChecked(identifier, value); } - @Override - @Deprecated - public void registerUnchecked(String identifier, T value) { - registry.register(identifier, value); - } - @Override public T get(String identifier) { return registry.get(identifier); From c93dd196784dc793277cce980a382a1601fd2abd Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 11:35:39 -0700 Subject: [PATCH 17/97] enforce registry IDs to be alphanumeric with hyphens & underscores --- .../java/com/dfsek/terra/registry/OpenRegistryImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index cde06c1d4..3cbbdf32a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -1,6 +1,7 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.ConfigLoader; import java.lang.reflect.AnnotatedType; @@ -11,6 +12,7 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.regex.Pattern; import java.util.stream.Collector; import java.util.stream.Collectors; @@ -27,6 +29,8 @@ public class OpenRegistryImpl implements OpenRegistry { private static final Entry NULL = new Entry<>(null); private final Map> objects; + private static final Pattern ID_PATTERN = Pattern.compile("^[a-zA-Z0-9_-]*$"); + public OpenRegistryImpl() { objects = new HashMap<>(); } @@ -66,6 +70,8 @@ public class OpenRegistryImpl implements OpenRegistry { } public boolean register(String identifier, Entry value) { + if(!ID_PATTERN.matcher(identifier).matches()) + throw new IllegalArgumentException("Registry ID must only contain alphanumeric characters, hyphens, and underscores. \"" + identifier + "\" is not a valid ID."); boolean exists = objects.containsKey(identifier); objects.put(identifier, value); return exists; From 901ec1cda3aa23066beb01727dab3a6fe22c887b Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 12:16:33 -0700 Subject: [PATCH 18/97] fix /te reload --- .../java/com/dfsek/terra/fabric/PlatformImpl.java | 6 ++++++ .../generation/FabricChunkGeneratorWrapper.java | 11 +++++++++-- .../terra/fabric/generation/TerraBiomeSource.java | 12 +++++++----- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index 0271ce1f5..ceaa0eea5 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -3,6 +3,7 @@ package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.util.FabricUtil; import net.fabricmc.loader.api.FabricLoader; @@ -50,6 +51,11 @@ public class PlatformImpl extends AbstractPlatform { LangUtil.load(getTerraConfig().getLanguage(), this); // Load language. boolean succeed = getRawConfigRegistry().loadAll(this); + worlds.forEach(world -> { + FabricChunkGeneratorWrapper chunkGeneratorWrapper = ((FabricChunkGeneratorWrapper) world.getChunkManager().getChunkGenerator()); + chunkGeneratorWrapper.setPack(getConfigRegistry().get(chunkGeneratorWrapper.getPack().getID())); + }); + return succeed; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index ab5db3047..ebae50251 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -60,10 +60,10 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C ); private final long seed; - private final ChunkGenerator delegate; + private ChunkGenerator delegate; private final TerraBiomeSource biomeSource; - private final ConfigPack pack; + private ConfigPack pack; private ServerWorld world; public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) { @@ -77,6 +77,13 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C this.seed = seed; } + public void setPack(ConfigPack pack) { + this.pack = pack; + this.delegate = pack.getGeneratorProvider().newInstance(pack); + biomeSource.setPack(pack); + + delegate.getPlatform().logger().info("Loading world with config pack " + pack.getID()); + } @Override protected Codec getCodec() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 6ea7b0de9..0ca50b7d0 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -34,8 +34,11 @@ public class TerraBiomeSource extends BiomeSource { private final Registry biomeRegistry; private final long seed; - private final BiomeProvider provider; - private final ConfigPack pack; + private ConfigPack pack; + + public void setPack(ConfigPack pack) { + this.pack = pack; + } public TerraBiomeSource(Registry biomes, long seed, ConfigPack pack) { super(biomes.stream() @@ -45,7 +48,6 @@ public class TerraBiomeSource extends BiomeSource { .collect(Collectors.toList())); this.biomeRegistry = biomes; this.seed = seed; - this.provider = pack.getBiomeProviderBuilder(); this.pack = pack; } @@ -61,11 +63,11 @@ public class TerraBiomeSource extends BiomeSource { @Override public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) { - TerraBiome biome = provider.getBiome(biomeX << 2, biomeZ << 2, seed); + TerraBiome biome = pack.getBiomeProviderBuilder().getBiome(biomeX << 2, biomeZ << 2, seed); return biomeRegistry.get(new Identifier("terra", FabricUtil.createBiomeID(pack, biome.getID()))); } public BiomeProvider getProvider() { - return provider; + return pack.getBiomeProviderBuilder(); } } From e56cf9f36e62a54997f53049556204ab7f5cf482 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:04:46 -0700 Subject: [PATCH 19/97] Remove image provider addon from main repo --- common/addons/biome-provider-image/README.md | 6 -- .../biome-provider-image/build.gradle.kts | 2 - .../biome/image/ImageBiomeProvider.java | 64 ------------------- .../biome/image/ImageBiomeProviderAddon.java | 43 ------------- .../biome/image/ImageProviderTemplate.java | 33 ---------- 5 files changed, 148 deletions(-) delete mode 100644 common/addons/biome-provider-image/README.md delete mode 100644 common/addons/biome-provider-image/build.gradle.kts delete mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java delete mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java delete mode 100644 common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java diff --git a/common/addons/biome-provider-image/README.md b/common/addons/biome-provider-image/README.md deleted file mode 100644 index 49e9b8fdb..000000000 --- a/common/addons/biome-provider-image/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# biome-provider-image - -Implements and registers the `IMAGE` biome provider, a biome provider which -generates biomes from an image, using the `color` attribute of biomes. - -This addon registers the provider type, and all associated config options. \ No newline at end of file diff --git a/common/addons/biome-provider-image/build.gradle.kts b/common/addons/biome-provider-image/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/biome-provider-image/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java deleted file mode 100644 index 3ba0cb9ba..000000000 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProvider.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.dfsek.terra.addons.biome.image; - -import net.jafama.FastMath; - -import java.awt.Color; -import java.awt.image.BufferedImage; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class ImageBiomeProvider implements BiomeProvider { - private final Map colorBiomeMap = new HashMap<>(); - private final BufferedImage image; - private final int resolution; - private final Align align; - - public ImageBiomeProvider(Set registry, BufferedImage image, int resolution, Align align) { - this.image = image; - this.resolution = resolution; - this.align = align; - registry.forEach(biome -> colorBiomeMap.put(new Color(biome.getColor()), biome)); - } - - private static int distance(Color a, Color b) { - return FastMath.abs(a.getRed() - b.getRed()) + FastMath.abs(a.getGreen() - b.getGreen()) + FastMath.abs(a.getBlue() - b.getBlue()); - } - - @Override - public TerraBiome getBiome(int x, int z, long seed) { - x /= resolution; - z /= resolution; - Color color = align.getColor(image, x, z); - return colorBiomeMap.get(colorBiomeMap.keySet() - .stream() - .reduce(colorBiomeMap.keySet().stream().findAny().orElseThrow(IllegalStateException::new), - (running, element) -> { - int d1 = distance(color, running); - int d2 = distance(color, element); - return d1 < d2 ? running : element; - })); - } - - public enum Align { - CENTER { - @Override - public Color getColor(BufferedImage image, int x, int z) { - return new Color(image.getRGB(FastMath.floorMod(x - image.getWidth() / 2, image.getWidth()), - FastMath.floorMod(z - image.getHeight() / 2, image.getHeight()))); - } - }, - NONE { - @Override - public Color getColor(BufferedImage image, int x, int z) { - return new Color(image.getRGB(FastMath.floorMod(x, image.getWidth()), FastMath.floorMod(z, image.getHeight()))); - } - }; - - public abstract Color getColor(BufferedImage image, int x, int z); - } -} diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java deleted file mode 100644 index e2cf15bae..000000000 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageBiomeProviderAddon.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.addons.biome.image; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.function.Supplier; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -@Addon("biome-provider-image") -@Author("Terra") -@Version("1.0.0") -public class ImageBiomeProviderAddon extends TerraAddon { - public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { - }; - - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( - PROVIDER_REGISTRY_KEY); - providerRegistry.register("IMAGE", () -> new ImageProviderTemplate(event.getPack().getRegistry(TerraBiome.class))); - }) - .failThrough(); - } -} diff --git a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java b/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java deleted file mode 100644 index e82f4a004..000000000 --- a/common/addons/biome-provider-image/src/main/java/com/dfsek/terra/addons/biome/image/ImageProviderTemplate.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.biome.image; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.awt.image.BufferedImage; -import java.util.HashSet; - -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class ImageProviderTemplate implements ObjectTemplate { - private final Registry biomes; - @Value("resolution") - @Default - private int resolution = 1; - @Value("image.name") - private BufferedImage image; - @Value("image.align") - private ImageBiomeProvider.Align align; - - public ImageProviderTemplate(Registry set) { - this.biomes = set; - } - - @Override - public BiomeProvider get() { - return new ImageBiomeProvider(new HashSet<>(biomes.entries()), image, resolution, align); - } -} From 09031d5c90b7a6b1664cbb16dbbcaaaa4c64a5de Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:05:49 -0700 Subject: [PATCH 20/97] add image provider addon as submodule --- .gitmodules | 3 +++ common/addons/biome-provider-image | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 common/addons/biome-provider-image diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..617ea2609 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "common/addons/biome-provider-image"] + path = common/addons/biome-provider-image + url = https://github.com/PolyhedralDev/Terra-biome-provider-image diff --git a/common/addons/biome-provider-image b/common/addons/biome-provider-image new file mode 160000 index 000000000..7b895aa1d --- /dev/null +++ b/common/addons/biome-provider-image @@ -0,0 +1 @@ +Subproject commit 7b895aa1d86d68d7d723c03e0c214828dbd7890d From 61600c96c4a9dde8824a3f24ae6872490ac318e8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:10:02 -0700 Subject: [PATCH 21/97] remove biome pipeline addon from main repo --- .../addons/biome-provider-pipeline/README.md | 7 -- .../biome-provider-pipeline/build.gradle.kts | 2 - .../biome/pipeline/BiomeHolderImpl.java | 87 ------------------- .../addons/biome/pipeline/BiomePipeline.java | 67 -------------- .../biome/pipeline/BiomePipelineAddon.java | 71 --------------- .../biome/pipeline/BiomePipelineProvider.java | 84 ------------------ .../biome/pipeline/api/BiomeExpander.java | 8 -- .../biome/pipeline/api/BiomeHolder.java | 17 ---- .../biome/pipeline/api/BiomeMutator.java | 25 ------ .../addons/biome/pipeline/api/Stage.java | 8 -- .../config/BiomePipelineTemplate.java | 41 --------- .../pipeline/config/BiomeProviderLoader.java | 18 ---- .../config/BiomeProviderTemplate.java | 22 ----- .../pipeline/config/NoiseSourceTemplate.java | 24 ----- .../biome/pipeline/config/SourceTemplate.java | 10 --- .../pipeline/config/stage/StageTemplate.java | 14 --- .../stage/expander/ExpanderStageTemplate.java | 14 --- .../mutator/BorderListMutatorTemplate.java | 35 -------- .../stage/mutator/BorderMutatorTemplate.java | 29 ------- .../mutator/ReplaceListMutatorTemplate.java | 31 ------- .../stage/mutator/ReplaceMutatorTemplate.java | 26 ------ .../stage/mutator/SmoothMutatorTemplate.java | 14 --- .../pipeline/expand/FractalExpander.java | 20 ----- .../pipeline/mutator/BorderListMutator.java | 49 ----------- .../biome/pipeline/mutator/BorderMutator.java | 40 --------- .../pipeline/mutator/ReplaceListMutator.java | 38 -------- .../pipeline/mutator/ReplaceMutator.java | 28 ------ .../biome/pipeline/mutator/SmoothMutator.java | 39 --------- .../biome/pipeline/source/BiomeSource.java | 8 -- .../biome/pipeline/source/NoiseSource.java | 21 ----- .../biome/pipeline/stages/ExpanderStage.java | 28 ------ .../biome/pipeline/stages/MutatorStage.java | 33 ------- 32 files changed, 958 deletions(-) delete mode 100644 common/addons/biome-provider-pipeline/README.md delete mode 100644 common/addons/biome-provider-pipeline/build.gradle.kts delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java delete mode 100644 common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java diff --git a/common/addons/biome-provider-pipeline/README.md b/common/addons/biome-provider-pipeline/README.md deleted file mode 100644 index 9e55109a7..000000000 --- a/common/addons/biome-provider-pipeline/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# biome-provider-pipeline - -Implements the Biome Pipeline, a procedural biome provider that uses a series -of "stages" to apply "mutations" to a 2D grid of biomes. - -This addon registers the `PIPELINE` biome provider type, and all associated -configurations. \ No newline at end of file diff --git a/common/addons/biome-provider-pipeline/build.gradle.kts b/common/addons/biome-provider-pipeline/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/biome-provider-pipeline/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java deleted file mode 100644 index b00939095..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomeHolderImpl.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class BiomeHolderImpl implements BiomeHolder { - private final Vector2 origin; - private final int width; - private final int offset; - private TerraBiome[][] biomes; - - public BiomeHolderImpl(int width, Vector2 origin) { - width += 4; - this.width = width; - biomes = new TerraBiome[width][width]; - this.origin = origin; - this.offset = 2; - } - - private BiomeHolderImpl(TerraBiome[][] biomes, Vector2 origin, int width, int offset) { - this.biomes = biomes; - this.origin = origin; - this.width = width; - this.offset = 2 * offset; - } - - @Override - public BiomeHolder expand(BiomeExpander expander, long seed) { - TerraBiome[][] old = biomes; - int newWidth = width * 2 - 1; - - biomes = new TerraBiome[newWidth][newWidth]; - - for(int x = 0; x < width; x++) { - for(int z = 0; z < width; z++) { - biomes[x * 2][z * 2] = old[x][z]; - if(z != width - 1) - biomes[x * 2][z * 2 + 1] = expander.getBetween(x + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], - old[x][z + 1]); - if(x != width - 1) - biomes[x * 2 + 1][z * 2] = expander.getBetween(x + 1 + origin.getX(), z + origin.getZ(), seed, old[x][z], - old[x + 1][z]); - if(x != width - 1 && z != width - 1) - biomes[x * 2 + 1][z * 2 + 1] = expander.getBetween(x + 1 + origin.getX(), z + 1 + origin.getZ(), seed, old[x][z], - old[x + 1][z + 1], old[x][z + 1], old[x + 1][z]); - } - } - return new BiomeHolderImpl(biomes, origin.setX(origin.getX() * 2 - 1).setZ(origin.getZ() * 2 - 1), newWidth, offset); - } - - @Override - public void mutate(BiomeMutator mutator, long seed) { - for(int x = 0; x < width; x++) { - for(int z = 0; z < width; z++) { - BiomeMutator.ViewPoint viewPoint = new BiomeMutator.ViewPoint(this, x, z); - biomes[x][z] = mutator.mutate(viewPoint, x + origin.getX(), z + origin.getZ(), seed); - } - } - } - - @Override - public void fill(BiomeSource source, long seed) { - for(int x = 0; x < width; x++) { - for(int z = 0; z < width; z++) { - biomes[x][z] = source.getBiome(origin.getX() + x, origin.getZ() + z, seed); - } - } - } - - @Override - public TerraBiome getBiome(int x, int z) { - x += offset; - z += offset; - return getBiomeRaw(x, z); - } - - @Override - public TerraBiome getBiomeRaw(int x, int z) { - if(x >= width || z >= width || x < 0 || z < 0) return null; - return biomes[x][z]; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java deleted file mode 100644 index a9c013fbc..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipeline.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline; - -import java.util.ArrayList; -import java.util.List; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.util.vector.Vector2; - - -public class BiomePipeline { - private final BiomeSource source; - private final List stages; - private final int size; - private final int init; - - private BiomePipeline(BiomeSource source, List stages, int size, int init) { - this.source = source; - this.stages = stages; - this.size = size; - this.init = init; - } - - /** - * Get biomes in a chunk - * - * @param x Chunk X coord - * @param z Chunk Z coord - * - * @return BiomeHolder containing biomes. - */ - public BiomeHolder getBiomes(int x, int z, long seed) { - BiomeHolder holder = new BiomeHolderImpl(init, new Vector2(x * (init - 1), z * (init - 1))); - holder.fill(source, seed); - for(Stage stage : stages) holder = stage.apply(holder, seed); - return holder; - } - - public int getSize() { - return size; - } - - public static final class BiomePipelineBuilder { - private final int init; - private final List stages = new ArrayList<>(); - private int expand; - - public BiomePipelineBuilder(int init) { - this.init = init; - expand = init; - } - - public BiomePipeline build(BiomeSource source) { - for(Stage stage : stages) { - if(stage.isExpansion()) expand = expand * 2 - 1; - } - - return new BiomePipeline(source, stages, expand, init); - } - - public BiomePipelineBuilder addStage(Stage stage) { - stages.add(stage); - return this; - } - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java deleted file mode 100644 index 6b32bd6f9..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineAddon.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.BiomePipelineTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.NoiseSourceTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.expander.ExpanderStageTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.BorderMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceListMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.ReplaceMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.config.stage.mutator.SmoothMutatorTemplate; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -@Addon("biome-provider-pipeline") -@Author("Terra") -@Version("1.0.0") -public class BiomePipelineAddon extends TerraAddon { - - public static final TypeKey>> SOURCE_REGISTRY_KEY = new TypeKey<>() { - }; - - public static final TypeKey>> STAGE_REGISTRY_KEY = new TypeKey<>() { - }; - public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { - }; - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( - PROVIDER_REGISTRY_KEY); - providerRegistry.register("PIPELINE", () -> new BiomePipelineTemplate(platform)); - }) - .then(event -> { - CheckedRegistry>> sourceRegistry = event.getPack().getOrCreateRegistry( - SOURCE_REGISTRY_KEY); - sourceRegistry.register("NOISE", NoiseSourceTemplate::new); - }) - .then(event -> { - CheckedRegistry>> stageRegistry = event.getPack().getOrCreateRegistry(STAGE_REGISTRY_KEY); - stageRegistry.register("FRACTAL_EXPAND", ExpanderStageTemplate::new); - stageRegistry.register("SMOOTH", SmoothMutatorTemplate::new); - stageRegistry.register("REPLACE", ReplaceMutatorTemplate::new); - stageRegistry.register("REPLACE_LIST", ReplaceListMutatorTemplate::new); - stageRegistry.register("BORDER", BorderMutatorTemplate::new); - stageRegistry.register("BORDER_LIST", BorderListMutatorTemplate::new); - }) - .failThrough(); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java deleted file mode 100644 index 64fbeed18..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/BiomePipelineProvider.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class BiomePipelineProvider implements BiomeProvider { - private final LoadingCache holderCache; - private final BiomePipeline pipeline; - private final int resolution; - private final NoiseSampler mutator; - private final double noiseAmp; - - public BiomePipelineProvider(BiomePipeline pipeline, Platform platform, int resolution, NoiseSampler mutator, double noiseAmp) { - this.resolution = resolution; - this.mutator = mutator; - this.noiseAmp = noiseAmp; - holderCache = CacheBuilder.newBuilder() - .maximumSize(platform == null ? 32 : platform.getTerraConfig().getProviderCache()) - .build( - new CacheLoader<>() { - @Override - public BiomeHolder load(@NotNull SeededVector key) { - return pipeline.getBiomes(key.x, key.z, key.seed); - } - } - ); - this.pipeline = pipeline; - } - - @Override - public TerraBiome getBiome(int x, int z, long seed) { - x += mutator.getNoiseSeeded(seed + 1, x, z) * noiseAmp; - z += mutator.getNoiseSeeded(seed + 2, x, z) * noiseAmp; - - - x = FastMath.floorToInt(FastMath.floorDiv(x, resolution)); - - z = FastMath.floorToInt(FastMath.floorDiv(z, resolution)); - - int fdX = FastMath.floorDiv(x, pipeline.getSize()); - int fdZ = FastMath.floorDiv(z, pipeline.getSize()); - return holderCache.getUnchecked(new SeededVector(fdX, fdZ, seed)).getBiome(x - fdX * pipeline.getSize(), - z - fdZ * pipeline.getSize()); - } - - private static final class SeededVector { - private final int x; - private final int z; - private final long seed; - - private SeededVector(int x, int z, long seed) { - this.x = x; - this.z = z; - this.seed = seed; - } - - @Override - public int hashCode() { - int result = 0; - result = 31 * result + ((int) (seed ^ (seed >>> 32))); - result = 31 * result + x; - result = 31 * result + z; - return result; - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof SeededVector)) return false; - SeededVector that = (SeededVector) obj; - - return this.seed == that.seed && this.x == that.x && this.z == that.z; - } - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java deleted file mode 100644 index 462f8ebec..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeExpander.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api; - -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public interface BiomeExpander { - TerraBiome getBetween(double x, double z, long seed, TerraBiome... others); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java deleted file mode 100644 index bf88c46e2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeHolder.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api; - -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public interface BiomeHolder { - BiomeHolder expand(BiomeExpander expander, long seed); - - void mutate(BiomeMutator mutator, long seed); - - void fill(BiomeSource source, long seed); - - TerraBiome getBiome(int x, int z); - - TerraBiome getBiomeRaw(int x, int z); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java deleted file mode 100644 index fab417815..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/BiomeMutator.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api; - -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public interface BiomeMutator { - TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed); - - class ViewPoint { - private final BiomeHolder biomes; - private final int offX; - private final int offZ; - - public ViewPoint(BiomeHolder biomes, int offX, int offZ) { - this.biomes = biomes; - this.offX = offX; - this.offZ = offZ; - } - - - public TerraBiome getBiome(int x, int z) { - return biomes.getBiomeRaw(x + offX, z + offZ); - } - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java deleted file mode 100644 index af00308c3..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/api/Stage.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.api; - -public interface Stage { - BiomeHolder apply(BiomeHolder in, long seed); - - boolean isExpansion(); - -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java deleted file mode 100644 index 84548fbef..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomePipelineTemplate.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import java.util.List; - -import com.dfsek.terra.addons.biome.pipeline.BiomePipeline; -import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -@SuppressWarnings({ "FieldMayBeFinal", "unused" }) -public class BiomePipelineTemplate extends BiomeProviderTemplate { - private final Platform platform; - @Value("pipeline.initial-size") - @Default - private @Meta int initialSize = 2; - - @Value("pipeline.stages") - private @Meta List<@Meta Stage> stages; - - @Value("pipeline.source") - private @Meta BiomeSource source; - - public BiomePipelineTemplate(Platform platform) { - this.platform = platform; - } - - @Override - public BiomeProvider get() { - BiomePipeline.BiomePipelineBuilder biomePipelineBuilder = new BiomePipeline.BiomePipelineBuilder(initialSize); - stages.forEach(biomePipelineBuilder::addStage); - BiomePipeline pipeline = biomePipelineBuilder.build(source); - return new BiomePipelineProvider(pipeline, platform, resolution, blend, blendAmp); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java deleted file mode 100644 index a254082ca..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderLoader.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; - -import java.lang.reflect.AnnotatedType; - -import com.dfsek.terra.addons.biome.pipeline.BiomePipelineProvider; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class BiomeProviderLoader implements TypeLoader { - @Override - public BiomeProvider load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { - return loader.loadType(BiomePipelineProvider.class, c); // TODO: actually implement this lol - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java deleted file mode 100644 index c1aa496cb..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/BiomeProviderTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public abstract class BiomeProviderTemplate implements ObjectTemplate { - @Value("resolution") - @Default - protected @Meta int resolution = 1; - @Value("blend.noise") - @Default - protected @Meta NoiseSampler blend = NoiseSampler.zero(); - @Value("blend.amplitude") - @Default - protected @Meta double blendAmp = 0d; -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java deleted file mode 100644 index 627146800..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/NoiseSourceTemplate.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; -import com.dfsek.terra.addons.biome.pipeline.source.NoiseSource; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class NoiseSourceTemplate extends SourceTemplate { - @Value("noise") - private @Meta NoiseSampler noise; - - @Value("biomes") - private @Meta ProbabilityCollection<@Meta TerraBiome> biomes; - - @Override - public BiomeSource get() { - return new NoiseSource(biomes, noise); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java deleted file mode 100644 index 831ca3d88..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/SourceTemplate.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.biome.pipeline.source.BiomeSource; - - -public abstract class SourceTemplate implements ObjectTemplate { - -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java deleted file mode 100644 index 4b491e482..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/StageTemplate.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class StageTemplate implements ObjectTemplate { - @Value("noise") - protected @Meta NoiseSampler noise; -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java deleted file mode 100644 index ea74a303a..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/expander/ExpanderStageTemplate.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage.expander; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.expand.FractalExpander; -import com.dfsek.terra.addons.biome.pipeline.stages.ExpanderStage; - - -public class ExpanderStageTemplate extends StageTemplate { - @Override - public Stage get() { - return new ExpanderStage(new FractalExpander(noise)); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java deleted file mode 100644 index 136243bc2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderListMutatorTemplate.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.annotations.Value; - -import java.util.Map; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderListMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -@SuppressWarnings("unused") -public class BorderListMutatorTemplate extends StageTemplate { - @Value("from") - private @Meta String from; - - @Value("default-replace") - private @Meta String defaultReplace; - - @Value("default-to") - private @Meta ProbabilityCollection<@Meta TerraBiome> defaultTo; - - @Value("replace") - private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> replace; - - - @Override - public Stage get() { - return new MutatorStage(new BorderListMutator(replace, from, defaultReplace, noise, defaultTo)); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java deleted file mode 100644 index 6632bf6bb..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/BorderMutatorTemplate.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.BorderMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -@SuppressWarnings("unused") -public class BorderMutatorTemplate extends StageTemplate { - @Value("from") - private @Meta String from; - - @Value("replace") - private @Meta String replace; - - @Value("to") - private @Meta ProbabilityCollection<@Meta TerraBiome> to; - - @Override - public Stage get() { - return new MutatorStage(new BorderMutator(from, replace, noise, to)); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java deleted file mode 100644 index 5a21ec95b..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceListMutatorTemplate.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.annotations.Value; - -import java.util.Map; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceListMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -@SuppressWarnings("unused") -public class ReplaceListMutatorTemplate extends StageTemplate { - @Value("default-from") - private @Meta String defaultFrom; - - @Value("default-to") - private @Meta ProbabilityCollection<@Meta TerraBiome> defaultTo; - - @Value("to") - private @Meta Map<@Meta TerraBiome, @Meta ProbabilityCollection<@Meta TerraBiome>> replace; - - @Override - public Stage get() { - return new MutatorStage(new ReplaceListMutator(replace, defaultFrom, defaultTo, noise)); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java deleted file mode 100644 index 6dd7196c2..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/ReplaceMutatorTemplate.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.ReplaceMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -@SuppressWarnings("unused") -public class ReplaceMutatorTemplate extends StageTemplate { - @Value("from") - private @Meta String from; - - @Value("to") - private @Meta ProbabilityCollection<@Meta TerraBiome> to; - - @Override - public Stage get() { - return new MutatorStage(new ReplaceMutator(from, to, noise)); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java deleted file mode 100644 index 400779433..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/config/stage/mutator/SmoothMutatorTemplate.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.config.stage.mutator; - -import com.dfsek.terra.addons.biome.pipeline.api.Stage; -import com.dfsek.terra.addons.biome.pipeline.config.stage.StageTemplate; -import com.dfsek.terra.addons.biome.pipeline.mutator.SmoothMutator; -import com.dfsek.terra.addons.biome.pipeline.stages.MutatorStage; - - -public class SmoothMutatorTemplate extends StageTemplate { - @Override - public Stage get() { - return new MutatorStage(new SmoothMutator(noise)); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java deleted file mode 100644 index 39050c873..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/expand/FractalExpander.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.expand; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class FractalExpander implements BiomeExpander { - private final NoiseSampler sampler; - - public FractalExpander(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public TerraBiome getBetween(double x, double z, long seed, TerraBiome... others) { - return others[MathUtil.normalizeIndex(sampler.getNoiseSeeded(seed, x, z), others.length)]; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java deleted file mode 100644 index ff8570001..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderListMutator.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.Map; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class BorderListMutator implements BiomeMutator { - private final String border; - private final NoiseSampler noiseSampler; - private final ProbabilityCollection replaceDefault; - private final String defaultReplace; - private final Map> replace; - - public BorderListMutator(Map> replace, String border, String defaultReplace, - NoiseSampler noiseSampler, ProbabilityCollection replaceDefault) { - this.border = border; - this.noiseSampler = noiseSampler; - this.replaceDefault = replaceDefault; - this.defaultReplace = defaultReplace; - this.replace = replace; - } - - @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { - TerraBiome origin = viewPoint.getBiome(0, 0); - if(origin.getTags().contains(defaultReplace)) { - for(int xi = -1; xi <= 1; xi++) { - for(int zi = -1; zi <= 1; zi++) { - if(xi == 0 && zi == 0) continue; - TerraBiome current = viewPoint.getBiome(xi, zi); - if(current == null) continue; - if(current.getTags().contains(border)) { - if(replace.containsKey(origin)) { - TerraBiome biome = replace.get(origin).get(noiseSampler, x, z, seed); - return biome == null ? origin : biome; - } - TerraBiome biome = replaceDefault.get(noiseSampler, x, z, seed); - return biome == null ? origin : biome; - } - } - } - } - return origin; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java deleted file mode 100644 index 6bd5c39c8..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/BorderMutator.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class BorderMutator implements BiomeMutator { - private final String border; - private final NoiseSampler noiseSampler; - private final ProbabilityCollection replace; - private final String replaceTag; - - public BorderMutator(String border, String replaceTag, NoiseSampler noiseSampler, ProbabilityCollection replace) { - this.border = border; - this.noiseSampler = noiseSampler; - this.replace = replace; - this.replaceTag = replaceTag; - } - - @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { - TerraBiome origin = viewPoint.getBiome(0, 0); - if(origin.getTags().contains(replaceTag)) { - for(int xi = -1; xi <= 1; xi++) { - for(int zi = -1; zi <= 1; zi++) { - if(xi == 0 && zi == 0) continue; - TerraBiome current = viewPoint.getBiome(xi, zi); - if(current == null) continue; - if(current.getTags().contains(border)) { - TerraBiome biome = replace.get(noiseSampler, x, z, seed); - return biome == null ? origin : biome; - } - } - } - } - return origin; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java deleted file mode 100644 index 4712d41a7..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceListMutator.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.Map; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class ReplaceListMutator implements BiomeMutator { - private final Map> replace; - private final NoiseSampler sampler; - private final ProbabilityCollection replaceDefault; - private final String defaultTag; - - public ReplaceListMutator(Map> replace, String defaultTag, - ProbabilityCollection replaceDefault, NoiseSampler sampler) { - this.replace = replace; - this.sampler = sampler; - this.defaultTag = defaultTag; - this.replaceDefault = replaceDefault; - } - - @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { - TerraBiome center = viewPoint.getBiome(0, 0); - if(replace.containsKey(center)) { - TerraBiome biome = replace.get(center).get(sampler, x, z, seed); - return biome == null ? viewPoint.getBiome(0, 0) : biome; - } - if(viewPoint.getBiome(0, 0).getTags().contains(defaultTag)) { - TerraBiome biome = replaceDefault.get(sampler, x, z, seed); - return biome == null ? viewPoint.getBiome(0, 0) : biome; - } - return center; - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java deleted file mode 100644 index df77f796d..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/ReplaceMutator.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class ReplaceMutator implements BiomeMutator { - private final String replaceableTag; - private final ProbabilityCollection replace; - private final NoiseSampler sampler; - - public ReplaceMutator(String replaceable, ProbabilityCollection replace, NoiseSampler sampler) { - this.replaceableTag = replaceable; - this.replace = replace; - this.sampler = sampler; - } - - @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { - if(viewPoint.getBiome(0, 0).getTags().contains(replaceableTag)) { - TerraBiome biome = replace.get(sampler, x, z, seed); - return biome == null ? viewPoint.getBiome(0, 0) : biome; - } - return viewPoint.getBiome(0, 0); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java deleted file mode 100644 index 3ac06370c..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/mutator/SmoothMutator.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.mutator; - -import java.util.Objects; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class SmoothMutator implements BiomeMutator { - - private final NoiseSampler sampler; - - public SmoothMutator(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public TerraBiome mutate(ViewPoint viewPoint, double x, double z, long seed) { - TerraBiome top = viewPoint.getBiome(1, 0); - TerraBiome bottom = viewPoint.getBiome(-1, 0); - TerraBiome left = viewPoint.getBiome(0, 1); - TerraBiome right = viewPoint.getBiome(0, -1); - - - boolean vert = Objects.equals(top, bottom) && top != null; - boolean horiz = Objects.equals(left, right) && left != null; - - if(vert && horiz) { - return MathUtil.normalizeIndex(sampler.getNoiseSeeded(seed, x, z), 2) == 0 ? left : top; - } - - if(vert) return top; - if(horiz) return left; - - return viewPoint.getBiome(0, 0); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java deleted file mode 100644 index 694a820cf..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/BiomeSource.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.source; - -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public interface BiomeSource { - TerraBiome getBiome(double x, double z, long seed); -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java deleted file mode 100644 index d7846a917..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/source/NoiseSource.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.source; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class NoiseSource implements BiomeSource { - private final ProbabilityCollection biomes; - private final NoiseSampler sampler; - - public NoiseSource(ProbabilityCollection biomes, NoiseSampler sampler) { - this.biomes = biomes; - this.sampler = sampler; - } - - @Override - public TerraBiome getBiome(double x, double z, long seed) { - return biomes.get(sampler, x, z, seed); - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java deleted file mode 100644 index 6fe1eab4e..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/ExpanderStage.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.stages; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeExpander; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; - - -public class ExpanderStage implements Stage { - private final BiomeExpander expander; - - public ExpanderStage(BiomeExpander expander) { - this.expander = expander; - } - - @Override - public BiomeHolder apply(BiomeHolder in, long seed) { - return in.expand(expander, seed); - } - - @Override - public boolean isExpansion() { - return true; - } - - public enum Type { - FRACTAL - } -} diff --git a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java b/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java deleted file mode 100644 index e1b42fb3c..000000000 --- a/common/addons/biome-provider-pipeline/src/main/java/com/dfsek/terra/addons/biome/pipeline/stages/MutatorStage.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.biome.pipeline.stages; - -import com.dfsek.terra.addons.biome.pipeline.api.BiomeHolder; -import com.dfsek.terra.addons.biome.pipeline.api.BiomeMutator; -import com.dfsek.terra.addons.biome.pipeline.api.Stage; - - -public class MutatorStage implements Stage { - private final BiomeMutator mutator; - - public MutatorStage(BiomeMutator mutator) { - this.mutator = mutator; - } - - @Override - public BiomeHolder apply(BiomeHolder in, long seed) { - in.mutate(mutator, seed); - return in; - } - - @Override - public boolean isExpansion() { - return false; - } - - public enum Type { - REPLACE, - REPLACE_LIST, - BORDER, - BORDER_LIST, - SMOOTH - } -} From 445b87f1fa1e2a194f680c4293333cbb4ec1e9be Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:10:40 -0700 Subject: [PATCH 22/97] add biome pipeline addon as submodule --- .gitmodules | 3 +++ common/addons/biome-provider-pipeline | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/biome-provider-pipeline diff --git a/.gitmodules b/.gitmodules index 617ea2609..9c3421044 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "common/addons/biome-provider-image"] path = common/addons/biome-provider-image url = https://github.com/PolyhedralDev/Terra-biome-provider-image +[submodule "common/addons/biome-provider-pipeline"] + path = common/addons/biome-provider-pipeline + url = https://github.com/PolyhedralDev/Terra-biome-provider-pipeline diff --git a/common/addons/biome-provider-pipeline b/common/addons/biome-provider-pipeline new file mode 160000 index 000000000..7335645c0 --- /dev/null +++ b/common/addons/biome-provider-pipeline @@ -0,0 +1 @@ +Subproject commit 7335645c0c84ae18f2c123785870275807cb630f From f1bcd5fd79f9cd6bae1c76f8e9f496cdd485af97 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:15:38 -0700 Subject: [PATCH 23/97] remove single biome provider from main repo --- common/addons/biome-provider-single/README.md | 4 -- .../biome-provider-single/build.gradle.kts | 2 - .../biome/single/SingleBiomeProvider.java | 18 -------- .../single/SingleBiomeProviderAddon.java | 42 ------------------- .../single/SingleBiomeProviderTemplate.java | 19 --------- 5 files changed, 85 deletions(-) delete mode 100644 common/addons/biome-provider-single/README.md delete mode 100644 common/addons/biome-provider-single/build.gradle.kts delete mode 100644 common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java delete mode 100644 common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java delete mode 100644 common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java diff --git a/common/addons/biome-provider-single/README.md b/common/addons/biome-provider-single/README.md deleted file mode 100644 index 3bea8cbb5..000000000 --- a/common/addons/biome-provider-single/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# biome-provider-single - -Registers and configures the `SINGLE` biome provider, a biome provider which -accepts a single biome to generate continuously. \ No newline at end of file diff --git a/common/addons/biome-provider-single/build.gradle.kts b/common/addons/biome-provider-single/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/biome-provider-single/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java deleted file mode 100644 index 694da0b8d..000000000 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProvider.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.addons.biome.single; - -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class SingleBiomeProvider implements BiomeProvider { - private final TerraBiome biome; - - public SingleBiomeProvider(TerraBiome biome) { - this.biome = biome; - } - - @Override - public TerraBiome getBiome(int x, int z, long seed) { - return biome; - } -} diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java deleted file mode 100644 index d5ea2cee7..000000000 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderAddon.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dfsek.terra.addons.biome.single; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.function.Supplier; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -@Addon("biome-provider-single") -@Author("Terra") -@Version("1.0.0") -public class SingleBiomeProviderAddon extends TerraAddon { - public static final TypeKey>> PROVIDER_REGISTRY_KEY = new TypeKey<>() { - }; - - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> providerRegistry = event.getPack().getOrCreateRegistry( - PROVIDER_REGISTRY_KEY); - providerRegistry.register("SINGLE", SingleBiomeProviderTemplate::new); - }) - .failThrough(); - } -} diff --git a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java b/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java deleted file mode 100644 index 034c7887b..000000000 --- a/common/addons/biome-provider-single/src/main/java/com/dfsek/terra/addons/biome/single/SingleBiomeProviderTemplate.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.biome.single; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class SingleBiomeProviderTemplate implements ObjectTemplate { - @Value("biome") - private @Meta TerraBiome biome; - - @Override - public BiomeProvider get() { - return new SingleBiomeProvider(biome); - } -} From 37a70891f301d0eaa2b9ca54200c22097e3af7e6 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:19:21 -0700 Subject: [PATCH 24/97] remove chunk generator addon from main repo --- .gitmodules | 3 + common/addons/biome-provider-single | 1 + .../addons/chunk-generator-noise-3d/README.md | 4 - .../chunk-generator-noise-3d/build.gradle.kts | 2 - .../chunkgenerator/BiomePaletteTemplate.java | 30 --- .../NoiseChunkGenerator3DAddon.java | 53 ----- .../addons/chunkgenerator/PaletteUtil.java | 23 --- .../generators/NoiseChunkGenerator3D.java | 193 ------------------ .../interpolation/ChunkInterpolator2D.java | 97 --------- .../interpolation/ChunkInterpolator3D.java | 118 ----------- .../interpolation/ElevationInterpolator.java | 45 ---- .../math/interpolation/Interpolator.java | 50 ----- .../math/interpolation/Interpolator3.java | 32 --- .../generation/math/samplers/Sampler3D.java | 32 --- .../chunkgenerator/palette/PaletteHolder.java | 23 --- .../palette/PaletteHolderBuilder.java | 38 ---- .../palette/PaletteHolderLoader.java | 27 --- .../chunkgenerator/palette/PaletteInfo.java | 36 ---- .../chunkgenerator/palette/SlantHolder.java | 23 --- .../palette/SlantHolderLoader.java | 29 --- 20 files changed, 4 insertions(+), 855 deletions(-) create mode 160000 common/addons/biome-provider-single delete mode 100644 common/addons/chunk-generator-noise-3d/README.md delete mode 100644 common/addons/chunk-generator-noise-3d/build.gradle.kts delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java delete mode 100644 common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java diff --git a/.gitmodules b/.gitmodules index 9c3421044..79a38dfc2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "common/addons/biome-provider-pipeline"] path = common/addons/biome-provider-pipeline url = https://github.com/PolyhedralDev/Terra-biome-provider-pipeline +[submodule "common/addons/biome-provider-single"] + path = common/addons/biome-provider-single + url = https://github.com/PolyhedralDev/Terra-biome-provider-single diff --git a/common/addons/biome-provider-single b/common/addons/biome-provider-single new file mode 160000 index 000000000..5a19c54af --- /dev/null +++ b/common/addons/biome-provider-single @@ -0,0 +1 @@ +Subproject commit 5a19c54af52a8057d405f42ea89d519355db1ff1 diff --git a/common/addons/chunk-generator-noise-3d/README.md b/common/addons/chunk-generator-noise-3d/README.md deleted file mode 100644 index b235df2e6..000000000 --- a/common/addons/chunk-generator-noise-3d/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# chunk-generator-noise-3d - -Registers the `NOISE_3D` chunk generator, a chunk generator which uses biomes' -samplers in 3D to generate chunk data. \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java deleted file mode 100644 index 037bcde3f..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/BiomePaletteTemplate.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; -import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.world.generator.Palette; - - -public class BiomePaletteTemplate implements ObjectTemplate { - @Value("slant") - @Default - private @Meta SlantHolder slant; - @Value("palette") - private @Meta PaletteHolder palette; - @Value("ocean.level") - private @Meta int seaLevel; - - @Value("ocean.palette") - private @Meta Palette oceanPalette; - - @Override - public PaletteInfo get() { - return new PaletteInfo(palette, slant, oceanPalette, seaLevel); - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java deleted file mode 100644 index a488049cb..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator; - -import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolderLoader; -import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; -import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; - - -@Addon("chunk-generator-noise-3d") -@Author("Terra") -@Version("1.0.0") -public class NoiseChunkGenerator3DAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", - pack -> new NoiseChunkGenerator3D(pack, - platform)); - event.getPack() - .applyLoader(SlantHolder.class, new SlantHolderLoader()) - .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); - }) - .failThrough(); - - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); - } - }) - .failThrough(); - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java deleted file mode 100644 index b7901d716..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/PaletteUtil.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator; - -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; -import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.biome.GenerationSettings; -import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.util.math.Sampler; - - -public final class PaletteUtil { - public static Palette getPalette(int x, int y, int z, GenerationSettings c, Sampler sampler, PaletteInfo paletteInfo) { - SlantHolder slant = paletteInfo.getSlantHolder(); - if(slant != null) { - double slope = MathUtil.derivative(sampler, x, y, z); - if(slope > slant.getMinSlope()) { - return slant.getPalette(slope).getPalette(y); - } - } - - return paletteInfo.getPaletteHolder().getPalette(y); - } -} \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java deleted file mode 100644 index 400e51acd..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.generators; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.dfsek.terra.addons.chunkgenerator.PaletteUtil; -import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.state.properties.base.Properties; -import com.dfsek.terra.api.block.state.properties.enums.Direction; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.BiomeGrid; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.GenerationSettings; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.GenerationStage; -import com.dfsek.terra.api.world.generator.Palette; -import com.dfsek.terra.api.util.math.Sampler; - - -public class NoiseChunkGenerator3D implements ChunkGenerator { - private final ConfigPack configPack; - private final Platform platform; - private final List generationStages = new ArrayList<>(); - - private final BlockState air; - - public NoiseChunkGenerator3D(ConfigPack c, Platform platform) { - this.configPack = c; - this.platform = platform; - this.air = platform.getWorldHandle().air(); - c.getStages().forEach(stage -> generationStages.add(stage.newInstance(c))); - } - - @SuppressWarnings("try") - static void biomes(@NotNull World world, int chunkX, int chunkZ, @NotNull BiomeGrid biome, Platform platform) { - try(ProfileFrame ignore = platform.getProfiler().profile("biomes")) { - int xOrig = (chunkX << 4); - int zOrig = (chunkZ << 4); - long seed = world.getSeed(); - BiomeProvider grid = world.getBiomeProvider(); - for(int x = 0; x < 4; x++) { - for(int z = 0; z < 4; z++) { - int cx = xOrig + (x << 2); - int cz = zOrig + (z << 2); - TerraBiome b = grid.getBiome(cx, cz, seed); - - biome.setBiome(cx, cz, b.getVanillaBiomes().get(b.getGenerator().getBiomeNoise(), cx, 0, cz, world.getSeed())); - } - } - } - } - - @Override - @SuppressWarnings("try") - public ChunkData generateChunkData(@NotNull World world, Random random, int chunkX, int chunkZ, ChunkData chunk) { - try(ProfileFrame ignore = platform.getProfiler().profile("chunk_base_3d")) { - BiomeProvider grid = world.getBiomeProvider(); - - int xOrig = (chunkX << 4); - int zOrig = (chunkZ << 4); - - Sampler sampler = world.getConfig().getSamplerCache().getChunk(chunkX, chunkZ); - - long seed = world.getSeed(); - - for(int x = 0; x < 16; x++) { - for(int z = 0; z < 16; z++) { - int paletteLevel = 0; - - int cx = xOrig + x; - int cz = zOrig + z; - - TerraBiome biome = grid.getBiome(cx, cz, seed); - - PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); - - if(paletteInfo == null) { - platform.logger().info("null palette: " + biome.getID()); - } - - GenerationSettings generationSettings = biome.getGenerator(); - - int sea = paletteInfo.getSeaLevel(); - Palette seaPalette = paletteInfo.getOcean(); - - boolean justSet = false; - BlockState data = null; - for(int y = world.getMaxHeight() - 1; y >= world.getMinHeight(); y--) { - if(sampler.sample(x, y, z) > 0) { - justSet = true; - - data = PaletteUtil.getPalette(x, y, z, generationSettings, sampler, paletteInfo).get(paletteLevel, cx, y, cz, - seed); - chunk.setBlock(x, y, z, data); - - paletteLevel++; - } else if(y <= sea) { - chunk.setBlock(x, y, z, seaPalette.get(sea - y, x + xOrig, y, z + zOrig, seed)); - - justSet = false; - paletteLevel = 0; - } else { - - justSet = false; - paletteLevel = 0; - } - } - } - } - return chunk; - } - } - - @Override - public void generateBiomes(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, @NotNull BiomeGrid biome) { - biomes(world, chunkX, chunkZ, biome, platform); - } - - @Override - public Sampler createSampler(int chunkX, int chunkZ, BiomeProvider provider, World world, int elevationSmooth) { - return new Sampler3D(chunkX, chunkZ, provider, world, elevationSmooth); - } - - @Override - public ConfigPack getConfigPack() { - return configPack; - } - - @Override - public Platform getPlatform() { - return platform; - } - - @Override - public List getGenerationStages() { - return generationStages; - } - - @Override - public BlockState getBlock(World world, int x, int y, int z) { - BiomeProvider provider = world.getBiomeProvider(); - TerraBiome biome = provider.getBiome(x, z, world.getSeed()); - Sampler sampler = world.getConfig().getSamplerCache().get(x, z); - - PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); - Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(), sampler, paletteInfo); - int fdX = FastMath.floorMod(x, 16); - int fdZ = FastMath.floorMod(z, 16); - double noise = sampler.sample(fdX, y, fdZ); - if(noise > 0) { - int level = 0; - for(int yi = world.getMaxHeight() - 1; yi > y; yi--) { - if(sampler.sample(fdX, yi, fdZ) > 0) level++; - else level = 0; - } - return palette.get(level, x, y, z, world.getSeed()); - } else if(y <= paletteInfo.getSeaLevel()) { - return paletteInfo.getOcean().get(paletteInfo.getSeaLevel() - y, x, y, z, world.getSeed()); - } else return air; - } - - private boolean placeStair(BlockState orig, ChunkData chunk, Vector3 block, double thresh, Sampler sampler, BlockState stairNew) { - - if(sampler.sample(block.getBlockX() - 0.55, block.getY(), block.getZ()) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.WEST); - } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() - 0.55) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.NORTH); - } else if(sampler.sample(block.getBlockX(), block.getY(), block.getZ() + 0.55) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.SOUTH); - } else if(sampler.sample(block.getX() + 0.55, block.getY(), block.getZ()) > thresh) { - stairNew.set(Properties.DIRECTION, Direction.EAST); - } else stairNew = null; - if(stairNew != null) { - stairNew.setIfPresent(Properties.WATERLOGGED, orig.getBlockType().isWater()); - chunk.setBlock(block.getBlockX(), block.getBlockY(), block.getBlockZ(), stairNew); - return true; - } - return false; - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java deleted file mode 100644 index fb02692fd..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator2D.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; - -import net.jafama.FastMath; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.BiFunction; - -import com.dfsek.terra.api.util.mutable.MutableInteger; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.GenerationSettings; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.ChunkInterpolator; - - -/** - * Class to abstract away the Interpolators needed to generate a chunk.
- * Contains method to get interpolated noise at a coordinate within the chunk. - */ -public class ChunkInterpolator2D implements ChunkInterpolator { - private final Interpolator[][] interpGrid = new Interpolator[4][4]; - private final BiFunction noiseGetter; - - /** - * Instantiates a 3D ChunkInterpolator3D at a pair of chunk coordinates. - * - * @param chunkX X coordinate of the chunk. - * @param chunkZ Z coordinate of the chunk. - * @param provider Biome Provider to use for biome fetching. - */ - public ChunkInterpolator2D(World w, int chunkX, int chunkZ, BiomeProvider provider, - BiFunction noiseGetter) { - this.noiseGetter = noiseGetter; - int xOrigin = chunkX << 4; - int zOrigin = chunkZ << 4; - - long seed = w.getSeed(); - - double[][] noiseStorage = new double[5][5]; - - for(int x = 0; x < 5; x++) { - for(int z = 0; z < 5; z++) { - GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(); - Map genMap = new HashMap<>(); - - int step = generationSettings.getBlendStep(); - int blend = generationSettings.getBlendDistance(); - - for(int xi = -blend; xi <= blend; xi++) { - for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent( - provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), - g -> new MutableInteger(0)).increment(); // Increment by 1 - } - } - - noiseStorage[x][z] = computeNoise(genMap, (x << 2) + xOrigin, 0, (z << 2) + zOrigin); - } - } - - for(int x = 0; x < 4; x++) { - for(int z = 0; z < 4; z++) { - interpGrid[x][z] = new Interpolator( - noiseStorage[x][z], - noiseStorage[x + 1][z], - noiseStorage[x][z + 1], - noiseStorage[x + 1][z + 1]); - } - } - } - - private static int reRange(int value, int high) { - return FastMath.max(FastMath.min(value, high), 0); - } - - public double computeNoise(GenerationSettings generationSettings, double x, double y, double z) { - return noiseGetter.apply(generationSettings, new Vector3(x, y, z)); - } - - /** - * Gets the noise at a pair of internal chunk coordinates. - * - * @param x The internal X coordinate (0-15). - * @param z The internal Z coordinate (0-15). - * - * @return double - The interpolated noise at the coordinates. - */ - @Override - public double getNoise(double x, double y, double z) { - return interpGrid[reRange(((int) x) / 4, 3)][reRange(((int) z) / 4, 3)].bilerp((x % 4) / 4, (z % 4) / 4); - } - - public double getNoise(int x, int y, int z) { - return interpGrid[x / 4][z / 4].bilerp((double) (x % 4) / 4, (double) (z % 4) / 4); - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java deleted file mode 100644 index 87c96f5f6..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator3D.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; - -import net.jafama.FastMath; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.BiFunction; - -import com.dfsek.terra.api.util.mutable.MutableInteger; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.GenerationSettings; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.ChunkInterpolator; - - -/** - * Class to abstract away the Interpolators needed to generate a chunk.
- * Contains method to get interpolated noise at a coordinate within the chunk. - */ -public class ChunkInterpolator3D implements ChunkInterpolator { - private final Interpolator3[][][] interpGrid; - private final BiFunction noiseGetter; - - private final int min; - private final int max; - - /** - * Instantiates a 3D ChunkInterpolator3D at a pair of chunk coordinates. - * - * @param chunkX X coordinate of the chunk. - * @param chunkZ Z coordinate of the chunk. - * @param provider Biome Provider to use for biome fetching. - */ - public ChunkInterpolator3D(World w, int chunkX, int chunkZ, BiomeProvider provider, - BiFunction noiseGetter) { - this.noiseGetter = noiseGetter; - int xOrigin = chunkX << 4; - int zOrigin = chunkZ << 4; - - this.max = w.getMaxHeight(); - this.min = w.getMinHeight(); - int range = max - min + 1; - - int size = range >> 2; - - interpGrid = new Interpolator3[4][size][4]; - - double[][][] noiseStorage = new double[5][5][size + 1]; - - long seed = w.getSeed(); - - for(int x = 0; x < 5; x++) { - for(int z = 0; z < 5; z++) { - GenerationSettings generationSettings = provider.getBiome(xOrigin + (x << 2), zOrigin + (z << 2), seed).getGenerator(); - Map genMap = new HashMap<>(); - - int step = generationSettings.getBlendStep(); - int blend = generationSettings.getBlendDistance(); - - for(int xi = -blend; xi <= blend; xi++) { - for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent( - provider.getBiome(xOrigin + (x << 2) + (xi * step), zOrigin + (z << 2) + (zi * step), seed).getGenerator(), - g -> new MutableInteger(0)).increment(); // Increment by 1 - } - } - - for(int y = 0; y < size + 1; y++) { - noiseStorage[x][z][y] = computeNoise(genMap, (x << 2) + xOrigin, (y << 2) + min, (z << 2) + zOrigin); - } - } - } - - for(int x = 0; x < 4; x++) { - for(int z = 0; z < 4; z++) { - for(int y = 0; y < size; y++) { - interpGrid[x][y][z] = new Interpolator3( - noiseStorage[x][z][y], - noiseStorage[x + 1][z][y], - noiseStorage[x][z][y + 1], - noiseStorage[x + 1][z][y + 1], - noiseStorage[x][z + 1][y], - noiseStorage[x + 1][z + 1][y], - noiseStorage[x][z + 1][y + 1], - noiseStorage[x + 1][z + 1][y + 1]); - } - } - } - } - - private static int reRange(int value, int high) { - return FastMath.max(FastMath.min(value, high), 0); - } - - public double computeNoise(GenerationSettings generationSettings, double x, double y, double z) { - return noiseGetter.apply(generationSettings, new Vector3(x, y, z)); - } - - /** - * Gets the noise at a pair of internal chunk coordinates. - * - * @param x The internal X coordinate (0-15). - * @param z The internal Z coordinate (0-15). - * - * @return double - The interpolated noise at the coordinates. - */ - @Override - public double getNoise(double x, double y, double z) { - return interpGrid[reRange(((int) x) / 4, 3)][(FastMath.max(FastMath.min(((int) y), max), min) - min) / 4][reRange(((int) z) / 4, - 3)].trilerp( - (x % 4) / 4, (y % 4) / 4, (z % 4) / 4); - } - - public double getNoise(int x, int y, int z) { - return interpGrid[x / 4][(y - min) / 4][z / 4].trilerp((double) (x % 4) / 4, (double) (y % 4) / 4, (double) (z % 4) / 4); - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java deleted file mode 100644 index e2b01942e..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ElevationInterpolator.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; - -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.GenerationSettings; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class ElevationInterpolator { - private final double[][] values = new double[18][18]; - - public ElevationInterpolator(World world, int chunkX, int chunkZ, BiomeProvider provider, int smooth) { - int xOrigin = chunkX << 4; - int zOrigin = chunkZ << 4; - - long seed = world.getSeed(); - - GenerationSettings[][] gens = new GenerationSettings[18 + 2 * smooth][18 + 2 * smooth]; - - // Precompute generators. - for(int x = -1 - smooth; x <= 16 + smooth; x++) { - for(int z = -1 - smooth; z <= 16 + smooth; z++) { - gens[x + 1 + smooth][z + 1 + smooth] = provider.getBiome(xOrigin + x, zOrigin + z, seed).getGenerator(); - } - } - - for(int x = -1; x <= 16; x++) { - for(int z = -1; z <= 16; z++) { - double noise = 0; - double div = 0; - for(int xi = -smooth; xi <= smooth; xi++) { - for(int zi = -smooth; zi <= smooth; zi++) { - GenerationSettings gen = gens[x + 1 + smooth + xi][z + 1 + smooth + zi]; - noise += gen.getElevationSampler().getNoiseSeeded(seed, xOrigin + x, zOrigin + z) * gen.getElevationWeight(); - div += gen.getElevationWeight(); - } - } - values[x + 1][z + 1] = noise / div; - } - } - } - - public double getElevation(int x, int z) { - return values[x + 1][z + 1]; - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java deleted file mode 100644 index d67ac6c10..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; - -/** - * Class for bilinear interpolation of values arranged on a unit square. - */ -public class Interpolator { - private final double v0, v1, v2, v3; - - /** - * Constructs an interpolator with given values as vertices of a unit square. - * - * @param v0 - (0,0) - * @param v1 - (1,0) - * @param v2 - (0,1) - * @param v3 - (1,1) - */ - public Interpolator(double v0, double v1, double v2, double v3) { - this.v0 = v0; - this.v1 = v1; - this.v2 = v2; - this.v3 = v3; - } - - /** - * 1D Linear interpolation between 2 points 1 unit apart. - * - * @param t - Distance from v0. Total distance between v0 and v1 is 1 unit. - * @param v0 - Value at v0. - * @param v1 - Value at v1. - * - * @return double - The interpolated value. - */ - public static double lerp(double t, double v0, double v1) { - return v0 + t * (v1 - v0); - } - - /** - * 2D Bilinear interpolation between 4 points on a unit square. - * - * @param s - X value - * @param t - Z value - * - * @return double - The interpolated value. - */ - public double bilerp(double s, double t) { - double v01 = lerp(s, v0, v1); - double v23 = lerp(s, v2, v3); - return lerp(t, v01, v23); - } -} \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java deleted file mode 100644 index 1d80fb025..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/Interpolator3.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; - -/** - * Class for bilinear interpolation of values arranged on a unit square. - */ -public class Interpolator3 { - private final Interpolator bottom; - private final Interpolator top; - - /** - * Constructs an interpolator with given values as vertices of a unit cube. - * * @param _000 The value at (t, u, v) = (0, 0, 0). - * * @param _100 The value at (t, u, v) = (1, 0, 0). - * * @param _010 The value at (t, u, v) = (0, 1, 0). - * * @param _110 The value at (t, u, v) = (1, 1, 0). - * * @param _001 The value at (t, u, v) = (0, 0, 1). - * * @param _101 The value at (t, u, v) = (1, 0, 1). - * * @param _011 The value at (t, u, v) = (0, 1, 1). - * * @param _111 The value at (t, u, v) = (1, 1, 1). - */ - public Interpolator3(double _000, double _100, - double _010, double _110, - double _001, double _101, - double _011, double _111) { - this.top = new Interpolator(_000, _010, _001, _011); - this.bottom = new Interpolator(_100, _110, _101, _111); - } - - public double trilerp(double x, double y, double z) { - return Interpolator.lerp(x, top.bilerp(y, z), bottom.bilerp(y, z)); - } -} \ No newline at end of file diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java deleted file mode 100644 index 96c497f23..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; - -import net.jafama.FastMath; - -import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator3D; -import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.util.math.Sampler; - - -public class Sampler3D implements Sampler { - private final ChunkInterpolator3D interpolator; - private final ElevationInterpolator elevationInterpolator; - - public Sampler3D(int x, int z, BiomeProvider provider, World world, int elevationSmooth) { - this.interpolator = new ChunkInterpolator3D(world, x, z, provider, (generator, coord) -> generator.getBaseSampler() - .getNoiseSeeded(coord, - world.getSeed())); - this.elevationInterpolator = new ElevationInterpolator(world, x, z, provider, elevationSmooth); - } - - @Override - public double sample(double x, double y, double z) { - return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); - } - - @Override - public double sample(int x, int y, int z) { - return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FastMath.roundToInt(x), FastMath.roundToInt(z)); - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java deleted file mode 100644 index 55d2a2dac..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolder.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.palette; - -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteHolder { - private final Palette[] palettes; - private final int offset; - - protected PaletteHolder(Palette[] palettes, int offset) { - this.palettes = palettes; - this.offset = offset; - } - - public Palette getPalette(int y) { - int index = y + offset; - return index >= 0 - ? index < palettes.length - ? palettes[index] - : palettes[palettes.length - 1] - : palettes[0]; - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java deleted file mode 100644 index 61042145b..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderBuilder.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.palette; - -import net.jafama.FastMath; - -import java.util.Map; -import java.util.TreeMap; - -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteHolderBuilder { - private final TreeMap paletteMap = new TreeMap<>(); - - public PaletteHolderBuilder add(int y, Palette palette) { - paletteMap.put(y, palette); - return this; - } - - public PaletteHolder build() { - - int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); - int max = FastMath.max(paletteMap.keySet().stream().max(Integer::compareTo).orElse(255), 255); - - Palette[] palettes = new Palette[paletteMap.lastKey() + 1 - min]; - for(int y = min; y <= FastMath.max(paletteMap.lastKey(), max); y++) { - Palette d = null; - for(Map.Entry e : paletteMap.entrySet()) { - if(e.getKey() >= y) { - d = e.getValue(); - break; - } - } - if(d == null) throw new IllegalArgumentException("No palette for Y=" + y); - palettes[y - min] = d; - } - return new PaletteHolder(palettes, -min); - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java deleted file mode 100644 index bf0bc3bb5..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteHolderLoader.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.palette; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; - -import java.lang.reflect.AnnotatedType; -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteHolderLoader implements TypeLoader { - @SuppressWarnings("unchecked") - @Override - public PaletteHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { - List> palette = (List>) o; - PaletteHolderBuilder builder = new PaletteHolderBuilder(); - for(Map layer : palette) { - for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), configLoader.loadType(Palette.class, entry.getKey())); - } - } - return builder.build(); - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java deleted file mode 100644 index fd7b331b7..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.palette; - -import com.dfsek.terra.api.properties.Properties; -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteInfo implements Properties { - private final PaletteHolder paletteHolder; - private final SlantHolder slantHolder; - private final Palette ocean; - - private final int seaLevel; - - public PaletteInfo(PaletteHolder paletteHolder, SlantHolder slantHolder, Palette ocean, int seaLevel) { - this.paletteHolder = paletteHolder; - this.slantHolder = slantHolder; - this.ocean = ocean; - this.seaLevel = seaLevel; - } - - public Palette getOcean() { - return ocean; - } - - public PaletteHolder getPaletteHolder() { - return paletteHolder; - } - - public SlantHolder getSlantHolder() { - return slantHolder; - } - - public int getSeaLevel() { - return seaLevel; - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java deleted file mode 100644 index 0845604dc..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolder.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.palette; - - -import java.util.TreeMap; - - -public class SlantHolder { - private final TreeMap layers; - private final double minSlope; - - public SlantHolder(TreeMap layers, double minSlope) { - this.layers = layers; - this.minSlope = minSlope; - } - - public PaletteHolder getPalette(double slope) { - return layers.floorEntry(slope).getValue(); - } - - public double getMinSlope() { - return minSlope; - } -} diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java deleted file mode 100644 index 74869b9dc..000000000 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/SlantHolderLoader.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.addons.chunkgenerator.palette; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; - -import java.lang.reflect.AnnotatedType; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - - -@SuppressWarnings("unchecked") -public class SlantHolderLoader implements TypeLoader { - @Override - public SlantHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { - List> layers = (List>) o; - TreeMap slantLayers = new TreeMap<>(); - double minThreshold = Double.MAX_VALUE; - - for(Map layer : layers) { - double threshold = ((Number) layer.get("threshold")).doubleValue(); - if(threshold < minThreshold) minThreshold = threshold; - slantLayers.put(threshold, configLoader.loadType(PaletteHolder.class, layer.get("palette"))); - } - - return new SlantHolder(slantLayers, minThreshold); - } -} From 50637f03d6a5cf3a5bf35408aadfd6281151157a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:19:54 -0700 Subject: [PATCH 25/97] add chunk generator addon as submodule --- .gitmodules | 3 +++ common/addons/chunk-generator-noise-3d | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/chunk-generator-noise-3d diff --git a/.gitmodules b/.gitmodules index 79a38dfc2..62cfcf7d0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "common/addons/biome-provider-single"] path = common/addons/biome-provider-single url = https://github.com/PolyhedralDev/Terra-biome-provider-single +[submodule "common/addons/chunk-generator-noise-3d"] + path = common/addons/chunk-generator-noise-3d + url = https://github.com/PolyhedralDev/Terra-chunk-generator-noise-3d diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d new file mode 160000 index 000000000..6ba653342 --- /dev/null +++ b/common/addons/chunk-generator-noise-3d @@ -0,0 +1 @@ +Subproject commit 6ba65334208d5dd10fb8151b0b9993e8ac6eb14f From 720295650b785fcd788cefd9f2df82f43f76b203 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:25:17 -0700 Subject: [PATCH 26/97] remove biome config addon from main repo --- common/addons/config-biome/README.md | 3 - common/addons/config-biome/build.gradle.kts | 2 - .../dfsek/terra/addons/biome/BiomeAddon.java | 33 --- .../terra/addons/biome/BiomeConfigType.java | 51 ----- .../terra/addons/biome/BiomeFactory.java | 26 --- .../terra/addons/biome/BiomeTemplate.java | 213 ------------------ .../addons/biome/PaletteSettingsImpl.java | 19 -- .../terra/addons/biome/UserDefinedBiome.java | 78 ------- .../biome/UserDefinedGenerationSettings.java | 71 ------ .../biome/command/biome/AsyncBiomeFinder.java | 117 ---------- .../biome/command/biome/BiomeCommand.java | 37 --- .../biome/command/biome/BiomeInfoCommand.java | 40 ---- .../command/biome/BiomeLocateCommand.java | 77 ------- .../biome/arg/BiomeArgumentParser.java | 20 -- .../command/biome/tab/BiomeTabCompleter.java | 24 -- .../addons/biome/holder/PaletteHolder.java | 23 -- .../biome/holder/PaletteHolderBuilder.java | 38 ---- .../biome/holder/PaletteHolderLoader.java | 27 --- 18 files changed, 899 deletions(-) delete mode 100644 common/addons/config-biome/README.md delete mode 100644 common/addons/config-biome/build.gradle.kts delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java delete mode 100644 common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java diff --git a/common/addons/config-biome/README.md b/common/addons/config-biome/README.md deleted file mode 100644 index 4070828ac..000000000 --- a/common/addons/config-biome/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-biome - -Registers the default configuration for Terra Biomes, `BIOME`. \ No newline at end of file diff --git a/common/addons/config-biome/build.gradle.kts b/common/addons/config-biome/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-biome/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java deleted file mode 100644 index ff9ac1f2a..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeAddon.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.terra.addons.biome.holder.PaletteHolder; -import com.dfsek.terra.addons.biome.holder.PaletteHolderLoader; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; - - -@Addon("config-biome") -@Author("Terra") -@Version("1.0.0") -public class BiomeAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new BiomeConfigType(event.getPack()), "BIOME", 5); - event.getPack().applyLoader(PaletteHolder.class, new PaletteHolderLoader()); - }) - .failThrough(); - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java deleted file mode 100644 index 8dd3b65d2..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeConfigType.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.TypeLoader; - -import java.util.function.Supplier; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class BiomeConfigType implements ConfigType { - public static final TypeKey BIOME_TYPE_TOKEN = new TypeKey<>() { - }; - private final BiomeFactory factory; - - public BiomeConfigType(ConfigPack pack) { - this.factory = new BiomeFactory(pack); - } - - @Override - public Supplier> registrySupplier(ConfigPack pack) { - return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { - if(c.equals("SELF")) return null; - TerraBiome obj = registry.get((String) c); - if(obj == null) - throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); - return obj; - }); - } - - @Override - public BiomeTemplate getTemplate(ConfigPack pack, Platform platform) { - return new BiomeTemplate(pack, platform); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return BIOME_TYPE_TOKEN; - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java deleted file mode 100644 index 8fb31ebb1..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeFactory.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class BiomeFactory implements ConfigFactory { - private final ConfigPack pack; - - public BiomeFactory(ConfigPack pack) { - this.pack = pack; - } - - @Override - public TerraBiome build(BiomeTemplate template, Platform platform) { - UserDefinedGenerationSettings generator = new UserDefinedGenerationSettings(template.getNoiseEquation(), - template.getElevationEquation(), - template.getCarvingEquation(), template.getBiomeNoise(), - template.getElevationWeight(), - template.getBlendDistance(), template.getBlendStep(), - template.getBlendWeight()); - return new UserDefinedBiome(template.getVanilla(), generator, template); - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java deleted file mode 100644 index 013b3cfc1..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/BiomeTemplate.java +++ /dev/null @@ -1,213 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.generator.Palette; - - -@SuppressWarnings({ "FieldMayBeFinal", "unused" }) -public class BiomeTemplate implements AbstractableTemplate, ValidatedConfigTemplate { - private final ConfigPack pack; - - @Value("id") - @Final - private @Meta String id; - - @Value("extends") - @Final - @Default - private List extended = Collections.emptyList(); - - @Value("variables") - @Default - private @Meta Map variables = new HashMap<>(); - - @Value("beta.carving.equation") - @Default - private @Meta NoiseSampler carvingEquation = NoiseSampler.zero(); - - @Value("vanilla") - private @Meta ProbabilityCollection vanilla; - - @Value("biome-noise") - @Default - private @Meta NoiseSampler biomeNoise = NoiseSampler.zero(); - - @Value("blend.distance") - @Default - private @Meta int blendDistance = 3; - - @Value("blend.weight") - @Default - private @Meta double blendWeight = 1; - - @Value("blend.step") - @Default - private @Meta int blendStep = 4; - - @Value("noise") - private @Meta NoiseSampler noiseEquation; - - @Value("ocean.level") - @Default - private @Meta int seaLevel = 62; - - @Value("elevation.equation") - @Default - private @Meta NoiseSampler elevationEquation = NoiseSampler.zero(); - - @Value("elevation.weight") - @Default - private @Meta double elevationWeight = 1; - - @Value("slabs.enable") - @Default - private @Meta boolean doSlabs = false; - - @Value("slabs.threshold") - @Default - private @Meta double slabThreshold = 0.0075D; - - @Value("slabs.palettes") - @Default - private @Meta Map<@Meta BlockType, @Meta Palette> slabPalettes; - - @Value("slabs.stair-palettes") - @Default - private @Meta Map<@Meta BlockType, @Meta Palette> stairPalettes; - - @Value("interpolate-elevation") - @Default - private @Meta boolean interpolateElevation = true; - - @Value("color") - @Final - @Default - private @Meta int color = 0; - - @Value("tags") - @Default - private @Meta Set<@Meta String> tags = new HashSet<>(); - - @Value("colors") - @Default - private @Meta Map colors = new HashMap<>(); - // Plain ol' map, so platforms can decide what to do with colors (if anything). - - public BiomeTemplate(ConfigPack pack, Platform platform) { - this.pack = pack; - } - - public boolean interpolateElevation() { - return interpolateElevation; - } - - public boolean doSlabs() { - return doSlabs; - } - - @Override - public boolean validate() throws ValidationException { - color |= 0xff000000; // Alpha adjustment - return true; - } - - public List getExtended() { - return extended; - } - - public Set getTags() { - return tags; - } - - public Map getColors() { - return colors; - } - - public double getBlendWeight() { - return blendWeight; - } - - public int getColor() { - return color; - } - - public int getBlendDistance() { - return blendDistance; - } - - public double getSlabThreshold() { - return slabThreshold; - } - - public Map getSlabPalettes() { - return slabPalettes; - } - - public Map getStairPalettes() { - return stairPalettes; - } - - public NoiseSampler getBiomeNoise() { - return biomeNoise; - } - - public NoiseSampler getElevationEquation() { - return elevationEquation; - } - - public NoiseSampler getCarvingEquation() { - return carvingEquation; - } - - public ConfigPack getPack() { - return pack; - } - - public int getSeaLevel() { - return seaLevel; - } - - public String getID() { - return id; - } - - public ProbabilityCollection getVanilla() { - return vanilla; - } - - public NoiseSampler getNoiseEquation() { - return noiseEquation; - } - - public double getElevationWeight() { - return elevationWeight; - } - - public int getBlendStep() { - return blendStep; - } - - public Map getVariables() { - return variables; - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java deleted file mode 100644 index 5440ed440..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/PaletteSettingsImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.terra.addons.biome.holder.PaletteHolder; -import com.dfsek.terra.api.world.biome.PaletteSettings; -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteSettingsImpl implements PaletteSettings { - private final PaletteHolder palette; - - public PaletteSettingsImpl(PaletteHolder palette) { - this.palette = palette; - } - - @Override - public Palette getPalette(int y) { - return palette.getPalette(y); - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java deleted file mode 100644 index d10b7c70f..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedBiome.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import java.util.Set; - -import com.dfsek.terra.api.properties.Context; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.biome.Biome; -import com.dfsek.terra.api.world.biome.GenerationSettings; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -/** - * Class representing a config-defined biome - */ -public class UserDefinedBiome implements TerraBiome { - private final UserDefinedGenerationSettings gen; - private final ProbabilityCollection vanilla; - private final String id; - private final BiomeTemplate config; - private final int color; - private final Set tags; - - private final Context context = new Context(); - - public UserDefinedBiome(ProbabilityCollection vanilla, UserDefinedGenerationSettings gen, BiomeTemplate config) { - this.vanilla = vanilla; - this.gen = gen; - this.id = config.getID(); - this.config = config; - this.color = config.getColor(); - this.tags = config.getTags(); - tags.add("BIOME:" + id); - } - - @Override - public String toString() { - return "{BIOME:" + getID() + "}"; - } - - /** - * Gets the Vanilla biomes to represent the custom biome. - * - * @return Collection of biomes to represent the custom biome. - */ - @Override - public ProbabilityCollection getVanillaBiomes() { - return vanilla; - } - - @Override - public GenerationSettings getGenerator() { - return gen; - } - - @Override - public int getColor() { - return color; - } - - @Override - public Set getTags() { - return tags; - } - - @Override - public String getID() { - return id; - } - - public BiomeTemplate getConfig() { - return config; - } - - @Override - public Context getContext() { - return context; - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java deleted file mode 100644 index dbc5607b0..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/UserDefinedGenerationSettings.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.dfsek.terra.addons.biome; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.world.biome.GenerationSettings; - - -public class UserDefinedGenerationSettings implements GenerationSettings { - - private final NoiseSampler noise; - private final NoiseSampler elevation; - private final NoiseSampler carving; - - private final NoiseSampler biomeNoise; - private final double elevationWeight; - private final int blendDistance; - private final int blendStep; - private final double blendWeight; - - public UserDefinedGenerationSettings(NoiseSampler noise, NoiseSampler elevation, NoiseSampler carving, NoiseSampler biomeNoise, - double elevationWeight, int blendDistance, int blendStep, double blendWeight) { - this.noise = noise; - this.elevation = elevation; - this.carving = carving; - - this.biomeNoise = biomeNoise; - this.elevationWeight = elevationWeight; - this.blendDistance = blendDistance; - this.blendStep = blendStep; - this.blendWeight = blendWeight; - } - - @Override - public NoiseSampler getBaseSampler() { - return noise; - } - - @Override - public NoiseSampler getElevationSampler() { - return elevation; - } - - @Override - public NoiseSampler getCarver() { - return carving; - } - - @Override - public int getBlendDistance() { - return blendDistance; - } - - @Override - public double getWeight() { - return blendWeight; - } - - @Override - public NoiseSampler getBiomeNoise() { - return biomeNoise; - } - - @Override - public double getElevationWeight() { - return elevationWeight; - } - - @Override - public int getBlendStep() { - return blendStep; - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java deleted file mode 100644 index c6f7ed919..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/AsyncBiomeFinder.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.dfsek.terra.addons.biome.command.biome; - -import com.dfsek.terra.api.Platform; - -import org.jetbrains.annotations.NotNull; - -import java.util.function.Consumer; - -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -/** - * Runnable that locates a biome asynchronously - */ -public class AsyncBiomeFinder implements Runnable { - - protected final BiomeProvider provider; - protected final TerraBiome target; - protected final int startRadius; - protected final int maxRadius; - protected final int centerX; - protected final int centerZ; - protected final World world; - protected final Platform platform; - private final Consumer callback; - protected int searchSize = 1; - - public AsyncBiomeFinder(BiomeProvider provider, TerraBiome target, @NotNull Vector3 origin, World world, int startRadius, int maxRadius, - Consumer callback, Platform platform) { - this.provider = provider; - this.target = target; - this.platform = platform; - this.startRadius = startRadius; - this.maxRadius = maxRadius; - this.centerX = origin.getBlockX(); - this.centerZ = origin.getBlockZ(); - this.world = world; - this.callback = callback; - } - - public Vector3 finalizeVector(Vector3 orig) { - return orig.multiply(platform.getTerraConfig().getBiomeSearchResolution()); - } - - @Override - public void run() { - int x = centerX; - int z = centerZ; - - x /= searchSize; - z /= searchSize; - - int run = 1; - boolean toggle = true; - boolean found = false; - - main: - for(int i = startRadius; i < maxRadius; i++) { - for(int j = 0; j < run; j++) { - if(isValid(x, z, target)) { - found = true; - break main; - } - if(toggle) x += 1; - else x -= 1; - } - for(int j = 0; j < run; j++) { - if(isValid(x, z, target)) { - found = true; - break main; - } - if(toggle) z += 1; - else z -= 1; - } - run++; - toggle = !toggle; - } - Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; - callback.accept(finalSpawn); - } - - /** - * Helper method to get biome at location - * - * @param x X coordinate - * @param z Z coordinate - * - * @return TerraBiome at coordinates - */ - public boolean isValid(int x, int z, TerraBiome target) { - int res = platform.getTerraConfig().getBiomeSearchResolution(); - return getProvider().getBiome(x * res, z * res, world.getSeed()).equals(target); - } - - public TerraBiome getTarget() { - return target; - } - - public World getWorld() { - return world; - } - - public BiomeProvider getProvider() { - return provider; - } - - public int getSearchSize() { - return searchSize; - } - - public void setSearchSize(int searchSize) { - this.searchSize = searchSize; - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java deleted file mode 100644 index 35497035e..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeCommand.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dfsek.terra.addons.biome.command.biome; - -import com.dfsek.terra.addons.biome.UserDefinedBiome; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.Subcommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -@Command( - subcommands = { - @Subcommand(value = "info", aliases = "i", clazz = BiomeInfoCommand.class), - @Subcommand(value = "locate", aliases = "l", clazz = BiomeLocateCommand.class) - }, - usage = "/terra biome" -) -@WorldCommand -@PlayerCommand -public class BiomeCommand implements CommandTemplate { - @Inject - private Platform platform; - - @Override - public void execute(CommandSender sender) { - Player player = (Player) sender; - - BiomeProvider provider = player.world().getBiomeProvider(); - UserDefinedBiome biome = (UserDefinedBiome) provider.getBiome(player.position(), player.world().getSeed()); - sender.sendMessage("You are standing in " + biome.getID()); - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java deleted file mode 100644 index 029c72aae..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeInfoCommand.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.biome.command.biome; - -import com.dfsek.terra.addons.biome.BiomeTemplate; -import com.dfsek.terra.addons.biome.UserDefinedBiome; -import com.dfsek.terra.addons.biome.command.biome.arg.BiomeArgumentParser; -import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -@Command(arguments = @Argument( - value = "biome", - tabCompleter = BiomeTabCompleter.class, - argumentParser = BiomeArgumentParser.class -)) -public class BiomeInfoCommand implements CommandTemplate { - @ArgumentTarget("biome") - private TerraBiome biome; - - @Override - public void execute(CommandSender sender) { - sender.sendMessage("Biome info for \"" + biome.getID() + "\"."); - sender.sendMessage("Vanilla biome: " + biome.getVanillaBiomes()); - - if(biome instanceof UserDefinedBiome) { - BiomeTemplate bio = ((UserDefinedBiome) biome).getConfig(); - - if(bio.getExtended().size() == 0) { - sender.sendMessage("No Parent Biomes"); - } else { - sender.sendMessage("------Parent Biomes-----"); - bio.getExtended().forEach(id -> sender.sendMessage(" - " + id)); - } - } - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java deleted file mode 100644 index 4bdcdad0a..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/BiomeLocateCommand.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.dfsek.terra.addons.biome.command.biome; - -import java.util.Locale; - -import com.dfsek.terra.addons.biome.command.biome.arg.BiomeArgumentParser; -import com.dfsek.terra.addons.biome.command.biome.tab.BiomeTabCompleter; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.Switch; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.command.annotation.inject.SwitchTarget; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -@PlayerCommand -@WorldCommand -@Command(arguments = { - @Argument( - value = "biome", - tabCompleter = BiomeTabCompleter.class, - argumentParser = BiomeArgumentParser.class - ), - @Argument( - value = "radius", - required = false, - defaultValue = "1000", - argumentParser = IntegerArgumentParser.class - ) -}, switches = @Switch( - value = "teleport", - aliases = { "t", "tp" } -)) -public class BiomeLocateCommand implements CommandTemplate { - - @ArgumentTarget("radius") - private Integer radius; - - @ArgumentTarget("biome") - private TerraBiome biome; - - @SwitchTarget("teleport") - private boolean teleport; - - @Inject - private Platform platform; - - @Override - public void execute(CommandSender sender) { - - Player player = (Player) sender; - - new Thread(new AsyncBiomeFinder(player.world().getBiomeProvider(), biome, - player.position().clone().multiply((1D / platform.getTerraConfig().getBiomeSearchResolution())), - player.world(), 0, radius, location -> { - if(location != null) { - sender.sendMessage( - String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", biome.getID().toLowerCase(Locale.ROOT), - location.getBlockX(), location.getBlockZ(), - location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); - if(teleport) { - platform.runPossiblyUnsafeTask( - () -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); - } - } else sender.sendMessage("Unable to locate biome \"" + biome.getID() + "\""); - }, platform), "Biome Location Thread").start(); - - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java deleted file mode 100644 index 9cd0cdbc9..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/arg/BiomeArgumentParser.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.biome.command.biome.arg; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.arg.ArgumentParser; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class BiomeArgumentParser implements ArgumentParser { - @Inject - private Platform platform; - - @Override - public TerraBiome parse(CommandSender sender, String arg) { - Player player = (Player) sender; - return player.world().getConfig().getRegistry(TerraBiome.class).get(arg); - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java deleted file mode 100644 index 6dc1baac9..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/command/biome/tab/BiomeTabCompleter.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.addons.biome.command.biome.tab; - -import java.util.List; -import java.util.stream.Collectors; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.world.biome.TerraBiome; - - -public class BiomeTabCompleter implements TabCompleter { - @Inject - private Platform platform; - - @Override - public List complete(CommandSender sender) { - Player player = (Player) sender; - return player.world().getConfig().getRegistry(TerraBiome.class).entries().stream().map(TerraBiome::getID).collect( - Collectors.toList()); - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java deleted file mode 100644 index ca16479df..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolder.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.biome.holder; - -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteHolder { - private final Palette[] palettes; - private final int offset; - - protected PaletteHolder(Palette[] palettes, int offset) { - this.palettes = palettes; - this.offset = offset; - } - - public Palette getPalette(int y) { - int index = y + offset; - return index >= 0 - ? index < palettes.length - ? palettes[index] - : palettes[palettes.length - 1] - : palettes[0]; - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java deleted file mode 100644 index 7ed5a7825..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderBuilder.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.biome.holder; - -import net.jafama.FastMath; - -import java.util.Map; -import java.util.TreeMap; - -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteHolderBuilder { - private final TreeMap paletteMap = new TreeMap<>(); - - public PaletteHolderBuilder add(int y, Palette palette) { - paletteMap.put(y, palette); - return this; - } - - public PaletteHolder build() { - - int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); - int max = FastMath.max(paletteMap.keySet().stream().max(Integer::compareTo).orElse(255), 255); - - Palette[] palettes = new Palette[paletteMap.lastKey() + 1 - min]; - for(int y = min; y <= FastMath.max(paletteMap.lastKey(), max); y++) { - Palette d = null; - for(Map.Entry e : paletteMap.entrySet()) { - if(e.getKey() >= y) { - d = e.getValue(); - break; - } - } - if(d == null) throw new IllegalArgumentException("No palette for Y=" + y); - palettes[y - min] = d; - } - return new PaletteHolder(palettes, -min); - } -} diff --git a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java b/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java deleted file mode 100644 index 3effd7037..000000000 --- a/common/addons/config-biome/src/main/java/com/dfsek/terra/addons/biome/holder/PaletteHolderLoader.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.biome.holder; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; - -import java.lang.reflect.AnnotatedType; -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteHolderLoader implements TypeLoader { - @SuppressWarnings("unchecked") - @Override - public PaletteHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { - List> palette = (List>) o; - PaletteHolderBuilder builder = new PaletteHolderBuilder(); - for(Map layer : palette) { - for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), configLoader.loadType(Palette.class, entry.getKey())); - } - } - return builder.build(); - } -} From 765322ef57961701b62f8146ee8fcc89d1a4c12e Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:25:43 -0700 Subject: [PATCH 27/97] add biome config addon as submodule --- .gitmodules | 3 +++ common/addons/config-biome | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-biome diff --git a/.gitmodules b/.gitmodules index 62cfcf7d0..758709775 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "common/addons/chunk-generator-noise-3d"] path = common/addons/chunk-generator-noise-3d url = https://github.com/PolyhedralDev/Terra-chunk-generator-noise-3d +[submodule "common/addons/config-biome"] + path = common/addons/config-biome + url = https://github.com/PolyhedralDev/Terra-config-biome diff --git a/common/addons/config-biome b/common/addons/config-biome new file mode 160000 index 000000000..9fa017343 --- /dev/null +++ b/common/addons/config-biome @@ -0,0 +1 @@ +Subproject commit 9fa017343a37b948eb5b6c48e98022d853987573 From 8df87df374cebeadfdd731e93b7895fdbc90b69b Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:34:34 -0700 Subject: [PATCH 28/97] remove carver addon from main repo --- common/addons/config-carver/README.md | 3 - common/addons/config-carver/build.gradle.kts | 2 - .../terra/addons/carver/CarverCache.java | 71 ------- .../terra/addons/carver/CarverFactory.java | 40 ---- .../terra/addons/carver/CarverPalette.java | 66 ------ .../terra/addons/carver/CarverTemplate.java | 189 ------------------ .../terra/addons/carver/CavePopulator.java | 98 --------- .../addons/carver/UserDefinedCarver.java | 172 ---------------- .../terra/addons/carver/carving/Carver.java | 43 ---- .../terra/addons/carver/carving/Worm.java | 129 ------------ 10 files changed, 813 deletions(-) delete mode 100644 common/addons/config-carver/README.md delete mode 100644 common/addons/config-carver/build.gradle.kts delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java delete mode 100644 common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java diff --git a/common/addons/config-carver/README.md b/common/addons/config-carver/README.md deleted file mode 100644 index f5075b916..000000000 --- a/common/addons/config-carver/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-carver - -Registers the default configuration for Terra Carvers, `CARVER`. \ No newline at end of file diff --git a/common/addons/config-carver/build.gradle.kts b/common/addons/config-carver/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-carver/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java deleted file mode 100644 index d0cad3be9..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverCache.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.dfsek.terra.addons.carver; - -import com.dfsek.terra.api.Platform; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import com.dfsek.terra.addons.carver.carving.Worm; -import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class CarverCache { - - private final LoadingCache> cache; - private final UserDefinedCarver carver; - - public CarverCache(World w, Platform platform, UserDefinedCarver carver) { - this.carver = carver; - cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getCarverCacheSize()) - .build(new CacheLoader<>() { - @Override - public List load(@NotNull Long key) { - int chunkX = (int) (key >> 32); - int chunkZ = (int) key.longValue(); - BiomeProvider provider = w.getBiomeProvider(); - if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new Random( - PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, - w.getSeed() + CarverCache.this.carver.hashCode())))) { - long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); - Random r = new Random(seed); - Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3((chunkX << 4) + r.nextInt(16), - CarverCache.this.carver.getConfig() - .getHeight() - .get(r), - (chunkZ << 4) + r.nextInt(16))); - List points = new ArrayList<>(); - for(int i = 0; i < carving.getLength(); i++) { - carving.step(); - TerraBiome biome = provider.getBiome(carving.getRunning(), w.getSeed()); - /* - if(!((UserDefinedBiome) biome).getConfig().getCarvers().containsKey(CarverCache.this.carver)) { // Stop - if we enter a biome this carver is not present in - return Collections.emptyList(); - } - - */ - points.add(carving.getPoint()); - } - return points; - } - return Collections.emptyList(); - } - }); - } - - public List getPoints(int chunkX, int chunkZ) { - return cache.getUnchecked(MathUtil.squash(chunkX, chunkZ)); - } -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java deleted file mode 100644 index 9af80f7aa..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.carver; - -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.tectonic.exception.LoadException; - -import java.util.Arrays; -import java.util.List; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.util.MathUtil; - - -public class CarverFactory implements ConfigFactory { - private final ConfigPack pack; - - public CarverFactory(ConfigPack pack) { - this.pack = pack; - } - - @Override - public UserDefinedCarver build(CarverTemplate config, Platform platform) throws LoadException { - double[] start = { config.getStartX(), config.getStartY(), config.getStartZ() }; - double[] mutate = { config.getMutateX(), config.getMutateY(), config.getMutateZ() }; - List radius = Arrays.asList(config.getRadMX(), config.getRadMY(), config.getRadMZ()); - long hash = MathUtil.hashToLong(config.getID()); - UserDefinedCarver carver; - try { - carver = new UserDefinedCarver(config.getHeight(), config.getLength(), start, mutate, radius, new Scope(), hash, - config.getCutTop(), config.getCutBottom(), config, platform); - } catch(ParseException e) { - throw new LoadException("Unable to parse radius equations", e); - } - carver.setRecalc(config.getRecalc()); - carver.setRecalcMagnitude(config.getRecaclulateMagnitude()); - return carver; - } -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java deleted file mode 100644 index 8920ebff8..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverPalette.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.dfsek.terra.addons.carver; - -import net.jafama.FastMath; - -import java.util.Map; -import java.util.TreeMap; - -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -@SuppressWarnings({ "unchecked", "rawtypes", "RedundantSuppression" }) -public class CarverPalette { - private final boolean blacklist; - private final MaterialSet replace; - private final TreeMap> map = new TreeMap<>(); - private ProbabilityCollection[] layers; - private int offset = 0; - - public CarverPalette(MaterialSet replaceable, boolean blacklist) { - this.blacklist = blacklist; - this.replace = replaceable; - } - - public CarverPalette add(ProbabilityCollection collection, int y) { - map.put(y, collection); - return this; - } - - public ProbabilityCollection get(int y) { - int index = y + offset; - return index >= 0 - ? index < layers.length - ? layers[index] - : layers[layers.length - 1] - : layers[0]; - } - - public boolean canReplace(BlockType material) { - return blacklist != replace.contains(material); - } - - /** - * Build the palette to an array. - */ - public void build() { - int min = FastMath.min(map.keySet().stream().min(Integer::compareTo).orElse(0), 0); - int max = FastMath.max(map.keySet().stream().max(Integer::compareTo).orElse(255), 255); - - layers = new ProbabilityCollection[map.lastKey() + 1 - min]; - for(int y = min; y <= FastMath.max(map.lastKey(), max); y++) { - ProbabilityCollection d = null; - for(Map.Entry> e : map.entrySet()) { - if(e.getKey() >= y) { - d = e.getValue(); - break; - } - } - if(d == null) throw new IllegalArgumentException("No palette for Y=" + y); - layers[y - min] = d; - } - offset = -min; - } -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java deleted file mode 100644 index b1f20f6f3..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CarverTemplate.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.dfsek.terra.addons.carver; - - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; - -import java.util.HashMap; -import java.util.Map; - -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.MaterialSet; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class CarverTemplate implements AbstractableTemplate { - @Value("id") - @Final - private String id; - - @Value("step") - @Default - private @Meta int step = 2; - - @Value("recalculate-magnitude") - @Default - private @Meta double recaclulateMagnitude = 4; - - @Value("recalculate-direction") - @Default - private @Meta Range recalc = new ConstantRange(8, 10); - - @Value("length") - private @Meta Range length; - - @Value("start.x") - private @Meta double startX; - - @Value("start.y") - private @Meta double startY; - - @Value("start.z") - private @Meta double startZ; - - @Value("start.radius.x") - private @Meta String radMX; - - @Value("start.radius.y") - private @Meta String radMY; - - @Value("start.radius.z") - private @Meta String radMZ; - - @Value("start.height") - private @Meta Range height; - - @Value("cut.bottom") - @Default - private @Meta int cutBottom = 0; - - @Value("cut.top") - @Default - private @Meta int cutTop = 0; - - @Value("mutate.x") - private @Meta double mutateX; - - @Value("mutate.y") - private @Meta double mutateY; - - @Value("mutate.z") - private @Meta double mutateZ; - - @Value("palette.top") - private @Meta CarverPalette top; - - @Value("palette.bottom") - private @Meta CarverPalette bottom; - - @Value("palette.outer") - private @Meta CarverPalette outer; - - @Value("palette.inner") - private @Meta CarverPalette inner; - - @Value("shift") - @Default - private @Meta Map<@Meta BlockType, @Meta MaterialSet> shift = new HashMap<>(); - - @Value("update") - @Default - private @Meta MaterialSet update = new MaterialSet(); - - public String getID() { - return id; - } - - public int getStep() { - return step; - } - - public Range getLength() { - return length; - } - - public double getStartX() { - return startX; - } - - public double getStartY() { - return startY; - } - - public double getStartZ() { - return startZ; - } - - public String getRadMX() { - return radMX; - } - - public String getRadMY() { - return radMY; - } - - public String getRadMZ() { - return radMZ; - } - - public Range getHeight() { - return height; - } - - public int getCutBottom() { - return cutBottom; - } - - public int getCutTop() { - return cutTop; - } - - public double getMutateX() { - return mutateX; - } - - public double getMutateY() { - return mutateY; - } - - public double getMutateZ() { - return mutateZ; - } - - public CarverPalette getTop() { - return top; - } - - public CarverPalette getBottom() { - return bottom; - } - - public CarverPalette getOuter() { - return outer; - } - - public CarverPalette getInner() { - return inner; - } - - public Map getShift() { - return shift; - } - - public MaterialSet getUpdate() { - return update; - } - - public Range getRecalc() { - return recalc; - } - - public double getRecaclulateMagnitude() { - return recaclulateMagnitude; - } -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java deleted file mode 100644 index 9ac8ad280..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/CavePopulator.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.dfsek.terra.addons.carver; - -import org.jetbrains.annotations.NotNull; - -import java.util.HashMap; -import java.util.Map; -import java.util.Random; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.GenerationStage; - - -public class CavePopulator implements GenerationStage, Chunkified { - private static final Map shiftStorage = new HashMap<>(); - // Persist BlockData created for shifts, to avoid re-calculating each time. - private final Platform platform; - - public CavePopulator(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("try") - @Override - public void populate(@NotNull World world, @NotNull Chunk chunk) { - try(ProfileFrame ignore = platform.getProfiler().profile("carving")) { - Random random = PopulationUtil.getRandom(chunk); - WorldConfig config = world.getConfig(); - if(config.disableCarving()) return; - - for(UserDefinedCarver c : config.getRegistry(UserDefinedCarver.class).entries()) { - CarverTemplate template = c.getConfig(); - Map shiftCandidate = new HashMap<>(); - c.carve(chunk.getX(), chunk.getZ(), world, (v, type) -> { - try(ProfileFrame ignored = platform.getProfiler().profile("carving:" + c.getConfig().getID())) { - BlockState m = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ()); - BlockType re = m.getBlockType(); - switch(type) { - case CENTER: - if(template.getInner().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), - template.getInner().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); - if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); - } - break; - case WALL: - if(template.getOuter().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), - template.getOuter().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); - if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); - } - break; - case TOP: - if(template.getTop().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), - template.getTop().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); - if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); - } - break; - case BOTTOM: - if(template.getBottom().canReplace(re)) { - chunk.setBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ(), - template.getBottom().get(v.getBlockY()).get(random), template.getUpdate().contains(re)); - if(template.getShift().containsKey(re)) shiftCandidate.put(v, m); - } - break; - } - } - }); - for(Map.Entry entry : shiftCandidate.entrySet()) { - Vector3 l = entry.getKey(); - Vector3 mut = l.clone(); - BlockState orig = chunk.getBlock(l.getBlockX(), l.getBlockY(), l.getBlockZ()); - do mut.subtract(0, 1, 0); - while(mut.getY() > world.getMinHeight() && chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).matches( - orig)); - try { - if(template.getShift().get(entry.getValue().getBlockType()).contains( - chunk.getBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ()).getBlockType())) { - chunk.setBlock(mut.getBlockX(), mut.getBlockY(), mut.getBlockZ(), - shiftStorage.computeIfAbsent(entry.getValue().getBlockType(), BlockType::getDefaultData), false); - } - } catch(NullPointerException ignored) { - } - } - } - - } - } -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java deleted file mode 100644 index bfac24cd1..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/UserDefinedCarver.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.dfsek.terra.addons.carver; - -import com.dfsek.paralithic.Expression; -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import net.jafama.FastMath; - -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.BiConsumer; - -import com.dfsek.terra.addons.carver.carving.Carver; -import com.dfsek.terra.addons.carver.carving.Worm; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.util.ConstantRange; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; - - -public class UserDefinedCarver extends Carver { - private final double[] start; // 0, 1, 2 = x, y, z. - private final double[] mutate; // 0, 1, 2 = x, y, z. 3 = radius. - private final Range length; - private final long hash; - private final int topCut; - private final int bottomCut; - private final CarverTemplate config; - private final Expression xRad; - private final Expression yRad; - private final Expression zRad; - - private final Map cacheMap = new ConcurrentHashMap<>(); - private final Platform platform; - private double step = 2; - private Range recalc = new ConstantRange(8, 10); - private double recalcMagnitude = 3; - - public UserDefinedCarver(Range height, Range length, double[] start, double[] mutate, List radii, Scope parent, long hash, - int topCut, int bottomCut, CarverTemplate config, Platform platform) throws ParseException { - super(height.getMin(), height.getMax()); - this.length = length; - this.start = start; - this.mutate = mutate; - this.hash = hash; - this.topCut = topCut; - this.bottomCut = bottomCut; - this.config = config; - this.platform = platform; - - Parser p = new Parser(); - - Scope s = new Scope().withParent(parent); - - - s.addInvocationVariable("x"); - s.addInvocationVariable("y"); - s.addInvocationVariable("z"); - - s.addInvocationVariable("length"); - s.addInvocationVariable("position"); - s.addInvocationVariable("seed"); - - - xRad = p.parse(radii.get(0), s); - yRad = p.parse(radii.get(1), s); - zRad = p.parse(radii.get(2), s); - - } - - @Override - public void carve(int chunkX, int chunkZ, World w, BiConsumer consumer) { - synchronized(cacheMap) { - CarverCache cache = cacheMap.computeIfAbsent(w.getSeed(), world -> new CarverCache(w, platform, this)); - int carvingRadius = getCarvingRadius(); - for(int x = chunkX - carvingRadius; x <= chunkX + carvingRadius; x++) { - for(int z = chunkZ - carvingRadius; z <= chunkZ + carvingRadius; z++) { - cache.getPoints(x, z).forEach(point -> { - Vector3 origin = point.getOrigin(); - if(FastMath.floorDiv(origin.getBlockX(), 16) != chunkX && FastMath.floorDiv(origin.getBlockZ(), 16) != - chunkZ) // We only want to carve this chunk. - return; - point.carve(chunkX, chunkZ, consumer, w); - }); - } - } - } - } - - @Override - public Worm getWorm(long l, Vector3 vector) { - Random r = new Random(l + hash); - return new UserDefinedWorm(length.get(r) / 2, r, vector, topCut, bottomCut, l); - } - - @Override - public boolean isChunkCarved(World w, int chunkX, int chunkZ, Random random) { - /*BiomeTemplate conf = ((UserDefinedBiome) main.getWorld(w).getBiomeProvider().getBiome((chunkX << 4) + 8, (chunkZ << 4) + 8)) - .getConfig(); - if(conf.getCarvers().get(this) != null) { - return new Random(random.nextLong() + hash).nextInt(100) < conf.getCarvers().get(this); - }*/ - return false; - } - - public void setRecalc(Range recalc) { - this.recalc = recalc; - } - - public void setRecalcMagnitude(double recalcMagnitude) { - this.recalcMagnitude = recalcMagnitude; - } - - public void setStep(double step) { - this.step = step; - } - - public CarverTemplate getConfig() { - return config; - } - - private class UserDefinedWorm extends Worm { - private final Vector3 direction; - private final Vector3 origin; - private final long seed; - private int steps; - private int nextDirection = 0; - private double[] currentRotation = new double[3]; - - public UserDefinedWorm(int length, Random r, Vector3 origin, int topCut, int bottomCut, long seed) { - super(length, r, origin); - this.origin = origin; - this.seed = seed; - super.setTopCut(topCut); - super.setBottomCut(bottomCut); - direction = new Vector3((r.nextDouble() - 0.5D) * start[0], (r.nextDouble() - 0.5D) * start[1], - (r.nextDouble() - 0.5D) * start[2]).normalize().multiply(step); - double[] args = { origin.getX(), origin.getY(), origin.getZ(), length, 0, seed }; - setRadius(new int[]{ (int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args)) }); - } - - @Override - public void step() { - if(steps == nextDirection) { - direction.rotateAroundX(FastMath.toRadians((getRandom().nextGaussian()) * mutate[0] * recalcMagnitude)); - direction.rotateAroundY(FastMath.toRadians((getRandom().nextGaussian()) * mutate[1] * recalcMagnitude)); - direction.rotateAroundZ(FastMath.toRadians((getRandom().nextGaussian()) * mutate[2] * recalcMagnitude)); - currentRotation = new double[]{ - (getRandom().nextGaussian()) * mutate[0], - (getRandom().nextGaussian()) * mutate[1], - (getRandom().nextGaussian()) * mutate[2] - }; - nextDirection += recalc.get(getRandom()); - } - steps++; - double[] args = { origin.getX(), origin.getY(), origin.getZ(), getLength(), steps, seed }; - setRadius(new int[]{ (int) (xRad.evaluate(args)), (int) (yRad.evaluate(args)), (int) (zRad.evaluate(args)) }); - direction.rotateAroundX(FastMath.toRadians(currentRotation[0] * mutate[0])); - direction.rotateAroundY(FastMath.toRadians(currentRotation[1] * mutate[1])); - direction.rotateAroundZ(FastMath.toRadians(currentRotation[2] * mutate[2])); - getRunning().add(direction); - } - - @Override - public WormPoint getPoint() { - return new WormPoint(getRunning().clone(), getRadius(), config.getCutTop(), config.getCutBottom()); - } - } -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java deleted file mode 100644 index 0eb0e3e02..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Carver.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.addons.carver.carving; - -import net.jafama.FastMath; - -import java.util.Random; -import java.util.function.BiConsumer; - -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; - - -public abstract class Carver { - private final int minY; - private final int maxY; - private final double sixtyFourSq = FastMath.pow(64, 2); - private int carvingRadius = 4; - - public Carver(int minY, int maxY) { - this.minY = minY; - this.maxY = maxY; - } - - public abstract void carve(int chunkX, int chunkZ, World w, BiConsumer consumer); - - public int getCarvingRadius() { - return carvingRadius; - } - - public void setCarvingRadius(int carvingRadius) { - this.carvingRadius = carvingRadius; - } - - public abstract Worm getWorm(long seed, Vector3 l); - - public abstract boolean isChunkCarved(World w, int chunkX, int chunkZ, Random r); - - public enum CarvingType { - CENTER, - WALL, - TOP, - BOTTOM - } -} diff --git a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java b/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java deleted file mode 100644 index fb064a46b..000000000 --- a/common/addons/config-carver/src/main/java/com/dfsek/terra/addons/carver/carving/Worm.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.dfsek.terra.addons.carver.carving; - -import net.jafama.FastMath; - -import java.util.Random; -import java.util.function.BiConsumer; - -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; - - -public abstract class Worm { - private final Random r; - private final Vector3 origin; - private final Vector3 running; - private final int length; - private int topCut = 0; - private int bottomCut = 0; - private int[] radius = { 0, 0, 0 }; - - public Worm(int length, Random r, Vector3 origin) { - this.r = r; - this.length = length; - this.origin = origin; - this.running = origin; - } - - public abstract void step(); - - public void setBottomCut(int bottomCut) { - this.bottomCut = bottomCut; - } - - public void setTopCut(int topCut) { - this.topCut = topCut; - } - - public Vector3 getOrigin() { - return origin; - } - - public int getLength() { - return length; - } - - public Vector3 getRunning() { - return running; - } - - public WormPoint getPoint() { - return new WormPoint(running, radius, topCut, bottomCut); - } - - public int[] getRadius() { - return radius; - } - - public void setRadius(int[] radius) { - this.radius = radius; - } - - public Random getRandom() { - return r; - } - - - public static class WormPoint { - private final Vector3 origin; - private final int topCut; - private final int bottomCut; - private final int[] rad; - - public WormPoint(Vector3 origin, int[] rad, int topCut, int bottomCut) { - this.origin = origin; - this.rad = rad; - this.topCut = topCut; - this.bottomCut = bottomCut; - } - - private static double ellipseEquation(int x, int y, int z, double xr, double yr, double zr) { - return (FastMath.pow2(x) / FastMath.pow2(xr + 0.5D)) + (FastMath.pow2(y) / FastMath.pow2(yr + 0.5D)) + (FastMath.pow2(z) / - FastMath.pow2( - zr + 0.5D)); - } - - public void carve(int chunkX, int chunkZ, BiConsumer consumer, World world) { - int xRad = getRadius(0); - int yRad = getRadius(1); - int zRad = getRadius(2); - int originX = (chunkX << 4); - int originZ = (chunkZ << 4); - for(int x = -xRad - 1; x <= xRad + 1; x++) { - if(!(FastMath.floorDiv(origin.getBlockX() + x, 16) == chunkX)) continue; - for(int z = -zRad - 1; z <= zRad + 1; z++) { - if(!(FastMath.floorDiv(origin.getBlockZ() + z, 16) == chunkZ)) continue; - for(int y = -yRad - 1; y <= yRad + 1; y++) { - Vector3 position = origin.clone().add(new Vector3(x, y, z)); - if(position.getY() < world.getMinHeight() || position.getY() > world.getMaxHeight()) continue; - double eq = ellipseEquation(x, y, z, xRad, yRad, zRad); - if(eq <= 1 && - y >= -yRad - 1 + bottomCut && y <= yRad + 1 - topCut) { - consumer.accept( - new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), - Carver.CarvingType.CENTER); - } else if(eq <= 1.5) { - Carver.CarvingType type = Carver.CarvingType.WALL; - if(y <= -yRad - 1 + bottomCut) { - type = Carver.CarvingType.BOTTOM; - } else if(y >= yRad + 1 - topCut) { - type = Carver.CarvingType.TOP; - } - consumer.accept( - new Vector3(position.getBlockX() - originX, position.getBlockY(), position.getBlockZ() - originZ), - type); - } - } - } - } - } - - public Vector3 getOrigin() { - return origin; - } - - public int getRadius(int index) { - return rad[index]; - } - } -} From 476828985e5a41b87482aaab3476c3b80bc4ea02 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:34:46 -0700 Subject: [PATCH 29/97] add carver addon as submodule --- .gitmodules | 3 +++ common/addons/config-carver | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-carver diff --git a/.gitmodules b/.gitmodules index 758709775..e72eda7de 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "common/addons/config-biome"] path = common/addons/config-biome url = https://github.com/PolyhedralDev/Terra-config-biome +[submodule "common/addons/config-carver"] + path = common/addons/config-carver + url = https://github.com/PolyhedralDev/Terra-config-carver diff --git a/common/addons/config-carver b/common/addons/config-carver new file mode 160000 index 000000000..84ac29e00 --- /dev/null +++ b/common/addons/config-carver @@ -0,0 +1 @@ +Subproject commit 84ac29e00edd9313c094edd6c65e08990367d5a3 From db8c15b49c82a147c67104650823fbcc6ce39ee1 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:38:29 -0700 Subject: [PATCH 30/97] remove distributors addon from main repo --- .../config-distributors/build.gradle.kts | 2 - .../feature/distributor/DistributorAddon.java | 56 ------------------- .../config/AndDistributorTemplate.java | 33 ----------- .../config/NoDistributorTemplate.java | 13 ----- .../config/NoiseDistributorTemplate.java | 24 -------- .../config/OrDistributorTemplate.java | 33 ----------- .../config/PointSetDistributorTemplate.java | 22 -------- .../config/YesDistributorTemplate.java | 13 ----- .../distributors/NoiseDistributor.java | 21 ------- .../distributors/PointSetDistributor.java | 20 ------- .../feature/distributor/util/Point.java | 34 ----------- .../distributor/util/PointTemplate.java | 20 ------- 12 files changed, 291 deletions(-) delete mode 100644 common/addons/config-distributors/build.gradle.kts delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoDistributorTemplate.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/YesDistributorTemplate.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java delete mode 100644 common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java diff --git a/common/addons/config-distributors/build.gradle.kts b/common/addons/config-distributors/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-distributors/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java deleted file mode 100644 index 0a64b1386..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/DistributorAddon.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.feature.distributor.config.AndDistributorTemplate; -import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate; -import com.dfsek.terra.addons.feature.distributor.config.OrDistributorTemplate; -import com.dfsek.terra.addons.feature.distributor.config.PointSetDistributorTemplate; -import com.dfsek.terra.addons.feature.distributor.config.YesDistributorTemplate; -import com.dfsek.terra.addons.feature.distributor.util.Point; -import com.dfsek.terra.addons.feature.distributor.util.PointTemplate; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.structure.feature.Distributor; -import com.dfsek.terra.api.util.reflection.TypeKey; - - -@Addon("config-distributors") -@Version("1.0.0") -@Author("Terra") -public class DistributorAddon extends TerraAddon { - public static final TypeKey>> DISTRIBUTOR_TOKEN = new TypeKey<>() { - }; - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> distributorRegistry = event.getPack().getOrCreateRegistry( - DISTRIBUTOR_TOKEN); - distributorRegistry.register("NOISE", NoiseDistributorTemplate::new); - distributorRegistry.register("POINTS", PointSetDistributorTemplate::new); - distributorRegistry.register("AND", AndDistributorTemplate::new); - distributorRegistry.register("OR", OrDistributorTemplate::new); - distributorRegistry.register("YES", YesDistributorTemplate::new); - distributorRegistry.register("NO", NoiseDistributorTemplate::new); - - event.getPack() - .applyLoader(Point.class, PointTemplate::new); - }) - .failThrough(); - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java deleted file mode 100644 index 55d973f3f..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/AndDistributorTemplate.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class AndDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { - @Value("distributors") - private @Meta List<@Meta Distributor> distributors; - - - @Override - public Distributor get() { - Distributor current = distributors.remove(0); - while(!distributors.isEmpty()) { - current = current.and(distributors.remove(0)); - } - return current; - } - - @Override - public boolean validate() throws ValidationException { - if(distributors.isEmpty()) throw new ValidationException("AND Distributor must specify at least 1 distributor."); - return true; - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoDistributorTemplate.java deleted file mode 100644 index bafa1b50d..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoDistributorTemplate.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.config; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class NoDistributorTemplate implements ObjectTemplate { - @Override - public Distributor get() { - return Distributor.no(); - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java deleted file mode 100644 index 945928f02..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/NoiseDistributorTemplate.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.config; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class NoiseDistributorTemplate implements ObjectTemplate { - @Value("threshold") - @Default - private @Meta double threshold = 0; - @Value("distribution") - private @Meta NoiseSampler noise; - - @Override - public Distributor get() { - return new NoiseDistributor(noise, threshold); - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java deleted file mode 100644 index 3a8aa26c3..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/OrDistributorTemplate.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class OrDistributorTemplate implements ObjectTemplate, ValidatedConfigTemplate { - @Value("distributors") - private @Meta List<@Meta Distributor> distributors; - - - @Override - public Distributor get() { - Distributor current = distributors.remove(0); - while(!distributors.isEmpty()) { - current = current.or(distributors.remove(0)); - } - return current; - } - - @Override - public boolean validate() throws ValidationException { - if(distributors.isEmpty()) throw new ValidationException("AND Distributor must specify at least 1 distributor."); - return true; - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java deleted file mode 100644 index da61112a7..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/PointSetDistributorTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.Set; - -import com.dfsek.terra.addons.feature.distributor.distributors.PointSetDistributor; -import com.dfsek.terra.addons.feature.distributor.util.Point; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class PointSetDistributorTemplate implements ObjectTemplate { - @Value("points") - private @Meta Set<@Meta Point> points; - - @Override - public Distributor get() { - return new PointSetDistributor(points); - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/YesDistributorTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/YesDistributorTemplate.java deleted file mode 100644 index aacddc06f..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/config/YesDistributorTemplate.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.config; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class YesDistributorTemplate implements ObjectTemplate { - @Override - public Distributor get() { - return Distributor.yes(); - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java deleted file mode 100644 index 8303c2288..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/NoiseDistributor.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.distributors; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class NoiseDistributor implements Distributor { - private final NoiseSampler sampler; - - private final double threshold; - - public NoiseDistributor(NoiseSampler sampler, double threshold) { - this.sampler = sampler; - this.threshold = threshold; - } - - @Override - public boolean matches(int x, int z, long seed) { - return sampler.getNoiseSeeded(seed, x, z) > threshold; - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java deleted file mode 100644 index 5508ebe8f..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/distributors/PointSetDistributor.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.distributors; - -import java.util.Set; - -import com.dfsek.terra.addons.feature.distributor.util.Point; -import com.dfsek.terra.api.structure.feature.Distributor; - - -public class PointSetDistributor implements Distributor { - private final Set points; - - public PointSetDistributor(Set points) { - this.points = points; - } - - @Override - public boolean matches(int x, int z, long seed) { - return points.contains(new Point(x, z)); - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java deleted file mode 100644 index 973f1c8d1..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/Point.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.util; - -public class Point { - private final int x; - private final int z; - - private final int hash; - - public Point(int x, int z) { - this.x = x; - this.z = z; - this.hash = 31 * x + z; - } - - public int getX() { - return x; - } - - public int getZ() { - return z; - } - - @Override - public int hashCode() { - return hash; - } - - @Override - public boolean equals(Object obj) { - if(!(obj instanceof Point)) return false; - Point that = (Point) obj; - return this.x == that.x && this.z == that.z; - } -} diff --git a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java b/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java deleted file mode 100644 index 864b5168f..000000000 --- a/common/addons/config-distributors/src/main/java/com/dfsek/terra/addons/feature/distributor/util/PointTemplate.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.feature.distributor.util; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.api.config.meta.Meta; - - -public class PointTemplate implements ObjectTemplate { - @Value("x") - private @Meta int x; - - @Value("z") - private @Meta int z; - - @Override - public Point get() { - return new Point(x, z); - } -} From d143ff87fbce145ff118f1d1ffae2f646fc175a9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:38:44 -0700 Subject: [PATCH 31/97] add distributor addon as submodule --- .gitmodules | 3 +++ common/addons/config-distributors | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-distributors diff --git a/.gitmodules b/.gitmodules index e72eda7de..298a1b41c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,6 @@ [submodule "common/addons/config-carver"] path = common/addons/config-carver url = https://github.com/PolyhedralDev/Terra-config-carver +[submodule "common/addons/config-distributors"] + path = common/addons/config-distributors + url = https://github.com/PolyhedralDev/Terra-config-distributors diff --git a/common/addons/config-distributors b/common/addons/config-distributors new file mode 160000 index 000000000..aad82e28c --- /dev/null +++ b/common/addons/config-distributors @@ -0,0 +1 @@ +Subproject commit aad82e28c90e9caeabbada6461c17282e741b6ce From 4d0ca617a027574cc7d45e687b20dc9705b9e0e7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:44:41 -0700 Subject: [PATCH 32/97] remove feature addon from main repo --- common/addons/config-feature/build.gradle.kts | 2 - .../addons/feature/ConfiguredFeature.java | 41 --------------- .../terra/addons/feature/FeatureAddon.java | 28 ---------- .../addons/feature/FeatureConfigType.java | 39 -------------- .../terra/addons/feature/FeatureFactory.java | 15 ------ .../terra/addons/feature/FeatureTemplate.java | 52 ------------------- 6 files changed, 177 deletions(-) delete mode 100644 common/addons/config-feature/build.gradle.kts delete mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java delete mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java delete mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java delete mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java delete mode 100644 common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java diff --git a/common/addons/config-feature/build.gradle.kts b/common/addons/config-feature/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-feature/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java deleted file mode 100644 index 8fe4eab9e..000000000 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/ConfiguredFeature.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.dfsek.terra.addons.feature; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.feature.Distributor; -import com.dfsek.terra.api.structure.feature.Feature; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.World; - - -public class ConfiguredFeature implements Feature { - private final ProbabilityCollection structures; - - private final NoiseSampler structureSelector; - private final Distributor distributor; - private final Locator locator; - - public ConfiguredFeature(ProbabilityCollection structures, NoiseSampler structureSelector, Distributor distributor, - Locator locator) { - this.structures = structures; - this.structureSelector = structureSelector; - this.distributor = distributor; - this.locator = locator; - } - - @Override - public Structure getStructure(World world, int x, int y, int z) { - return structures.get(structureSelector, x, y, z, world.getSeed()); - } - - @Override - public Distributor getDistributor() { - return distributor; - } - - @Override - public Locator getLocator() { - return locator; - } -} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java deleted file mode 100644 index 64568b40a..000000000 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureAddon.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.feature; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; - - -@Addon("config-feature") -@Version("1.0.0") -@Author("Terra") -public class FeatureAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().registerConfigType(new FeatureConfigType(), "FEATURE", 3)) - .failThrough(); - } -} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java deleted file mode 100644 index cb761e5e2..000000000 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureConfigType.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.addons.feature; - -import java.util.function.Supplier; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.structure.feature.Feature; -import com.dfsek.terra.api.util.reflection.TypeKey; - - -public class FeatureConfigType implements ConfigType { - public static final TypeKey FEATURE_TYPE_KEY = new TypeKey<>() { - }; - - private final FeatureFactory factory = new FeatureFactory(); - - @Override - public Supplier> registrySupplier(ConfigPack pack) { - return pack.getRegistryFactory()::create; - } - - @Override - public FeatureTemplate getTemplate(ConfigPack pack, Platform platform) { - return new FeatureTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return FEATURE_TYPE_KEY; - } -} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java deleted file mode 100644 index 7ad615929..000000000 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureFactory.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.feature; - -import com.dfsek.tectonic.exception.LoadException; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.structure.feature.Feature; - - -public class FeatureFactory implements ConfigFactory { - @Override - public Feature build(FeatureTemplate config, Platform platform) throws LoadException { - return new ConfiguredFeature(config.getStructures(), config.getStructureNoise(), config.getDistributor(), config.getLocator()); - } -} diff --git a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java b/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java deleted file mode 100644 index 1357987a2..000000000 --- a/common/addons/config-feature/src/main/java/com/dfsek/terra/addons/feature/FeatureTemplate.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.addons.feature; - -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.feature.Distributor; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class FeatureTemplate implements AbstractableTemplate { - @Value("id") - @Final - private String id; - - @Value("distributor") - private @Meta Distributor distributor; - - @Value("locator") - private @Meta Locator locator; - - @Value("structures.distribution") - private @Meta NoiseSampler structureNoise; - - @Value("structures.structures") - private @Meta ProbabilityCollection structures; - - @Override - public String getID() { - return id; - } - - public Distributor getDistributor() { - return distributor; - } - - public Locator getLocator() { - return locator; - } - - public NoiseSampler getStructureNoise() { - return structureNoise; - } - - public ProbabilityCollection getStructures() { - return structures; - } -} From 914f0bd862689f3cb403d9c945421d68ba6db427 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 14:45:09 -0700 Subject: [PATCH 33/97] add feature addon as submodule --- .gitmodules | 3 +++ common/addons/config-feature | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-feature diff --git a/.gitmodules b/.gitmodules index 298a1b41c..386311920 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "common/addons/config-distributors"] path = common/addons/config-distributors url = https://github.com/PolyhedralDev/Terra-config-distributors +[submodule "common/addons/config-feature"] + path = common/addons/config-feature + url = https://github.com/PolyhedralDev/Terra-config-feature diff --git a/common/addons/config-feature b/common/addons/config-feature new file mode 160000 index 000000000..ea4b7cdd9 --- /dev/null +++ b/common/addons/config-feature @@ -0,0 +1 @@ +Subproject commit ea4b7cdd91e391431d97e75342b58ac404c9a00a From c2c67fbe72c7a22e0e7050196a1e20c697fc7fa7 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:04:27 -0700 Subject: [PATCH 34/97] remove flora addon from main repo --- common/addons/config-flora/README.md | 3 - common/addons/config-flora/build.gradle.kts | 2 - .../dfsek/terra/addons/flora/FloraAddon.java | 33 ----- .../terra/addons/flora/FloraConfigType.java | 38 ------ .../terra/addons/flora/FloraFactory.java | 16 --- .../terra/addons/flora/FloraTemplate.java | 63 ---------- .../flora/config/BlockLayerTemplate.java | 23 ---- .../addons/flora/flora/gen/BlockLayer.java | 23 ---- .../addons/flora/flora/gen/TerraFlora.java | 113 ------------------ 9 files changed, 314 deletions(-) delete mode 100644 common/addons/config-flora/README.md delete mode 100644 common/addons/config-flora/build.gradle.kts delete mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java delete mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java delete mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java delete mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java delete mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java delete mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java delete mode 100644 common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java diff --git a/common/addons/config-flora/README.md b/common/addons/config-flora/README.md deleted file mode 100644 index 6ce6deaa8..000000000 --- a/common/addons/config-flora/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-flora - -Registers the default configuration for Terra Flora, `FLORA`. \ No newline at end of file diff --git a/common/addons/config-flora/build.gradle.kts b/common/addons/config-flora/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-flora/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java deleted file mode 100644 index 142924e7b..000000000 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraAddon.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.flora; - -import com.dfsek.terra.addons.flora.config.BlockLayerTemplate; -import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; - - -@Addon("config-flora") -@Author("Terra") -@Version("0.1.0") -public class FloraAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new FloraConfigType(), "FLORA", 2); - event.getPack().applyLoader(BlockLayer.class, BlockLayerTemplate::new); - }) - .failThrough(); - } -} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java deleted file mode 100644 index 1d1a2934c..000000000 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraConfigType.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.flora; - -import java.util.function.Supplier; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.reflection.TypeKey; - - -public class FloraConfigType implements ConfigType { - public static final TypeKey FLORA_TYPE_TOKEN = new TypeKey<>() { - }; - private final FloraFactory factory = new FloraFactory(); - - @Override - public Supplier> registrySupplier(ConfigPack pack) { - return pack.getRegistryFactory()::create; - } - - @Override - public FloraTemplate getTemplate(ConfigPack pack, Platform platform) { - return new FloraTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return FLORA_TYPE_TOKEN; - } -} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java deleted file mode 100644 index ce24a3672..000000000 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.flora; - -import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.structure.Structure; - - -public class FloraFactory implements ConfigFactory { - @Override - public TerraFlora build(FloraTemplate config, Platform platform) { - return new TerraFlora(config.getLayers(), config.doPhysics(), config.isCeiling(), - config.getRotatable(), - config.getNoiseDistribution(), config.getID()); - } -} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java deleted file mode 100644 index 78b76ddda..000000000 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.dfsek.terra.addons.flora; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; - -import java.util.List; - -import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; -import com.dfsek.terra.addons.flora.flora.gen.TerraFlora; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.MaterialSet; - - -@SuppressWarnings({ "FieldMayBeFinal", "unused" }) -public class FloraTemplate implements AbstractableTemplate { - @Value("id") - @Final - private String id; - @Value("rotatable") - @Default - private @Meta MaterialSet rotatable = MaterialSet.empty(); - - @Value("physics") - @Default - private @Meta boolean doPhysics = false; - - @Value("ceiling") - @Default - private @Meta boolean ceiling = false; - - @Value("layers") - private @Meta List<@Meta BlockLayer> layers; - - @Value("layer-distribution") - private @Meta NoiseSampler noiseDistribution; - - public boolean doPhysics() { - return doPhysics; - } - - public NoiseSampler getNoiseDistribution() { - return noiseDistribution; - } - - public List getLayers() { - return layers; - } - - public String getID() { - return id; - } - - public boolean isCeiling() { - return ceiling; - } - - public MaterialSet getRotatable() { - return rotatable; - } -} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java deleted file mode 100644 index 13673d93f..000000000 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/config/BlockLayerTemplate.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.flora.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.flora.flora.gen.BlockLayer; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class BlockLayerTemplate implements ObjectTemplate { - @Value("layers") - private @Meta int layers; - - @Value("materials") - private @Meta ProbabilityCollection data; - - @Override - public BlockLayer get() { - return new BlockLayer(layers, data); - } -} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java deleted file mode 100644 index 75b16529a..000000000 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/BlockLayer.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.flora.flora.gen; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class BlockLayer { - private final int layers; - private final ProbabilityCollection blocks; - - public BlockLayer(int layers, ProbabilityCollection blocks) { - this.layers = layers; - this.blocks = blocks; - } - - public int getLayers() { - return layers; - } - - public ProbabilityCollection getBlocks() { - return blocks; - } -} diff --git a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java b/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java deleted file mode 100644 index c9942f055..000000000 --- a/common/addons/config-flora/src/main/java/com/dfsek/terra/addons/flora/flora/gen/TerraFlora.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.dfsek.terra.addons.flora.flora.gen; - -import net.jafama.FastMath; - -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.List; -import java.util.Random; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.block.state.properties.base.Properties; -import com.dfsek.terra.api.block.state.properties.enums.Direction; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; - - -public class TerraFlora implements Structure { - private final List> layers; - private final boolean physics; - private final boolean ceiling; - - private final MaterialSet testRotation; - - private final NoiseSampler distribution; - - private final String id; - - public TerraFlora(List layers, boolean physics, boolean ceiling, - MaterialSet testRotation, - NoiseSampler distribution, String id) { - this.physics = physics; - this.testRotation = testRotation; - this.ceiling = ceiling; - this.distribution = distribution; - this.id = id; - - this.layers = new ArrayList<>(); - layers.forEach(layer -> { - for(int i = 0; i < layer.getLayers(); i++) { - this.layers.add(layer.getBlocks()); - } - }); - } - - private void test(EnumSet faces, Direction f, Vector3 b, World world) { - if(testRotation.contains( - world.getBlockData(b.getBlockX() + f.getModX(), b.getBlockY() + f.getModY(), b.getBlockZ() + f.getModZ()).getBlockType())) - faces.add(f); - } - - private ProbabilityCollection getStateCollection(int layer) { - return layers.get(FastMath.max(FastMath.min(layer, layers.size() - 1), 0)); - } - - private EnumSet getFaces(Vector3 b, World world) { - EnumSet faces = EnumSet.noneOf(Direction.class); - test(faces, Direction.NORTH, b, world); - test(faces, Direction.SOUTH, b, world); - test(faces, Direction.EAST, b, world); - test(faces, Direction.WEST, b, world); - return faces; - } - - @Override - public String getID() { - return id; - } - - @Override - public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { - return generate(location, world, random, rotation); - } - - @Override - public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { - return generate(buffer.getOrigin(), world, random, rotation); - } - - @Override - public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { - boolean doRotation = testRotation.size() > 0; - int size = layers.size(); - int c = ceiling ? -1 : 1; - - EnumSet faces = doRotation ? getFaces(location.clone().add(0, c, 0), world) : EnumSet.noneOf(Direction.class); - if(doRotation && faces.size() == 0) return false; // Don't plant if no faces are valid. - - for(int i = 0; FastMath.abs(i) < size; i += c) { // Down if ceiling, up if floor - int lvl = (FastMath.abs(i)); - BlockState data = getStateCollection((ceiling ? lvl : size - lvl - 1)).get(distribution, location.getX(), location.getY(), - location.getZ(), world.getSeed()).clone(); - if(doRotation) { - Direction oneFace = new ArrayList<>(faces).get( - new Random(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. - - data.setIfPresent(Properties.DIRECTION, oneFace.opposite()) - .setIfPresent(Properties.NORTH, faces.contains(Direction.NORTH)) - .setIfPresent(Properties.SOUTH, faces.contains(Direction.SOUTH)) - .setIfPresent(Properties.EAST, faces.contains(Direction.EAST)) - .setIfPresent(Properties.WEST, faces.contains(Direction.WEST)); - } - world.setBlockData(location.clone().add(0, i + c, 0), data, physics); - } - return true; - } -} From 6f5de4d0b4769334186a387391961fcbd1487102 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:04:37 -0700 Subject: [PATCH 35/97] add flora addon as submodule --- .gitmodules | 3 +++ common/addons/config-flora | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-flora diff --git a/.gitmodules b/.gitmodules index 386311920..335043f4d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "common/addons/config-feature"] path = common/addons/config-feature url = https://github.com/PolyhedralDev/Terra-config-feature +[submodule "common/addons/config-flora"] + path = common/addons/config-flora + url = https://github.com/PolyhedralDev/Terra-config-flora diff --git a/common/addons/config-flora b/common/addons/config-flora new file mode 160000 index 000000000..f2f0b4ccf --- /dev/null +++ b/common/addons/config-flora @@ -0,0 +1 @@ +Subproject commit f2f0b4ccf8491af6936cc7cd8ed486434cfa6e9d From e32d9433d52773f68805a75dce901a4c252806be Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:06:44 -0700 Subject: [PATCH 36/97] remove locators addon from main repo --- .../addons/config-locators/build.gradle.kts | 2 - .../addons/feature/locator/LocatorAddon.java | 76 ------------------- .../locator/config/AndLocatorTemplate.java | 32 -------- .../config/Noise3DLocatorTemplate.java | 20 ----- .../locator/config/NoiseLocatorTemplate.java | 22 ------ .../locator/config/OrLocatorTemplate.java | 32 -------- .../config/PatternLocatorTemplate.java | 24 ------ .../locator/config/RandomLocatorTemplate.java | 23 ------ .../config/SurfaceLocatorTemplate.java | 27 ------- .../pattern/AirMatchPatternTemplate.java | 22 ------ .../config/pattern/AndPatternTemplate.java | 32 -------- .../pattern/BlockSetMatchPatternTemplate.java | 24 ------ .../config/pattern/NotPatternTemplate.java | 18 ----- .../config/pattern/OrPatternTemplate.java | 32 -------- .../SingleBlockMatchPatternTemplate.java | 25 ------ .../pattern/SolidMatchPatternTemplate.java | 19 ----- .../locator/locators/Noise3DLocator.java | 27 ------- .../locator/locators/NoiseLocator.java | 33 -------- .../locator/locators/PatternLocator.java | 29 ------- .../locator/locators/RandomLocator.java | 38 ---------- .../locator/locators/SurfaceLocator.java | 32 -------- .../locator/patterns/MatchPattern.java | 26 ------- .../feature/locator/patterns/Pattern.java | 20 ----- 23 files changed, 635 deletions(-) delete mode 100644 common/addons/config-locators/build.gradle.kts delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Noise3DLocatorTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java delete mode 100644 common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java diff --git a/common/addons/config-locators/build.gradle.kts b/common/addons/config-locators/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-locators/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java deleted file mode 100644 index bffc6a2d5..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/LocatorAddon.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.dfsek.terra.addons.feature.locator; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.feature.locator.config.AndLocatorTemplate; -import com.dfsek.terra.addons.feature.locator.config.Noise3DLocatorTemplate; -import com.dfsek.terra.addons.feature.locator.config.NoiseLocatorTemplate; -import com.dfsek.terra.addons.feature.locator.config.OrLocatorTemplate; -import com.dfsek.terra.addons.feature.locator.config.PatternLocatorTemplate; -import com.dfsek.terra.addons.feature.locator.config.RandomLocatorTemplate; -import com.dfsek.terra.addons.feature.locator.config.SurfaceLocatorTemplate; -import com.dfsek.terra.addons.feature.locator.config.pattern.AirMatchPatternTemplate; -import com.dfsek.terra.addons.feature.locator.config.pattern.AndPatternTemplate; -import com.dfsek.terra.addons.feature.locator.config.pattern.BlockSetMatchPatternTemplate; -import com.dfsek.terra.addons.feature.locator.config.pattern.NotPatternTemplate; -import com.dfsek.terra.addons.feature.locator.config.pattern.OrPatternTemplate; -import com.dfsek.terra.addons.feature.locator.config.pattern.SingleBlockMatchPatternTemplate; -import com.dfsek.terra.addons.feature.locator.config.pattern.SolidMatchPatternTemplate; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.reflection.TypeKey; - - -@Addon("config-locators") -@Version("1.0.0") -@Author("Terra") -public class LocatorAddon extends TerraAddon { - - public static final TypeKey>> LOCATOR_TOKEN = new TypeKey<>() { - }; - public static final TypeKey>> PATTERN_TOKEN = new TypeKey<>() { - }; - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> locatorRegistry = event.getPack().getOrCreateRegistry(LOCATOR_TOKEN); - locatorRegistry.register("SURFACE", () -> new SurfaceLocatorTemplate(platform)); - locatorRegistry.register("RANDOM", RandomLocatorTemplate::new); - locatorRegistry.register("PATTERN", PatternLocatorTemplate::new); - locatorRegistry.register("NOISE", NoiseLocatorTemplate::new); - locatorRegistry.register("NOISE_3D", Noise3DLocatorTemplate::new); - - locatorRegistry.register("AND", AndLocatorTemplate::new); - locatorRegistry.register("OR", OrLocatorTemplate::new); - }) - .then(event -> { - CheckedRegistry>> patternRegistry = event.getPack().getOrCreateRegistry(PATTERN_TOKEN); - patternRegistry.register("MATCH_AIR", AirMatchPatternTemplate::new); - patternRegistry.register("MATCH_SOLID", SolidMatchPatternTemplate::new); - patternRegistry.register("MATCH", SingleBlockMatchPatternTemplate::new); - patternRegistry.register("MATCH_SET", BlockSetMatchPatternTemplate::new); - - patternRegistry.register("AND", AndPatternTemplate::new); - patternRegistry.register("OR", OrPatternTemplate::new); - patternRegistry.register("NOT", NotPatternTemplate::new); - }) - .failThrough(); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java deleted file mode 100644 index 404c38a8a..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/AndLocatorTemplate.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Locator; - - -public class AndLocatorTemplate implements ObjectTemplate, ValidatedConfigTemplate { - @Value("locators") - private @Meta List<@Meta Locator> locators; - - @Override - public Locator get() { - Locator current = locators.remove(0); - while(!locators.isEmpty()) { - current = current.and(locators.remove(0)); - } - return current; - } - - @Override - public boolean validate() throws ValidationException { - if(locators.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); - return true; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Noise3DLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Noise3DLocatorTemplate.java deleted file mode 100644 index 2a61e39dd..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/Noise3DLocatorTemplate.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.locators.Noise3DLocator; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.feature.Locator; - - -public class Noise3DLocatorTemplate implements ObjectTemplate { - @Value("sampler") - private @Meta NoiseSampler sampler; - - @Override - public Locator get() { - return new Noise3DLocator(sampler); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java deleted file mode 100644 index ca0f33137..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/NoiseLocatorTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.addons.feature.locator.locators.NoiseLocator; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.feature.Locator; - - -public class NoiseLocatorTemplate implements ObjectTemplate { - @Value("samplers") - private @Meta List<@Meta NoiseSampler> samplers; - - @Override - public Locator get() { - return new NoiseLocator(samplers); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java deleted file mode 100644 index 38e0d660c..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/OrLocatorTemplate.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Locator; - - -public class OrLocatorTemplate implements ObjectTemplate, ValidatedConfigTemplate { - @Value("locators") - private @Meta List<@Meta Locator> locators; - - @Override - public Locator get() { - Locator current = locators.remove(0); - while(!locators.isEmpty()) { - current = current.or(locators.remove(0)); - } - return current; - } - - @Override - public boolean validate() throws ValidationException { - if(locators.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); - return true; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java deleted file mode 100644 index c27054675..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/PatternLocatorTemplate.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.locators.PatternLocator; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; - - -public class PatternLocatorTemplate implements ObjectTemplate { - @Value("range") - private @Meta Range range; - - @Value("pattern") - private @Meta Pattern pattern; - - @Override - public Locator get() { - return new PatternLocator(pattern, range); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java deleted file mode 100644 index 347294d3f..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/RandomLocatorTemplate.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.locators.RandomLocator; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; - - -public class RandomLocatorTemplate implements ObjectTemplate { - @Value("height") - private @Meta Range height; - - @Value("amount") - private @Meta Range amount; - - @Override - public Locator get() { - return new RandomLocator(height, amount); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java deleted file mode 100644 index fce147df8..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/SurfaceLocatorTemplate.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.locators.SurfaceLocator; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; - - -public class SurfaceLocatorTemplate implements ObjectTemplate { - private final Platform platform; - - @Value("range") - private @Meta Range range; - - public SurfaceLocatorTemplate(Platform platform) { - this.platform = platform; - } - - @Override - public Locator get() { - return new SurfaceLocator(range, platform); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java deleted file mode 100644 index dfd65ec38..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AirMatchPatternTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config.pattern; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.Range; - - -public class AirMatchPatternTemplate implements ObjectTemplate { - @Value("offset") - private @Meta Range offset; - - - @Override - public Pattern get() { - return new MatchPattern(offset, BlockState::isAir); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java deleted file mode 100644 index 78ff11428..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/AndPatternTemplate.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config.pattern; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.config.meta.Meta; - - -public class AndPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { - @Value("patterns") - private @Meta List<@Meta Pattern> patterns; - - @Override - public Pattern get() { - Pattern current = patterns.remove(0); - while(!patterns.isEmpty()) { - current = current.and(patterns.remove(0)); - } - return current; - } - - @Override - public boolean validate() throws ValidationException { - if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); - return true; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java deleted file mode 100644 index 6f15ac36d..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/BlockSetMatchPatternTemplate.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config.pattern; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.MaterialSet; - - -public class BlockSetMatchPatternTemplate implements ObjectTemplate { - @Value("blocks") - private @Meta MaterialSet blocks; - - @Value("offset") - private @Meta Range offset; - - @Override - public Pattern get() { - return new MatchPattern(offset, blockState -> blocks.contains(blockState.getBlockType())); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java deleted file mode 100644 index fcf40e57b..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/NotPatternTemplate.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config.pattern; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.config.meta.Meta; - - -public class NotPatternTemplate implements ObjectTemplate { - @Value("pattern") - private @Meta Pattern pattern; - - @Override - public Pattern get() { - return pattern.not(); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java deleted file mode 100644 index 5e1369724..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/OrPatternTemplate.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config.pattern; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.config.meta.Meta; - - -public class OrPatternTemplate implements ObjectTemplate, ValidatedConfigTemplate { - @Value("patterns") - private @Meta List<@Meta Pattern> patterns; - - @Override - public Pattern get() { - Pattern current = patterns.remove(0); - while(!patterns.isEmpty()) { - current = current.or(patterns.remove(0)); - } - return current; - } - - @Override - public boolean validate() throws ValidationException { - if(patterns.isEmpty()) throw new ValidationException("AND Pattern must specify at least 1 pattern."); - return true; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java deleted file mode 100644 index 782d0ca5d..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SingleBlockMatchPatternTemplate.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config.pattern; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.Range; - - -public class SingleBlockMatchPatternTemplate implements ObjectTemplate { - @Value("block") - private @Meta BlockState block; - - @Value("offset") - private @Meta Range offset; - - - @Override - public Pattern get() { - return new MatchPattern(offset, block::matches); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java deleted file mode 100644 index eebb03197..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/config/pattern/SolidMatchPatternTemplate.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.config.pattern; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.addons.feature.locator.patterns.MatchPattern; -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.util.Range; - - -public class SolidMatchPatternTemplate implements ObjectTemplate { - @Value("offset") - private Range offset; - - @Override - public Pattern get() { - return new MatchPattern(offset, blockState -> blockState.getBlockType().isSolid()); - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java deleted file mode 100644 index 571a33aa6..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/Noise3DLocator.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.locators; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.feature.BinaryColumn; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.world.Column; - - -public class Noise3DLocator implements Locator { - private final NoiseSampler sampler; - - public Noise3DLocator(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public BinaryColumn getSuitableCoordinates(Column column) { - BinaryColumn results = column.newBinaryColumn(); - long seed = column.getWorld().getSeed(); - int x = column.getX(); - int z = column.getZ(); - column.forEach(y -> { - if(sampler.getNoiseSeeded(seed, x, y, z) > 0) results.set(y); - }); - return results; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java deleted file mode 100644 index b88ad0295..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/NoiseLocator.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.locators; - -import net.jafama.FastMath; - -import java.util.List; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.structure.feature.BinaryColumn; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.world.Column; - - -public class NoiseLocator implements Locator { - private final List samplers; - - public NoiseLocator(List samplers) { - this.samplers = samplers; - } - - @Override - public BinaryColumn getSuitableCoordinates(Column column) { - BinaryColumn results = new BinaryColumn(column.getMinY(), column.getMaxY()); - - long seed = column.getWorld().getSeed(); - samplers.forEach(sampler -> { - int y = FastMath.floorToInt(sampler.getNoiseSeeded(seed, column.getX(), column.getX())); - if(y >= column.getMaxY() || y < column.getMinY()) return; - results.set(y); - }); - - return results; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java deleted file mode 100644 index a5faddf4c..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/PatternLocator.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.locators; - -import com.dfsek.terra.addons.feature.locator.patterns.Pattern; -import com.dfsek.terra.api.structure.feature.BinaryColumn; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.world.Column; - - -public class PatternLocator implements Locator { - private final Pattern pattern; - private final Range search; - - public PatternLocator(Pattern pattern, Range search) { - this.pattern = pattern; - this.search = search; - } - - @Override - public BinaryColumn getSuitableCoordinates(Column column) { - BinaryColumn locations = new BinaryColumn(column.getMinY(), column.getMaxY()); - - for(int y : search) { - if(pattern.matches(y, column)) locations.set(y); - } - - return locations; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java deleted file mode 100644 index 78df7b875..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/RandomLocator.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.locators; - -import java.util.Random; - -import com.dfsek.terra.api.structure.feature.BinaryColumn; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.world.Column; - - -public class RandomLocator implements Locator { - private final Range height; - - private final Range points; - - public RandomLocator(Range height, Range points) { - this.height = height; - this.points = points; - } - - @Override - public BinaryColumn getSuitableCoordinates(Column column) { - long seed = column.getWorld().getSeed(); - seed = 31 * seed + column.getX(); - seed = 31 * seed + column.getZ(); - - Random r = new Random(seed); - - int size = points.get(r); - - BinaryColumn results = new BinaryColumn(column.getMinY(), column.getMaxY()); - for(int i = 0; i < size; i++) { - results.set(height.get(r)); - } - - return results; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java deleted file mode 100644 index 942d45236..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/locators/SurfaceLocator.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.locators; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structure.feature.BinaryColumn; -import com.dfsek.terra.api.structure.feature.Locator; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.world.Column; - - -public class SurfaceLocator implements Locator { - private final Range search; - - private final BlockState air; - - public SurfaceLocator(Range search, Platform platform) { - this.search = search; - this.air = platform.getWorldHandle().air(); - } - - @Override - public BinaryColumn getSuitableCoordinates(Column column) { - BinaryColumn location = new BinaryColumn(column.getMinY(), column.getMaxY()); - for(int y : search) { - if(column.getBlock(y).matches(air) && !column.getBlock(y - 1).matches(air)) { - location.set(y); - return location; - } - } - return location; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java deleted file mode 100644 index d305d64d8..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/MatchPattern.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.patterns; - -import java.util.function.Predicate; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.world.Column; - - -public class MatchPattern implements Pattern { - private final Range range; - private final Predicate matches; - - public MatchPattern(Range range, Predicate matches) { - this.range = range; - this.matches = matches; - } - - @Override - public boolean matches(int y, Column column) { - for(int i : range) { - if(!matches.test(column.getBlock(y + i))) return false; - } - return true; - } -} diff --git a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java b/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java deleted file mode 100644 index 2aae3af0d..000000000 --- a/common/addons/config-locators/src/main/java/com/dfsek/terra/addons/feature/locator/patterns/Pattern.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.feature.locator.patterns; - -import com.dfsek.terra.api.world.Column; - - -public interface Pattern { - boolean matches(int y, Column column); - - default Pattern and(Pattern that) { - return (y, column) -> this.matches(y, column) && that.matches(y, column); - } - - default Pattern or(Pattern that) { - return (y, column) -> this.matches(y, column) || that.matches(y, column); - } - - default Pattern not() { - return (y, column) -> !this.matches(y, column); - } -} From eb1df32714bfafd7747797385d29a95864d67eff Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:06:54 -0700 Subject: [PATCH 37/97] add locators addon as submodule --- .gitmodules | 3 +++ common/addons/config-locators | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-locators diff --git a/.gitmodules b/.gitmodules index 335043f4d..2df23f2b6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,6 @@ [submodule "common/addons/config-flora"] path = common/addons/config-flora url = https://github.com/PolyhedralDev/Terra-config-flora +[submodule "common/addons/config-locators"] + path = common/addons/config-locators + url = https://github.com/PolyhedralDev/Terra-config-locators diff --git a/common/addons/config-locators b/common/addons/config-locators new file mode 160000 index 000000000..30917cb5c --- /dev/null +++ b/common/addons/config-locators @@ -0,0 +1 @@ +Subproject commit 30917cb5cead14a7327f0045cf36376700bb0e8b From 6e3c09d08120899de03a4892907776a59c78a390 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:18:00 -0700 Subject: [PATCH 38/97] remove noise addon from main repo --- common/addons/config-noise-function/README.md | 3 - .../config-noise-function/build.gradle.kts | 2 - .../dfsek/terra/addons/noise/NoiseAddon.java | 115 ---- .../addons/noise/NoiseConfigPackTemplate.java | 30 - .../DimensionApplicableNoiseSampler.java | 29 - .../config/templates/DomainWarpTemplate.java | 27 - .../config/templates/FunctionTemplate.java | 31 - .../templates/ImageSamplerTemplate.java | 28 - .../config/templates/KernelTemplate.java | 62 -- .../config/templates/SamplerTemplate.java | 28 - .../noise/CellularNoiseTemplate.java | 42 -- .../noise/ConstantNoiseTemplate.java | 22 - .../noise/ExpressionFunctionTemplate.java | 97 ---- .../templates/noise/GaborNoiseTemplate.java | 44 -- .../config/templates/noise/NoiseTemplate.java | 20 - .../templates/noise/SimpleNoiseTemplate.java | 23 - .../noise/fractal/BrownianMotionTemplate.java | 17 - .../noise/fractal/FractalTemplate.java | 31 - .../noise/fractal/PingPongTemplate.java | 27 - .../noise/fractal/RidgedFractalTemplate.java | 17 - .../normalizer/ClampNormalizerTemplate.java | 22 - .../normalizer/LinearNormalizerTemplate.java | 22 - .../normalizer/NormalNormalizerTemplate.java | 27 - .../normalizer/NormalizerTemplate.java | 14 - .../noise/normalizer/ClampNormalizer.java | 22 - .../noise/normalizer/LinearNormalizer.java | 23 - .../noise/normalizer/NormalNormalizer.java | 47 -- .../addons/noise/normalizer/Normalizer.java | 24 - .../defined/UserDefinedFunction.java | 52 -- .../paralithic/noise/NoiseFunction2.java | 37 -- .../paralithic/noise/NoiseFunction3.java | 37 -- .../noise/paralithic/noise/SeedContext.java | 16 - .../noise/samplers/DomainWarpedSampler.java | 33 -- .../addons/noise/samplers/ImageSampler.java | 68 --- .../addons/noise/samplers/KernelSampler.java | 50 -- .../noise/samplers/noise/CellularSampler.java | 537 ------------------ .../noise/samplers/noise/ConstantSampler.java | 22 - .../samplers/noise/ExpressionFunction.java | 45 -- .../samplers/noise/GaborNoiseSampler.java | 107 ---- .../noise/samplers/noise/NoiseFunction.java | 143 ----- .../noise/fractal/BrownianMotionSampler.java | 47 -- .../noise/fractal/FractalNoiseFunction.java | 48 -- .../noise/fractal/PingPongSampler.java | 59 -- .../noise/fractal/RidgedFractalSampler.java | 48 -- .../noise/random/GaussianNoiseSampler.java | 39 -- .../noise/random/WhiteNoiseSampler.java | 53 -- .../noise/simplex/OpenSimplex2SSampler.java | 272 --------- .../noise/simplex/OpenSimplex2Sampler.java | 153 ----- .../samplers/noise/simplex/PerlinSampler.java | 67 --- .../noise/simplex/SimplexSampler.java | 242 -------- .../noise/simplex/SimplexStyleSampler.java | 97 ---- .../noise/value/ValueCubicSampler.java | 102 ---- .../samplers/noise/value/ValueSampler.java | 52 -- .../samplers/noise/value/ValueStyleNoise.java | 23 - .../addons/noise/util/HashIntrinsic.java | 119 ---- .../noise/util/HashMapDoubleDouble.java | 295 ---------- 56 files changed, 3759 deletions(-) delete mode 100644 common/addons/config-noise-function/README.md delete mode 100644 common/addons/config-noise-function/build.gradle.kts delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java delete mode 100644 common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java diff --git a/common/addons/config-noise-function/README.md b/common/addons/config-noise-function/README.md deleted file mode 100644 index 435757b55..000000000 --- a/common/addons/config-noise-function/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-noise-function - -Registers the default noise functions. \ No newline at end of file diff --git a/common/addons/config-noise-function/build.gradle.kts b/common/addons/config-noise-function/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-noise-function/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java deleted file mode 100644 index 20ec42d17..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseAddon.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.dfsek.terra.addons.noise; - -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.Supplier; - -import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; -import com.dfsek.terra.addons.noise.config.templates.DomainWarpTemplate; -import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; -import com.dfsek.terra.addons.noise.config.templates.ImageSamplerTemplate; -import com.dfsek.terra.addons.noise.config.templates.KernelTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.CellularNoiseTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.ConstantNoiseTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.ExpressionFunctionTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.GaborNoiseTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.SimpleNoiseTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.fractal.BrownianMotionTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.fractal.PingPongTemplate; -import com.dfsek.terra.addons.noise.config.templates.noise.fractal.RidgedFractalTemplate; -import com.dfsek.terra.addons.noise.config.templates.normalizer.ClampNormalizerTemplate; -import com.dfsek.terra.addons.noise.config.templates.normalizer.LinearNormalizerTemplate; -import com.dfsek.terra.addons.noise.config.templates.normalizer.NormalNormalizerTemplate; -import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.addons.noise.samplers.noise.random.GaussianNoiseSampler; -import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2SSampler; -import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.addons.noise.samplers.noise.simplex.PerlinSampler; -import com.dfsek.terra.addons.noise.samplers.noise.simplex.SimplexSampler; -import com.dfsek.terra.addons.noise.samplers.noise.value.ValueCubicSampler; -import com.dfsek.terra.addons.noise.samplers.noise.value.ValueSampler; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; - - -@Addon("config-noise-function") -@Author("Terra") -@Version("1.0.0") -public class NoiseAddon extends TerraAddon { - public static final TypeKey>> NOISE_SAMPLER_TOKEN = new TypeKey<>() { - }; - @Inject - private Platform plugin; - - @Override - public void initialize() { - plugin.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry>> noiseRegistry = event.getPack().getOrCreateRegistry( - NOISE_SAMPLER_TOKEN); - event.getPack() - .applyLoader(CellularSampler.DistanceFunction.class, - (t, o, l) -> CellularSampler.DistanceFunction.valueOf((String) o)) - .applyLoader(CellularSampler.ReturnType.class, (t, o, l) -> CellularSampler.ReturnType.valueOf((String) o)) - .applyLoader(DimensionApplicableNoiseSampler.class, DimensionApplicableNoiseSampler::new) - .applyLoader(FunctionTemplate.class, FunctionTemplate::new); - - noiseRegistry.register("LINEAR", LinearNormalizerTemplate::new); - noiseRegistry.register("NORMAL", NormalNormalizerTemplate::new); - noiseRegistry.register("CLAMP", ClampNormalizerTemplate::new); - - noiseRegistry.register("IMAGE", ImageSamplerTemplate::new); - - noiseRegistry.register("DOMAIN_WARP", DomainWarpTemplate::new); - - noiseRegistry.register("FBM", BrownianMotionTemplate::new); - noiseRegistry.register("PING_PONG", PingPongTemplate::new); - noiseRegistry.register("RIDGED", RidgedFractalTemplate::new); - - noiseRegistry.register("OPEN_SIMPLEX_2", () -> new SimpleNoiseTemplate(OpenSimplex2Sampler::new)); - noiseRegistry.register("OPEN_SIMPLEX_2S", () -> new SimpleNoiseTemplate(OpenSimplex2SSampler::new)); - noiseRegistry.register("PERLIN", () -> new SimpleNoiseTemplate(PerlinSampler::new)); - noiseRegistry.register("SIMPLEX", () -> new SimpleNoiseTemplate(SimplexSampler::new)); - noiseRegistry.register("GABOR", GaborNoiseTemplate::new); - - - noiseRegistry.register("VALUE", () -> new SimpleNoiseTemplate(ValueSampler::new)); - noiseRegistry.register("VALUE_CUBIC", () -> new SimpleNoiseTemplate(ValueCubicSampler::new)); - - noiseRegistry.register("CELLULAR", CellularNoiseTemplate::new); - - noiseRegistry.register("WHITE_NOISE", () -> new SimpleNoiseTemplate(WhiteNoiseSampler::new)); - noiseRegistry.register("GAUSSIAN", () -> new SimpleNoiseTemplate(GaussianNoiseSampler::new)); - - noiseRegistry.register("CONSTANT", ConstantNoiseTemplate::new); - - noiseRegistry.register("KERNEL", KernelTemplate::new); - - Map packSamplers = new LinkedHashMap<>(); - Map packFunctions = new LinkedHashMap<>(); - noiseRegistry.register("EXPRESSION", () -> new ExpressionFunctionTemplate(packSamplers, packFunctions)); - - - NoiseConfigPackTemplate template = new NoiseConfigPackTemplate(); - event.loadTemplate(template); - packSamplers.putAll(template.getSamplers()); - packFunctions.putAll(template.getFunctions()); - }) - .failThrough(); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java deleted file mode 100644 index 355a4509b..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/NoiseConfigPackTemplate.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.addons.noise; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; - -import java.util.LinkedHashMap; -import java.util.Map; - -import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; -import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; -import com.dfsek.terra.api.config.meta.Meta; - - -public class NoiseConfigPackTemplate implements ConfigTemplate { - @Value("noise") - private @Meta Map noiseBuilderMap; - - @Value("functions") - @Default - private @Meta LinkedHashMap expressions = new LinkedHashMap<>(); - - public Map getSamplers() { - return noiseBuilderMap; - } - - public LinkedHashMap getFunctions() { - return expressions; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java deleted file mode 100644 index 20e922fed..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/DimensionApplicableNoiseSampler.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.addons.noise.config; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class DimensionApplicableNoiseSampler implements ObjectTemplate { - @Value("dimensions") - private @Meta int dimensions; - - @Value(".") - private @Meta NoiseSampler sampler; - - @Override - public DimensionApplicableNoiseSampler get() { - return this; - } - - public int getDimensions() { - return dimensions; - } - - public NoiseSampler getSampler() { - return sampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java deleted file mode 100644 index 9fe96b1ed..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/DomainWarpTemplate.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.samplers.DomainWarpedSampler; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class DomainWarpTemplate extends SamplerTemplate { - @Value("warp") - private @Meta NoiseSampler warp; - - @Value("function") - private @Meta NoiseSampler function; - - @Value("amplitude") - @Default - private @Meta double amplitude = 1; - - @Override - public NoiseSampler get() { - return new DomainWarpedSampler(function, warp, amplitude); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java deleted file mode 100644 index 41857573d..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/FunctionTemplate.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.List; - -import com.dfsek.terra.api.config.meta.Meta; - - -@SuppressWarnings("unused") -public class FunctionTemplate implements ObjectTemplate { - @Value("arguments") - private List args; - - @Value("expression") - private @Meta String function; - - @Override - public FunctionTemplate get() { - return this; - } - - public List getArgs() { - return args; - } - - public String getFunction() { - return function; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java deleted file mode 100644 index f0e37eb69..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/ImageSamplerTemplate.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates; - -import com.dfsek.tectonic.annotations.Value; - -import java.awt.image.BufferedImage; - -import com.dfsek.terra.addons.noise.samplers.ImageSampler; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class ImageSamplerTemplate extends SamplerTemplate { - - @Value("image") - private @Meta BufferedImage image; - - @Value("frequency") - private @Meta double frequency; - - @Value("channel") - private ImageSampler.@Meta Channel channel; - - @Override - public NoiseSampler get() { - return new ImageSampler(image, channel, frequency); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java deleted file mode 100644 index 0bb4e3544..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/KernelTemplate.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.exception.ValidationException; - -import java.util.List; - -import com.dfsek.terra.addons.noise.samplers.KernelSampler; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class KernelTemplate extends SamplerTemplate { - - @Value("kernel") - private @Meta List<@Meta List<@Meta Double>> kernel; - - @Value("factor") - @Default - private @Meta double factor = 1; - - @Value("function") - private @Meta NoiseSampler function; - - @Value("frequency") - @Default - private @Meta double frequency = 1; - - @Override - public NoiseSampler get() { - double[][] k = new double[kernel.size()][kernel.get(0).size()]; - - for(int x = 0; x < kernel.size(); x++) { - for(int y = 0; y < kernel.get(x).size(); y++) { - k[x][y] = kernel.get(x).get(y) * factor; - } - } - - KernelSampler sampler = new KernelSampler(k, function); - sampler.setFrequency(frequency); - return sampler; - } - - @Override - public boolean validate() throws ValidationException { - - if(kernel.isEmpty()) throw new ValidationException("Kernel must not be empty."); - - int len = kernel.get(0).size(); - - if(len == 0) throw new ValidationException("Kernel row must contain data."); - - for(int i = 0; i < kernel.size(); i++) { - if(kernel.get(i).size() != len) - throw new ValidationException("Kernel row " + i + " size mismatch. Expected " + len + ", found " + kernel.get(i).size()); - } - - return super.validate(); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java deleted file mode 100644 index b281f1d77..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/SamplerTemplate.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ValidatedConfigTemplate; -import com.dfsek.tectonic.exception.ValidationException; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings("FieldMayBeFinal") -public abstract class SamplerTemplate implements ValidatedConfigTemplate, ObjectTemplate { - @Value("dimensions") - @Default - private @Meta int dimensions = 2; - - @Override - public boolean validate() throws ValidationException { - if(dimensions != 2 && dimensions != 3) throw new ValidationException("Illegal amount of dimensions: " + dimensions); - return true; - } - - public int getDimensions() { - return dimensions; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java deleted file mode 100644 index 1162be34b..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/CellularNoiseTemplate.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.samplers.noise.CellularSampler; -import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings("FieldMayBeFinal") -public class CellularNoiseTemplate extends NoiseTemplate { - @Value("distance") - @Default - private CellularSampler.@Meta DistanceFunction cellularDistanceFunction = CellularSampler.DistanceFunction.EuclideanSq; - - @Value("return") - @Default - private CellularSampler.@Meta ReturnType cellularReturnType = CellularSampler.ReturnType.Distance; - - @Value("jitter") - @Default - private @Meta double cellularJitter = 1.0D; - - - @Value("lookup") - @Default - private @Meta NoiseSampler lookup = new OpenSimplex2Sampler(); - - @Override - public NoiseSampler get() { - CellularSampler sampler = new CellularSampler(); - sampler.setNoiseLookup(lookup); - sampler.setFrequency(frequency); - sampler.setJitterModifier(cellularJitter); - sampler.setReturnType(cellularReturnType); - sampler.setDistanceFunction(cellularDistanceFunction); - sampler.setSalt(salt); - return sampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java deleted file mode 100644 index 87eb684db..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ConstantNoiseTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; -import com.dfsek.terra.addons.noise.samplers.noise.ConstantSampler; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings("FieldMayBeFinal") -public class ConstantNoiseTemplate extends SamplerTemplate { - @Value("value") - @Default - private @Meta double value = 0d; - - @Override - public NoiseSampler get() { - return new ConstantSampler(value); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java deleted file mode 100644 index 27c2d39e8..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/ExpressionFunctionTemplate.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise; - -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.paralithic.functions.Function; -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.exception.ValidationException; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -import com.dfsek.terra.addons.noise.config.DimensionApplicableNoiseSampler; -import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; -import com.dfsek.terra.addons.noise.paralithic.defined.UserDefinedFunction; -import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction2; -import com.dfsek.terra.addons.noise.paralithic.noise.NoiseFunction3; -import com.dfsek.terra.addons.noise.samplers.noise.ExpressionFunction; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "FieldMayBeFinal", "unused" }) -public class ExpressionFunctionTemplate extends SamplerTemplate { - private final Map otherFunctions; - @Value("variables") - @Default - private @Meta Map vars = new HashMap<>(); - - @Value("expression") - private @Meta String equation; - - @Value("samplers") - @Default - private @Meta LinkedHashMap samplers = new LinkedHashMap<>(); - - @Value("functions") - @Default - private @Meta LinkedHashMap functions = new LinkedHashMap<>(); - - private final Map globalFunctions; - - public ExpressionFunctionTemplate(Map otherFunctions, Map samplers) { - this.otherFunctions = otherFunctions; - this.globalFunctions = samplers; - } - - @Override - public NoiseSampler get() { - try { - Map noiseFunctionMap = generateFunctions(); - return new ExpressionFunction(noiseFunctionMap, equation, vars); - } catch(ParseException e) { - throw new IllegalStateException(e); - } - } - - @Override - public boolean validate() throws ValidationException { - try { - Map noiseFunctionMap = generateFunctions(); - new ExpressionFunction(noiseFunctionMap, equation, vars); - } catch(ParseException e) { - throw new ValidationException("Errors occurred while parsing noise equation: ", e); - } - return super.validate(); - } - - private Map generateFunctions() throws ParseException { - Map noiseFunctionMap = new HashMap<>(); - - for(Map.Entry entry : globalFunctions.entrySet()) { - noiseFunctionMap.put(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), new Parser(), new Scope())); - } - - for(Map.Entry entry : functions.entrySet()) { - noiseFunctionMap.put(entry.getKey(), UserDefinedFunction.newInstance(entry.getValue(), new Parser(), new Scope())); - } - - otherFunctions.forEach((id, function) -> { - if(function.getDimensions() == 2) { - noiseFunctionMap.put(id, new NoiseFunction2(function.getSampler())); - } else noiseFunctionMap.put(id, new NoiseFunction3(function.getSampler())); - }); - - samplers.forEach((id, function) -> { - if(function.getDimensions() == 2) { - noiseFunctionMap.put(id, new NoiseFunction2(function.getSampler())); - } else noiseFunctionMap.put(id, new NoiseFunction3(function.getSampler())); - }); - - return noiseFunctionMap; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java deleted file mode 100644 index 2fb5c20dd..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/GaborNoiseTemplate.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.samplers.noise.GaborNoiseSampler; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class GaborNoiseTemplate extends NoiseTemplate { - @Value("rotation") - @Default - private @Meta double rotation = 0.25; - - @Value("isotropic") - @Default - private @Meta boolean isotropic = true; - - @Value("deviation") - @Default - private @Meta double deviation = 1.0; - - @Value("impulses") - @Default - private @Meta double impulses = 64d; - - @Value("frequency_0") - @Default - private @Meta double f0 = 0.625; - - @Override - public NoiseSampler get() { - GaborNoiseSampler gaborNoiseSampler = new GaborNoiseSampler(); - gaborNoiseSampler.setFrequency(frequency); - gaborNoiseSampler.setRotation(rotation); - gaborNoiseSampler.setIsotropic(isotropic); - gaborNoiseSampler.setDeviation(deviation); - gaborNoiseSampler.setImpulsesPerKernel(impulses); - gaborNoiseSampler.setFrequency0(f0); - gaborNoiseSampler.setSalt(salt); - return gaborNoiseSampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java deleted file mode 100644 index 4ce1a07dc..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/NoiseTemplate.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; -import com.dfsek.terra.api.config.meta.Meta; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public abstract class NoiseTemplate extends SamplerTemplate { - @Value("frequency") - @Default - protected @Meta double frequency = 0.02d; - - @Value("salt") - @Default - protected @Meta long salt = 0; -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java deleted file mode 100644 index 455f8642a..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/SimpleNoiseTemplate.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class SimpleNoiseTemplate extends NoiseTemplate { - private final Supplier samplerSupplier; - - public SimpleNoiseTemplate(Supplier samplerSupplier) { - this.samplerSupplier = samplerSupplier; - } - - @Override - public NoiseSampler get() { - NoiseFunction sampler = samplerSupplier.get(); - sampler.setFrequency(frequency); - sampler.setSalt(salt); - return sampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java deleted file mode 100644 index 801aed0a5..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/BrownianMotionTemplate.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise.fractal; - -import com.dfsek.terra.addons.noise.samplers.noise.fractal.BrownianMotionSampler; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class BrownianMotionTemplate extends FractalTemplate { - @Override - public NoiseSampler get() { - BrownianMotionSampler sampler = new BrownianMotionSampler(function); - sampler.setGain(fractalGain); - sampler.setLacunarity(fractalLacunarity); - sampler.setOctaves(octaves); - sampler.setWeightedStrength(weightedStrength); - return sampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java deleted file mode 100644 index e92228663..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/FractalTemplate.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise.fractal; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; -import com.dfsek.terra.addons.noise.samplers.noise.fractal.FractalNoiseFunction; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class FractalTemplate extends SamplerTemplate { - @Value("octaves") - @Default - protected @Meta int octaves = 3; - - @Value("gain") - @Default - protected @Meta double fractalGain = 0.5D; - - @Value("lacunarity") - @Default - protected @Meta double fractalLacunarity = 2.0D; - - @Value("weighted-strength") - @Default - protected @Meta double weightedStrength = 0.0D; - - @Value("function") - protected @Meta NoiseSampler function; -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java deleted file mode 100644 index 145aeea32..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/PingPongTemplate.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise.fractal; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.samplers.noise.fractal.PingPongSampler; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class PingPongTemplate extends FractalTemplate { - @Value("ping-pong") - @Default - private @Meta double pingPong = 2.0D; - - @Override - public NoiseSampler get() { - PingPongSampler sampler = new PingPongSampler(function); - sampler.setGain(fractalGain); - sampler.setLacunarity(fractalLacunarity); - sampler.setOctaves(octaves); - sampler.setWeightedStrength(weightedStrength); - sampler.setPingPongStrength(pingPong); - return sampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java deleted file mode 100644 index 70d606ed0..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/noise/fractal/RidgedFractalTemplate.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.noise.fractal; - -import com.dfsek.terra.addons.noise.samplers.noise.fractal.RidgedFractalSampler; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class RidgedFractalTemplate extends FractalTemplate { - @Override - public NoiseSampler get() { - RidgedFractalSampler sampler = new RidgedFractalSampler(function); - sampler.setGain(fractalGain); - sampler.setLacunarity(fractalLacunarity); - sampler.setOctaves(octaves); - sampler.setWeightedStrength(weightedStrength); - return sampler; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java deleted file mode 100644 index 4e8287a0f..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/ClampNormalizerTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.normalizer; - -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.normalizer.ClampNormalizer; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class ClampNormalizerTemplate extends NormalizerTemplate { - @Value("max") - private @Meta double max; - - @Value("min") - private @Meta double min; - - @Override - public NoiseSampler get() { - return new ClampNormalizer(function, min, max); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java deleted file mode 100644 index 171123493..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/LinearNormalizerTemplate.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.normalizer; - -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.normalizer.LinearNormalizer; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class LinearNormalizerTemplate extends NormalizerTemplate { - @Value("max") - private @Meta double max; - - @Value("min") - private @Meta double min; - - @Override - public NoiseSampler get() { - return new LinearNormalizer(function, min, max); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java deleted file mode 100644 index c55647f90..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalNormalizerTemplate.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.normalizer; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.normalizer.NormalNormalizer; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class NormalNormalizerTemplate extends NormalizerTemplate { - @Value("mean") - private @Meta double mean; - - @Value("standard-deviation") - private @Meta double stdDev; - - @Value("groups") - @Default - private @Meta int groups = 16384; - - @Override - public NoiseSampler get() { - return new NormalNormalizer(function, groups, mean, stdDev); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java deleted file mode 100644 index 1d435acd6..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/config/templates/normalizer/NormalizerTemplate.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.dfsek.terra.addons.noise.config.templates.normalizer; - -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; -import com.dfsek.terra.addons.noise.normalizer.Normalizer; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class NormalizerTemplate extends SamplerTemplate { - @Value("function") - protected @Meta NoiseSampler function; -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java deleted file mode 100644 index b8c093585..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/ClampNormalizer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import net.jafama.FastMath; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class ClampNormalizer extends Normalizer { - private final double min; - private final double max; - - public ClampNormalizer(NoiseSampler sampler, double min, double max) { - super(sampler); - this.min = min; - this.max = max; - } - - @Override - public double normalize(double in) { - return FastMath.max(FastMath.min(in, max), min); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java deleted file mode 100644 index 3d355045a..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/LinearNormalizer.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -/** - * Normalizer to linearly scale data's range. - */ -public class LinearNormalizer extends Normalizer { - private final double min; - private final double max; - - public LinearNormalizer(NoiseSampler sampler, double min, double max) { - super(sampler); - this.min = min; - this.max = max; - } - - @Override - public double normalize(double in) { - return (in - min) * (2 / (max - min)) - 1; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java deleted file mode 100644 index 16dda5430..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/NormalNormalizer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import net.jafama.FastMath; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.MathUtil; - - -/** - * Normalizer to redistribute normally distributed data to a continuous distribution via an automatically generated lookup table. - */ -public class NormalNormalizer extends Normalizer { - - private final double[] lookup; - - public NormalNormalizer(NoiseSampler sampler, int buckets, double mean, double standardDeviation) { - super(sampler); - this.lookup = new double[buckets]; - - for(int i = 0; i < buckets; i++) { - lookup[i] = MathUtil.normalInverse((double) i / buckets, mean, standardDeviation); - } - } - - @Override - public double normalize(double in) { - int start = 0; - int end = lookup.length - 1; - while(start + 1 < end) { - int mid = start + (end - start) / 2; - if(lookup[mid] <= in) { - start = mid; - } else { - end = mid; - } - } - double left = FastMath.abs(lookup[start] - in); - double right = FastMath.abs(lookup[end] - in); - - double fin; - if(left <= right) { - fin = (double) start / (lookup.length); - } else fin = (double) end / (lookup.length); - - return (fin - 0.5) * 2; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java deleted file mode 100644 index c99a54a83..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/normalizer/Normalizer.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.addons.noise.normalizer; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class Normalizer implements NoiseSampler { - private final NoiseSampler sampler; - - public Normalizer(NoiseSampler sampler) { - this.sampler = sampler; - } - - public abstract double normalize(double in); - - @Override - public double getNoiseSeeded(long seed, double x, double y) { - return normalize(sampler.getNoiseSeeded(seed, x, y)); - } - - @Override - public double getNoiseSeeded(long seed, double x, double y, double z) { - return normalize(sampler.getNoiseSeeded(seed, x, y, z)); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java deleted file mode 100644 index db01b9a11..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/defined/UserDefinedFunction.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.addons.noise.paralithic.defined; - -import com.dfsek.paralithic.Expression; -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.paralithic.functions.dynamic.Context; -import com.dfsek.paralithic.functions.dynamic.DynamicFunction; - -import com.dfsek.paralithic.node.Statefulness; - -import com.dfsek.terra.addons.noise.config.templates.FunctionTemplate; - - -public class UserDefinedFunction implements DynamicFunction { - private final Expression expression; - private final int args; - - protected UserDefinedFunction(Expression expression, int args) { - this.expression = expression; - this.args = args; - } - - public static UserDefinedFunction newInstance(FunctionTemplate template, Parser parser, Scope parent) throws ParseException { - - Scope functionScope = new Scope().withParent(parent); - - template.getArgs().forEach(functionScope::addInvocationVariable); - - return new UserDefinedFunction(parser.parse(template.getFunction(), functionScope), template.getArgs().size()); - } - - @Override - public double eval(double... args) { - return expression.evaluate(args); - } - - @Override - public double eval(Context context, double... args) { - return expression.evaluate(context, args); - } - - @Override - public int getArgNumber() { - return args; - } - - @Override - public Statefulness statefulness() { - return Statefulness.STATELESS; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java deleted file mode 100644 index 74f2c7a2c..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction2.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dfsek.terra.addons.noise.paralithic.noise; - -import com.dfsek.paralithic.functions.dynamic.Context; -import com.dfsek.paralithic.functions.dynamic.DynamicFunction; - -import com.dfsek.paralithic.node.Statefulness; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class NoiseFunction2 implements DynamicFunction { - private final NoiseSampler gen; - - public NoiseFunction2(NoiseSampler gen) { - this.gen = gen; - } - - @Override - public double eval(double... args) { - throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); - } - - @Override - public double eval(Context context, double... args) { - return gen.getNoiseSeeded(((SeedContext) context).getSeed(), args[0], args[1]); - } - - @Override - public int getArgNumber() { - return 2; - } - - @Override - public Statefulness statefulness() { - return Statefulness.CONTEXTUAL; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java deleted file mode 100644 index bba832440..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/NoiseFunction3.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dfsek.terra.addons.noise.paralithic.noise; - -import com.dfsek.paralithic.functions.dynamic.Context; -import com.dfsek.paralithic.functions.dynamic.DynamicFunction; - -import com.dfsek.paralithic.node.Statefulness; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class NoiseFunction3 implements DynamicFunction { - private final NoiseSampler gen; - - public NoiseFunction3(NoiseSampler gen) { - this.gen = gen; - } - - @Override - public double eval(double... args) { - throw new UnsupportedOperationException("Cannot evaluate seeded function without seed context."); - } - - @Override - public double eval(Context context, double... args) { - return gen.getNoiseSeeded(((SeedContext) context).getSeed(), args[0], args[1], args[2]); - } - - @Override - public int getArgNumber() { - return 3; - } - - @Override - public Statefulness statefulness() { - return Statefulness.CONTEXTUAL; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java deleted file mode 100644 index 8f4bb2bf1..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/paralithic/noise/SeedContext.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.noise.paralithic.noise; - -import com.dfsek.paralithic.functions.dynamic.Context; - - -public class SeedContext implements Context { - private final long seed; - - public SeedContext(long seed) { - this.seed = seed; - } - - public long getSeed() { - return seed; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java deleted file mode 100644 index 7574f8938..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/DomainWarpedSampler.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class DomainWarpedSampler implements NoiseSampler { - private final NoiseSampler function; - private final NoiseSampler warp; - private final double amplitude; - - public DomainWarpedSampler(NoiseSampler function, NoiseSampler warp, double amplitude) { - this.function = function; - this.warp = warp; - this.amplitude = amplitude; - } - - @Override - public double getNoiseSeeded(long seed, double x, double y) { - return function.getNoiseSeeded(seed++, - x + warp.getNoiseSeeded(seed++, x, y) * amplitude, - y + warp.getNoiseSeeded(seed, x, y) * amplitude - ); - } - - @Override - public double getNoiseSeeded(long seed, double x, double y, double z) { - return function.getNoiseSeeded(seed++, - x + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, - y + warp.getNoiseSeeded(seed++, x, y, z) * amplitude, - z + warp.getNoiseSeeded(seed, x, y, z) * amplitude - ); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java deleted file mode 100644 index 2c64a954d..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/ImageSampler.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers; - -import net.jafama.FastMath; - -import java.awt.image.BufferedImage; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class ImageSampler implements NoiseSampler { - private final BufferedImage image; - private final Channel channel; - - private final double frequency; - - public ImageSampler(BufferedImage image, Channel channel, double frequency) { - this.image = image; - this.channel = channel; - this.frequency = frequency; - } - - @Override - public double getNoiseSeeded(long seed, double x, double y) { - return ((channel.getChannel(image.getRGB(FastMath.floorMod(FastMath.floorToInt(x * frequency), image.getWidth()), - FastMath.floorMod(FastMath.floorToInt(y * frequency), image.getHeight()))) / 255D) - 0.5) * - 2; - } - - @Override - public double getNoiseSeeded(long seed, double x, double y, double z) { - return getNoiseSeeded(seed, x, y); - } - - public enum Channel { - RED { - @Override - public int getChannel(int mashed) { - return (mashed >> 16) & 0xff; - } - }, - GREEN { - @Override - public int getChannel(int mashed) { - return (mashed >> 8) & 0xff; - } - }, - BLUE { - @Override - public int getChannel(int mashed) { - return mashed & 0xff; - } - }, - GRAYSCALE { - @Override - public int getChannel(int mashed) { - return (RED.getChannel(mashed) + GREEN.getChannel(mashed) + BLUE.getChannel(mashed)) / 3; - } - }, - ALPHA { - @Override - public int getChannel(int mashed) { - return (mashed >> 24) & 0xff; - } - }; - - public abstract int getChannel(int mashed); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java deleted file mode 100644 index 23266b3dc..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/KernelSampler.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class KernelSampler implements NoiseSampler { - private final double[][] kernel; - private final NoiseSampler in; - private double frequency = 1; - - public KernelSampler(double[][] kernel, NoiseSampler in) { - this.kernel = kernel; - this.in = in; - } - - public void setFrequency(double frequency) { - this.frequency = frequency; - } - - @Override - public double getNoiseSeeded(long seed, double x, double y) { - x *= frequency; - y *= frequency; - double accumulator = 0; - - for(int kx = 0; kx < kernel.length; kx++) { - for(int ky = 0; ky < kernel[kx].length; ky++) { - accumulator += in.getNoiseSeeded(seed, x + kx, y + ky) * kernel[kx][ky]; - } - } - - return accumulator; - } - - @Override - public double getNoiseSeeded(long seed, double x, double y, double z) { - x *= frequency; - y *= frequency; - z *= frequency; - double accumulator = 0; - - for(int kx = 0; kx < kernel.length; kx++) { - for(int ky = 0; ky < kernel[kx].length; ky++) { - accumulator += in.getNoiseSeeded(seed, x + kx, y, z + ky) * kernel[kx][ky]; - } - } - - return accumulator; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java deleted file mode 100644 index c5ed8ea3e..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/CellularSampler.java +++ /dev/null @@ -1,537 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - -import com.dfsek.terra.addons.noise.samplers.noise.simplex.OpenSimplex2Sampler; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -/** - * NoiseSampler implementation for Cellular (Voronoi/Worley) Noise. - */ -public class CellularSampler extends NoiseFunction { - private static final double[] RAND_VECS_3D = { - -0.7292736885d, -0.6618439697d, 0.1735581948d, 0, 0.790292081d, -0.5480887466d, -0.2739291014d, 0, 0.7217578935d, 0.6226212466d, - -0.3023380997d, 0, 0.565683137d, -0.8208298145d, -0.0790000257d, 0, 0.760049034d, -0.5555979497d, -0.3370999617d, 0, - 0.3713945616d, 0.5011264475d, 0.7816254623d, 0, -0.1277062463d, -0.4254438999d, -0.8959289049d, 0, -0.2881560924d, - -0.5815838982d, 0.7607405838d, 0, 0.5849561111d, -0.662820239d, -0.4674352136d, 0, 0.3307171178d, 0.0391653737d, 0.94291689d, 0, - 0.8712121778d, -0.4113374369d, -0.2679381538d, 0, 0.580981015d, 0.7021915846d, 0.4115677815d, 0, 0.503756873d, 0.6330056931d, - -0.5878203852d, 0, 0.4493712205d, 0.601390195d, 0.6606022552d, 0, -0.6878403724d, 0.09018890807d, -0.7202371714d, 0, - -0.5958956522d, -0.6469350577d, 0.475797649d, 0, -0.5127052122d, 0.1946921978d, -0.8361987284d, 0, -0.9911507142d, - -0.05410276466d, -0.1212153153d, 0, -0.2149721042d, 0.9720882117d, -0.09397607749d, 0, -0.7518650936d, -0.5428057603d, - 0.3742469607d, 0, 0.5237068895d, 0.8516377189d, -0.02107817834d, 0, 0.6333504779d, 0.1926167129d, -0.7495104896d, 0, - -0.06788241606d, 0.3998305789d, 0.9140719259d, 0, -0.5538628599d, -0.4729896695d, -0.6852128902d, 0, -0.7261455366d, - -0.5911990757d, 0.3509933228d, 0, -0.9229274737d, -0.1782808786d, 0.3412049336d, 0, -0.6968815002d, 0.6511274338d, - 0.3006480328d, 0, 0.9608044783d, -0.2098363234d, -0.1811724921d, 0, 0.06817146062d, -0.9743405129d, 0.2145069156d, 0, - -0.3577285196d, -0.6697087264d, -0.6507845481d, 0, -0.1868621131d, 0.7648617052d, -0.6164974636d, 0, -0.6541697588d, - 0.3967914832d, 0.6439087246d, 0, 0.6993340405d, -0.6164538506d, 0.3618239211d, 0, -0.1546665739d, 0.6291283928d, 0.7617583057d, - 0, -0.6841612949d, -0.2580482182d, -0.6821542638d, 0, 0.5383980957d, 0.4258654885d, 0.7271630328d, 0, -0.5026987823d, - -0.7939832935d, -0.3418836993d, 0, 0.3202971715d, 0.2834415347d, 0.9039195862d, 0, 0.8683227101d, -0.0003762656404d, - -0.4959995258d, 0, 0.791120031d, -0.08511045745d, 0.6057105799d, 0, -0.04011016052d, -0.4397248749d, 0.8972364289d, 0, - 0.9145119872d, 0.3579346169d, -0.1885487608d, 0, -0.9612039066d, -0.2756484276d, 0.01024666929d, 0, 0.6510361721d, - -0.2877799159d, -0.7023778346d, 0, -0.2041786351d, 0.7365237271d, 0.644859585d, 0, -0.7718263711d, 0.3790626912d, 0.5104855816d, - 0, -0.3060082741d, -0.7692987727d, 0.5608371729d, 0, 0.454007341d, -0.5024843065d, 0.7357899537d, 0, 0.4816795475d, - 0.6021208291d, -0.6367380315d, 0, 0.6961980369d, -0.3222197429d, 0.641469197d, 0, -0.6532160499d, -0.6781148932d, 0.3368515753d, - 0, 0.5089301236d, -0.6154662304d, -0.6018234363d, 0, -0.1635919754d, -0.9133604627d, -0.372840892d, 0, 0.52408019d, - -0.8437664109d, 0.1157505864d, 0, 0.5902587356d, 0.4983817807d, -0.6349883666d, 0, 0.5863227872d, 0.494764745d, 0.6414307729d, - 0, 0.6779335087d, 0.2341345225d, 0.6968408593d, 0, 0.7177054546d, -0.6858979348d, 0.120178631d, 0, -0.5328819713d, - -0.5205125012d, 0.6671608058d, 0, -0.8654874251d, -0.0700727088d, -0.4960053754d, 0, -0.2861810166d, 0.7952089234d, - 0.5345495242d, 0, -0.04849529634d, 0.9810836427d, -0.1874115585d, 0, -0.6358521667d, 0.6058348682d, 0.4781800233d, 0, - 0.6254794696d, -0.2861619734d, 0.7258696564d, 0, -0.2585259868d, 0.5061949264d, -0.8227581726d, 0, 0.02136306781d, - 0.5064016808d, -0.8620330371d, 0, 0.200111773d, 0.8599263484d, 0.4695550591d, 0, 0.4743561372d, 0.6014985084d, -0.6427953014d, - 0, 0.6622993731d, -0.5202474575d, -0.5391679918d, 0, 0.08084972818d, -0.6532720452d, 0.7527940996d, 0, -0.6893687501d, - 0.0592860349d, 0.7219805347d, 0, -0.1121887082d, -0.9673185067d, 0.2273952515d, 0, 0.7344116094d, 0.5979668656d, -0.3210532909d, - 0, 0.5789393465d, -0.2488849713d, 0.7764570201d, 0, 0.6988182827d, 0.3557169806d, -0.6205791146d, 0, -0.8636845529d, - -0.2748771249d, -0.4224826141d, 0, -0.4247027957d, -0.4640880967d, 0.777335046d, 0, 0.5257722489d, -0.8427017621d, - 0.1158329937d, 0, 0.9343830603d, 0.316302472d, -0.1639543925d, 0, -0.1016836419d, -0.8057303073d, -0.5834887393d, 0, - -0.6529238969d, 0.50602126d, -0.5635892736d, 0, -0.2465286165d, -0.9668205684d, -0.06694497494d, 0, -0.9776897119d, - -0.2099250524d, -0.007368825344d, 0, 0.7736893337d, 0.5734244712d, 0.2694238123d, 0, -0.6095087895d, 0.4995678998d, - 0.6155736747d, 0, 0.5794535482d, 0.7434546771d, 0.3339292269d, 0, -0.8226211154d, 0.08142581855d, 0.5627293636d, 0, - -0.510385483d, 0.4703667658d, 0.7199039967d, 0, -0.5764971849d, -0.07231656274d, -0.8138926898d, 0, 0.7250628871d, - 0.3949971505d, -0.5641463116d, 0, -0.1525424005d, 0.4860840828d, -0.8604958341d, 0, -0.5550976208d, -0.4957820792d, - 0.667882296d, 0, -0.1883614327d, 0.9145869398d, 0.357841725d, 0, 0.7625556724d, -0.5414408243d, -0.3540489801d, 0, - -0.5870231946d, -0.3226498013d, -0.7424963803d, 0, 0.3051124198d, 0.2262544068d, -0.9250488391d, 0, 0.6379576059d, 0.577242424d, - -0.5097070502d, 0, -0.5966775796d, 0.1454852398d, -0.7891830656d, 0, -0.658330573d, 0.6555487542d, -0.3699414651d, 0, - 0.7434892426d, 0.2351084581d, 0.6260573129d, 0, 0.5562114096d, 0.8264360377d, -0.0873632843d, 0, -0.3028940016d, -0.8251527185d, - 0.4768419182d, 0, 0.1129343818d, -0.985888439d, -0.1235710781d, 0, 0.5937652891d, -0.5896813806d, 0.5474656618d, 0, - 0.6757964092d, -0.5835758614d, -0.4502648413d, 0, 0.7242302609d, -0.1152719764d, 0.6798550586d, 0, -0.9511914166d, - 0.0753623979d, -0.2992580792d, 0, 0.2539470961d, -0.1886339355d, 0.9486454084d, 0, 0.571433621d, -0.1679450851d, -0.8032795685d, - 0, -0.06778234979d, 0.3978269256d, 0.9149531629d, 0, 0.6074972649d, 0.733060024d, -0.3058922593d, 0, -0.5435478392d, - 0.1675822484d, 0.8224791405d, 0, -0.5876678086d, -0.3380045064d, -0.7351186982d, 0, -0.7967562402d, 0.04097822706d, - -0.6029098428d, 0, -0.1996350917d, 0.8706294745d, 0.4496111079d, 0, -0.02787660336d, -0.9106232682d, -0.4122962022d, 0, - -0.7797625996d, -0.6257634692d, 0.01975775581d, 0, -0.5211232846d, 0.7401644346d, -0.4249554471d, 0, 0.8575424857d, - 0.4053272873d, -0.3167501783d, 0, 0.1045223322d, 0.8390195772d, -0.5339674439d, 0, 0.3501822831d, 0.9242524096d, -0.1520850155d, - 0, 0.1987849858d, 0.07647613266d, 0.9770547224d, 0, 0.7845996363d, 0.6066256811d, -0.1280964233d, 0, 0.09006737436d, - -0.9750989929d, -0.2026569073d, 0, -0.8274343547d, -0.542299559d, 0.1458203587d, 0, -0.3485797732d, -0.415802277d, 0.840000362d, - 0, -0.2471778936d, -0.7304819962d, -0.6366310879d, 0, -0.3700154943d, 0.8577948156d, 0.3567584454d, 0, 0.5913394901d, - -0.548311967d, -0.5913303597d, 0, 0.1204873514d, -0.7626472379d, -0.6354935001d, 0, 0.616959265d, 0.03079647928d, 0.7863922953d, - 0, 0.1258156836d, -0.6640829889d, -0.7369967419d, 0, -0.6477565124d, -0.1740147258d, -0.7417077429d, 0, 0.6217889313d, - -0.7804430448d, -0.06547655076d, 0, 0.6589943422d, -0.6096987708d, 0.4404473475d, 0, -0.2689837504d, -0.6732403169d, - -0.6887635427d, 0, -0.3849775103d, 0.5676542638d, 0.7277093879d, 0, 0.5754444408d, 0.8110471154d, -0.1051963504d, 0, - 0.9141593684d, 0.3832947817d, 0.131900567d, 0, -0.107925319d, 0.9245493968d, 0.3654593525d, 0, 0.377977089d, 0.3043148782d, - 0.8743716458d, 0, -0.2142885215d, -0.8259286236d, 0.5214617324d, 0, 0.5802544474d, 0.4148098596d, -0.7008834116d, 0, - -0.1982660881d, 0.8567161266d, -0.4761596756d, 0, -0.03381553704d, 0.3773180787d, -0.9254661404d, 0, -0.6867922841d, - -0.6656597827d, 0.2919133642d, 0, 0.7731742607d, -0.2875793547d, -0.5652430251d, 0, -0.09655941928d, 0.9193708367d, - -0.3813575004d, 0, 0.2715702457d, -0.9577909544d, -0.09426605581d, 0, 0.2451015704d, -0.6917998565d, -0.6792188003d, 0, - 0.977700782d, -0.1753855374d, 0.1155036542d, 0, -0.5224739938d, 0.8521606816d, 0.02903615945d, 0, -0.7734880599d, - -0.5261292347d, 0.3534179531d, 0, -0.7134492443d, -0.269547243d, 0.6467878011d, 0, 0.1644037271d, 0.5105846203d, -0.8439637196d, - 0, 0.6494635788d, 0.05585611296d, 0.7583384168d, 0, -0.4711970882d, 0.5017280509d, -0.7254255765d, 0, -0.6335764307d, - -0.2381686273d, -0.7361091029d, 0, -0.9021533097d, -0.270947803d, -0.3357181763d, 0, -0.3793711033d, 0.872258117d, - 0.3086152025d, 0, -0.6855598966d, -0.3250143309d, 0.6514394162d, 0, 0.2900942212d, -0.7799057743d, -0.5546100667d, 0, - -0.2098319339d, 0.85037073d, 0.4825351604d, 0, -0.4592603758d, 0.6598504336d, -0.5947077538d, 0, 0.8715945488d, 0.09616365406d, - -0.4807031248d, 0, -0.6776666319d, 0.7118504878d, -0.1844907016d, 0, 0.7044377633d, 0.312427597d, 0.637304036d, 0, - -0.7052318886d, -0.2401093292d, -0.6670798253d, 0, 0.081921007d, -0.7207336136d, -0.6883545647d, 0, -0.6993680906d, - -0.5875763221d, -0.4069869034d, 0, -0.1281454481d, 0.6419895885d, 0.7559286424d, 0, -0.6337388239d, -0.6785471501d, - -0.3714146849d, 0, 0.5565051903d, -0.2168887573d, -0.8020356851d, 0, -0.5791554484d, 0.7244372011d, -0.3738578718d, 0, - 0.1175779076d, -0.7096451073d, 0.6946792478d, 0, -0.6134619607d, 0.1323631078d, 0.7785527795d, 0, 0.6984635305d, - -0.02980516237d, -0.715024719d, 0, 0.8318082963d, -0.3930171956d, 0.3919597455d, 0, 0.1469576422d, 0.05541651717d, - -0.9875892167d, 0, 0.708868575d, -0.2690503865d, 0.6520101478d, 0, 0.2726053183d, 0.67369766d, -0.68688995d, 0, -0.6591295371d, - 0.3035458599d, -0.6880466294d, 0, 0.4815131379d, -0.7528270071d, 0.4487723203d, 0, 0.9430009463d, 0.1675647412d, -0.2875261255d, - 0, 0.434802957d, 0.7695304522d, -0.4677277752d, 0, 0.3931996188d, 0.594473625d, 0.7014236729d, 0, 0.7254336655d, -0.603925654d, - 0.3301814672d, 0, 0.7590235227d, -0.6506083235d, 0.02433313207d, 0, -0.8552768592d, -0.3430042733d, 0.3883935666d, 0, - -0.6139746835d, 0.6981725247d, 0.3682257648d, 0, -0.7465905486d, -0.5752009504d, 0.3342849376d, 0, 0.5730065677d, 0.810555537d, - -0.1210916791d, 0, -0.9225877367d, -0.3475211012d, -0.167514036d, 0, -0.7105816789d, -0.4719692027d, -0.5218416899d, 0, - -0.08564609717d, 0.3583001386d, 0.929669703d, 0, -0.8279697606d, -0.2043157126d, 0.5222271202d, 0, 0.427944023d, 0.278165994d, - 0.8599346446d, 0, 0.5399079671d, -0.7857120652d, -0.3019204161d, 0, 0.5678404253d, -0.5495413974d, -0.6128307303d, 0, - -0.9896071041d, 0.1365639107d, -0.04503418428d, 0, -0.6154342638d, -0.6440875597d, 0.4543037336d, 0, 0.1074204368d, - -0.7946340692d, 0.5975094525d, 0, -0.3595449969d, -0.8885529948d, 0.28495784d, 0, -0.2180405296d, 0.1529888965d, 0.9638738118d, - 0, -0.7277432317d, -0.6164050508d, -0.3007234646d, 0, 0.7249729114d, -0.00669719484d, 0.6887448187d, 0, -0.5553659455d, - -0.5336586252d, 0.6377908264d, 0, 0.5137558015d, 0.7976208196d, -0.3160000073d, 0, -0.3794024848d, 0.9245608561d, - -0.03522751494d, 0, 0.8229248658d, 0.2745365933d, -0.4974176556d, 0, -0.5404114394d, 0.6091141441d, 0.5804613989d, 0, - 0.8036581901d, -0.2703029469d, 0.5301601931d, 0, 0.6044318879d, 0.6832968393d, 0.4095943388d, 0, 0.06389988817d, 0.9658208605d, - -0.2512108074d, 0, 0.1087113286d, 0.7402471173d, -0.6634877936d, 0, -0.713427712d, -0.6926784018d, 0.1059128479d, 0, - 0.6458897819d, -0.5724548511d, -0.5050958653d, 0, -0.6553931414d, 0.7381471625d, 0.159995615d, 0, 0.3910961323d, 0.9188871375d, - -0.05186755998d, 0, -0.4879022471d, -0.5904376907d, 0.6429111375d, 0, 0.6014790094d, 0.7707441366d, -0.2101820095d, 0, - -0.5677173047d, 0.7511360995d, 0.3368851762d, 0, 0.7858573506d, 0.226674665d, 0.5753666838d, 0, -0.4520345543d, -0.604222686d, - -0.6561857263d, 0, 0.002272116345d, 0.4132844051d, -0.9105991643d, 0, -0.5815751419d, -0.5162925989d, 0.6286591339d, 0, - -0.03703704785d, 0.8273785755d, 0.5604221175d, 0, -0.5119692504d, 0.7953543429d, -0.3244980058d, 0, -0.2682417366d, - -0.9572290247d, -0.1084387619d, 0, -0.2322482736d, -0.9679131102d, -0.09594243324d, 0, 0.3554328906d, -0.8881505545d, - 0.2913006227d, 0, 0.7346520519d, -0.4371373164d, 0.5188422971d, 0, 0.9985120116d, 0.04659011161d, -0.02833944577d, 0, - -0.3727687496d, -0.9082481361d, 0.1900757285d, 0, 0.91737377d, -0.3483642108d, 0.1925298489d, 0, 0.2714911074d, 0.4147529736d, - -0.8684886582d, 0, 0.5131763485d, -0.7116334161d, 0.4798207128d, 0, -0.8737353606d, 0.18886992d, -0.4482350644d, 0, - 0.8460043821d, -0.3725217914d, 0.3814499973d, 0, 0.8978727456d, -0.1780209141d, -0.4026575304d, 0, 0.2178065647d, - -0.9698322841d, -0.1094789531d, 0, -0.1518031304d, -0.7788918132d, -0.6085091231d, 0, -0.2600384876d, -0.4755398075d, - -0.8403819825d, 0, 0.572313509d, -0.7474340931d, -0.3373418503d, 0, -0.7174141009d, 0.1699017182d, -0.6756111411d, 0, - -0.684180784d, 0.02145707593d, -0.7289967412d, 0, -0.2007447902d, 0.06555605789d, -0.9774476623d, 0, -0.1148803697d, - -0.8044887315d, 0.5827524187d, 0, -0.7870349638d, 0.03447489231d, 0.6159443543d, 0, -0.2015596421d, 0.6859872284d, - 0.6991389226d, 0, -0.08581082512d, -0.10920836d, -0.9903080513d, 0, 0.5532693395d, 0.7325250401d, -0.396610771d, 0, - -0.1842489331d, -0.9777375055d, -0.1004076743d, 0, 0.0775473789d, -0.9111505856d, 0.4047110257d, 0, 0.1399838409d, - 0.7601631212d, -0.6344734459d, 0, 0.4484419361d, -0.845289248d, 0.2904925424d, 0 - }; - - private static final double[] RAND_VECS_2D = { - -0.2700222198d, -0.9628540911d, 0.3863092627d, -0.9223693152d, 0.04444859006d, -0.999011673d, -0.5992523158d, -0.8005602176d, - -0.7819280288d, 0.6233687174d, 0.9464672271d, 0.3227999196d, -0.6514146797d, -0.7587218957d, 0.9378472289d, 0.347048376d, - -0.8497875957d, -0.5271252623d, -0.879042592d, 0.4767432447d, -0.892300288d, -0.4514423508d, -0.379844434d, -0.9250503802d, - -0.9951650832d, 0.0982163789d, 0.7724397808d, -0.6350880136d, 0.7573283322d, -0.6530343002d, -0.9928004525d, -0.119780055d, - -0.0532665713d, 0.9985803285d, 0.9754253726d, -0.2203300762d, -0.7665018163d, 0.6422421394d, 0.991636706d, 0.1290606184d, - -0.994696838d, 0.1028503788d, -0.5379205513d, -0.84299554d, 0.5022815471d, -0.8647041387d, 0.4559821461d, -0.8899889226d, - -0.8659131224d, -0.5001944266d, 0.0879458407d, -0.9961252577d, -0.5051684983d, 0.8630207346d, 0.7753185226d, -0.6315704146d, - -0.6921944612d, 0.7217110418d, -0.5191659449d, -0.8546734591d, 0.8978622882d, -0.4402764035d, -0.1706774107d, 0.9853269617d, - -0.9353430106d, -0.3537420705d, -0.9992404798d, 0.03896746794d, -0.2882064021d, -0.9575683108d, -0.9663811329d, 0.2571137995d, - -0.8759714238d, -0.4823630009d, -0.8303123018d, -0.5572983775d, 0.05110133755d, -0.9986934731d, -0.8558373281d, -0.5172450752d, - 0.09887025282d, 0.9951003332d, 0.9189016087d, 0.3944867976d, -0.2439375892d, -0.9697909324d, -0.8121409387d, -0.5834613061d, - -0.9910431363d, 0.1335421355d, 0.8492423985d, -0.5280031709d, -0.9717838994d, -0.2358729591d, 0.9949457207d, 0.1004142068d, - 0.6241065508d, -0.7813392434d, 0.662910307d, 0.7486988212d, -0.7197418176d, 0.6942418282d, -0.8143370775d, -0.5803922158d, - 0.104521054d, -0.9945226741d, -0.1065926113d, -0.9943027784d, 0.445799684d, -0.8951327509d, 0.105547406d, 0.9944142724d, - -0.992790267d, 0.1198644477d, -0.8334366408d, 0.552615025d, 0.9115561563d, -0.4111755999d, 0.8285544909d, -0.5599084351d, - 0.7217097654d, -0.6921957921d, 0.4940492677d, -0.8694339084d, -0.3652321272d, -0.9309164803d, -0.9696606758d, 0.2444548501d, - 0.08925509731d, -0.996008799d, 0.5354071276d, -0.8445941083d, -0.1053576186d, 0.9944343981d, -0.9890284586d, 0.1477251101d, - 0.004856104961d, 0.9999882091d, 0.9885598478d, 0.1508291331d, 0.9286129562d, -0.3710498316d, -0.5832393863d, -0.8123003252d, - 0.3015207509d, 0.9534596146d, -0.9575110528d, 0.2883965738d, 0.9715802154d, -0.2367105511d, 0.229981792d, 0.9731949318d, - 0.955763816d, -0.2941352207d, 0.740956116d, 0.6715534485d, -0.9971513787d, -0.07542630764d, 0.6905710663d, -0.7232645452d, - -0.290713703d, -0.9568100872d, 0.5912777791d, -0.8064679708d, -0.9454592212d, -0.325740481d, 0.6664455681d, 0.74555369d, - 0.6236134912d, 0.7817328275d, 0.9126993851d, -0.4086316587d, -0.8191762011d, 0.5735419353d, -0.8812745759d, -0.4726046147d, - 0.9953313627d, 0.09651672651d, 0.9855650846d, -0.1692969699d, -0.8495980887d, 0.5274306472d, 0.6174853946d, -0.7865823463d, - 0.8508156371d, 0.52546432d, 0.9985032451d, -0.05469249926d, 0.1971371563d, -0.9803759185d, 0.6607855748d, -0.7505747292d, - -0.03097494063d, 0.9995201614d, -0.6731660801d, 0.739491331d, -0.7195018362d, -0.6944905383d, 0.9727511689d, 0.2318515979d, - 0.9997059088d, -0.0242506907d, 0.4421787429d, -0.8969269532d, 0.9981350961d, -0.061043673d, -0.9173660799d, -0.3980445648d, - -0.8150056635d, -0.5794529907d, -0.8789331304d, 0.4769450202d, 0.0158605829d, 0.999874213d, -0.8095464474d, 0.5870558317d, - -0.9165898907d, -0.3998286786d, -0.8023542565d, 0.5968480938d, -0.5176737917d, 0.8555780767d, -0.8154407307d, -0.5788405779d, - 0.4022010347d, -0.9155513791d, -0.9052556868d, -0.4248672045d, 0.7317445619d, 0.6815789728d, -0.5647632201d, -0.8252529947d, - -0.8403276335d, -0.5420788397d, -0.9314281527d, 0.363925262d, 0.5238198472d, 0.8518290719d, 0.7432803869d, -0.6689800195d, - -0.985371561d, -0.1704197369d, 0.4601468731d, 0.88784281d, 0.825855404d, 0.5638819483d, 0.6182366099d, 0.7859920446d, - 0.8331502863d, -0.553046653d, 0.1500307506d, 0.9886813308d, -0.662330369d, -0.7492119075d, -0.668598664d, 0.743623444d, - 0.7025606278d, 0.7116238924d, -0.5419389763d, -0.8404178401d, -0.3388616456d, 0.9408362159d, 0.8331530315d, 0.5530425174d, - -0.2989720662d, -0.9542618632d, 0.2638522993d, 0.9645630949d, 0.124108739d, -0.9922686234d, -0.7282649308d, -0.6852956957d, - 0.6962500149d, 0.7177993569d, -0.9183535368d, 0.3957610156d, -0.6326102274d, -0.7744703352d, -0.9331891859d, -0.359385508d, - -0.1153779357d, -0.9933216659d, 0.9514974788d, -0.3076565421d, -0.08987977445d, -0.9959526224d, 0.6678496916d, 0.7442961705d, - 0.7952400393d, -0.6062947138d, -0.6462007402d, -0.7631674805d, -0.2733598753d, 0.9619118351d, 0.9669590226d, -0.254931851d, - -0.9792894595d, 0.2024651934d, -0.5369502995d, -0.8436138784d, -0.270036471d, -0.9628500944d, -0.6400277131d, 0.7683518247d, - -0.7854537493d, -0.6189203566d, 0.06005905383d, -0.9981948257d, -0.02455770378d, 0.9996984141d, -0.65983623d, 0.751409442d, - -0.6253894466d, -0.7803127835d, -0.6210408851d, -0.7837781695d, 0.8348888491d, 0.5504185768d, -0.1592275245d, 0.9872419133d, - 0.8367622488d, 0.5475663786d, -0.8675753916d, -0.4973056806d, -0.2022662628d, -0.9793305667d, 0.9399189937d, 0.3413975472d, - 0.9877404807d, -0.1561049093d, -0.9034455656d, 0.4287028224d, 0.1269804218d, -0.9919052235d, -0.3819600854d, 0.924178821d, - 0.9754625894d, 0.2201652486d, -0.3204015856d, -0.9472818081d, -0.9874760884d, 0.1577687387d, 0.02535348474d, -0.9996785487d, - 0.4835130794d, -0.8753371362d, -0.2850799925d, -0.9585037287d, -0.06805516006d, -0.99768156d, -0.7885244045d, -0.6150034663d, - 0.3185392127d, -0.9479096845d, 0.8880043089d, 0.4598351306d, 0.6476921488d, -0.7619021462d, 0.9820241299d, 0.1887554194d, - 0.9357275128d, -0.3527237187d, -0.8894895414d, 0.4569555293d, 0.7922791302d, 0.6101588153d, 0.7483818261d, 0.6632681526d, - -0.7288929755d, -0.6846276581d, 0.8729032783d, -0.4878932944d, 0.8288345784d, 0.5594937369d, 0.08074567077d, 0.9967347374d, - 0.9799148216d, -0.1994165048d, -0.580730673d, -0.8140957471d, -0.4700049791d, -0.8826637636d, 0.2409492979d, 0.9705377045d, - 0.9437816757d, -0.3305694308d, -0.8927998638d, -0.4504535528d, -0.8069622304d, 0.5906030467d, 0.06258973166d, 0.9980393407d, - -0.9312597469d, 0.3643559849d, 0.5777449785d, 0.8162173362d, -0.3360095855d, -0.941858566d, 0.697932075d, -0.7161639607d, - -0.002008157227d, -0.9999979837d, -0.1827294312d, -0.9831632392d, -0.6523911722d, 0.7578824173d, -0.4302626911d, -0.9027037258d, - -0.9985126289d, -0.05452091251d, -0.01028102172d, -0.9999471489d, -0.4946071129d, 0.8691166802d, -0.2999350194d, 0.9539596344d, - 0.8165471961d, 0.5772786819d, 0.2697460475d, 0.962931498d, -0.7306287391d, -0.6827749597d, -0.7590952064d, -0.6509796216d, - -0.907053853d, 0.4210146171d, -0.5104861064d, -0.8598860013d, 0.8613350597d, 0.5080373165d, 0.5007881595d, -0.8655698812d, - -0.654158152d, 0.7563577938d, -0.8382755311d, -0.545246856d, 0.6940070834d, 0.7199681717d, 0.06950936031d, 0.9975812994d, - 0.1702942185d, -0.9853932612d, 0.2695973274d, 0.9629731466d, 0.5519612192d, -0.8338697815d, 0.225657487d, -0.9742067022d, - 0.4215262855d, -0.9068161835d, 0.4881873305d, -0.8727388672d, -0.3683854996d, -0.9296731273d, -0.9825390578d, 0.1860564427d, - 0.81256471d, 0.5828709909d, 0.3196460933d, -0.9475370046d, 0.9570913859d, 0.2897862643d, -0.6876655497d, -0.7260276109d, - -0.9988770922d, -0.047376731d, -0.1250179027d, 0.992154486d, -0.8280133617d, 0.560708367d, 0.9324863769d, -0.3612051451d, - 0.6394653183d, 0.7688199442d, -0.01623847064d, -0.9998681473d, -0.9955014666d, -0.09474613458d, -0.81453315d, 0.580117012d, - 0.4037327978d, -0.9148769469d, 0.9944263371d, 0.1054336766d, -0.1624711654d, 0.9867132919d, -0.9949487814d, -0.100383875d, - -0.6995302564d, 0.7146029809d, 0.5263414922d, -0.85027327d, -0.5395221479d, 0.841971408d, 0.6579370318d, 0.7530729462d, - 0.01426758847d, -0.9998982128d, -0.6734383991d, 0.7392433447d, 0.639412098d, -0.7688642071d, 0.9211571421d, 0.3891908523d, - -0.146637214d, -0.9891903394d, -0.782318098d, 0.6228791163d, -0.5039610839d, -0.8637263605d, -0.7743120191d, -0.6328039957d, - }; - - - private DistanceFunction distanceFunction = DistanceFunction.EuclideanSq; - private ReturnType returnType = ReturnType.Distance; - private double jitterModifier = 1.0; - - private NoiseSampler noiseLookup; - - public CellularSampler() { - noiseLookup = new OpenSimplex2Sampler(); - } - - public void setDistanceFunction(DistanceFunction distanceFunction) { - this.distanceFunction = distanceFunction; - } - - public void setJitterModifier(double jitterModifier) { - this.jitterModifier = jitterModifier; - } - - public void setNoiseLookup(NoiseSampler noiseLookup) { - this.noiseLookup = noiseLookup; - } - - public void setReturnType(ReturnType returnType) { - this.returnType = returnType; - } - - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int xr = fastRound(x); - int yr = fastRound(y); - - double distance0 = Double.MAX_VALUE; - double distance1 = Double.MAX_VALUE; - double distance2 = Double.MAX_VALUE; - - int closestHash = 0; - - double cellularJitter = 0.43701595 * jitterModifier; - - int xPrimed = (xr - 1) * PRIME_X; - int yPrimedBase = (yr - 1) * PRIME_Y; - - Vector2 center = new Vector2(x, y); - - switch(distanceFunction) { - default: - case Euclidean: - case EuclideanSq: - for(int xi = xr - 1; xi <= xr + 1; xi++) { - int yPrimed = yPrimedBase; - - for(int yi = yr - 1; yi <= yr + 1; yi++) { - int hash = hash(seed, xPrimed, yPrimed); - int idx = hash & (255 << 1); - - double vecX = (xi - x) + RAND_VECS_2D[idx] * cellularJitter; - double vecY = (yi - y) + RAND_VECS_2D[idx | 1] * cellularJitter; - - double newDistance = vecX * vecX + vecY * vecY; - - distance1 = fastMax(fastMin(distance1, newDistance), distance0); - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - center.setX((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency); - center.setZ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - break; - case Manhattan: - for(int xi = xr - 1; xi <= xr + 1; xi++) { - int yPrimed = yPrimedBase; - - for(int yi = yr - 1; yi <= yr + 1; yi++) { - int hash = hash(seed, xPrimed, yPrimed); - int idx = hash & (255 << 1); - - double vecX = (xi - x) + RAND_VECS_2D[idx] * cellularJitter; - double vecY = (yi - y) + RAND_VECS_2D[idx | 1] * cellularJitter; - - double newDistance = fastAbs(vecX) + fastAbs(vecY); - - distance1 = fastMax(fastMin(distance1, newDistance), distance0); - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - center.setX((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency); - center.setZ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - break; - case Hybrid: - for(int xi = xr - 1; xi <= xr + 1; xi++) { - int yPrimed = yPrimedBase; - - for(int yi = yr - 1; yi <= yr + 1; yi++) { - int hash = hash(seed, xPrimed, yPrimed); - int idx = hash & (255 << 1); - - double vecX = (xi - x) + RAND_VECS_2D[idx] * cellularJitter; - double vecY = (yi - y) + RAND_VECS_2D[idx | 1] * cellularJitter; - - double newDistance = (fastAbs(vecX) + fastAbs(vecY)) + (vecX * vecX + vecY * vecY); - - distance1 = fastMax(fastMin(distance1, newDistance), distance0); - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - center.setX((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency); - center.setZ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - break; - } - - if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { - distance0 = fastSqrt(distance0); - if(returnType != ReturnType.CellValue) { - distance1 = fastSqrt(distance1); - } - } - - return switch(returnType) { - case CellValue -> closestHash * (1 / 2147483648.0); - case Distance -> distance0 - 1; - case Distance2 -> distance1 - 1; - case Distance2Add -> (distance1 + distance0) * 0.5 - 1; - case Distance2Sub -> distance1 - distance0 - 1; - case Distance2Mul -> distance1 * distance0 * 0.5 - 1; - case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, center.getX(), center.getZ()); - case Distance3 -> distance2 - 1; - case Distance3Add -> (distance2 + distance0) * 0.5 - 1; - case Distance3Sub -> distance2 - distance0 - 1; - case Distance3Mul -> distance2 * distance0 - 1; - case Distance3Div -> distance0 / distance2 - 1; - }; - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - int xr = fastRound(x); - int yr = fastRound(y); - int zr = fastRound(z); - - double distance0 = Double.MAX_VALUE; - double distance1 = Double.MAX_VALUE; - double distance2 = Double.MAX_VALUE; - int closestHash = 0; - - double cellularJitter = 0.39614353 * jitterModifier; - - int xPrimed = (xr - 1) * PRIME_X; - int yPrimedBase = (yr - 1) * PRIME_Y; - int zPrimedBase = (zr - 1) * PRIME_Z; - - Vector3 center = new Vector3(x, y, z); - - switch(distanceFunction) { - case Euclidean: - case EuclideanSq: - for(int xi = xr - 1; xi <= xr + 1; xi++) { - int yPrimed = yPrimedBase; - - for(int yi = yr - 1; yi <= yr + 1; yi++) { - int zPrimed = zPrimedBase; - - for(int zi = zr - 1; zi <= zr + 1; zi++) { - int hash = hash(seed, xPrimed, yPrimed, zPrimed); - int idx = hash & (255 << 2); - - double vecX = (xi - x) + RAND_VECS_3D[idx] * cellularJitter; - double vecY = (yi - y) + RAND_VECS_3D[idx | 1] * cellularJitter; - double vecZ = (zi - z) + RAND_VECS_3D[idx | 2] * cellularJitter; - - double newDistance = vecX * vecX + vecY * vecY + vecZ * vecZ; - - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - center.setX((xi + RAND_VECS_3D[idx] * cellularJitter) / frequency); - center.setY((yi + RAND_VECS_3D[idx | 1] * cellularJitter) / frequency); - center.setZ((zi + RAND_VECS_3D[idx | 2] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - zPrimed += PRIME_Z; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - break; - case Manhattan: - for(int xi = xr - 1; xi <= xr + 1; xi++) { - int yPrimed = yPrimedBase; - - for(int yi = yr - 1; yi <= yr + 1; yi++) { - int zPrimed = zPrimedBase; - - for(int zi = zr - 1; zi <= zr + 1; zi++) { - int hash = hash(seed, xPrimed, yPrimed, zPrimed); - int idx = hash & (255 << 2); - - double vecX = (xi - x) + RAND_VECS_3D[idx] * cellularJitter; - double vecY = (yi - y) + RAND_VECS_3D[idx | 1] * cellularJitter; - double vecZ = (zi - z) + RAND_VECS_3D[idx | 2] * cellularJitter; - - double newDistance = fastAbs(vecX) + fastAbs(vecY) + fastAbs(vecZ); - - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - center.setX((xi + RAND_VECS_3D[idx] * cellularJitter) / frequency); - center.setY((yi + RAND_VECS_3D[idx | 1] * cellularJitter) / frequency); - center.setZ((zi + RAND_VECS_3D[idx | 2] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - zPrimed += PRIME_Z; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - break; - case Hybrid: - for(int xi = xr - 1; xi <= xr + 1; xi++) { - int yPrimed = yPrimedBase; - - for(int yi = yr - 1; yi <= yr + 1; yi++) { - int zPrimed = zPrimedBase; - - for(int zi = zr - 1; zi <= zr + 1; zi++) { - int hash = hash(seed, xPrimed, yPrimed, zPrimed); - int idx = hash & (255 << 2); - - double vecX = (xi - x) + RAND_VECS_3D[idx] * cellularJitter; - double vecY = (yi - y) + RAND_VECS_3D[idx | 1] * cellularJitter; - double vecZ = (zi - z) + RAND_VECS_3D[idx | 2] * cellularJitter; - - double newDistance = (fastAbs(vecX) + fastAbs(vecY) + fastAbs(vecZ)) + - (vecX * vecX + vecY * vecY + vecZ * vecZ); - - distance1 = fastMax(fastMin(distance1, newDistance), distance0); - if(newDistance < distance0) { - distance0 = newDistance; - closestHash = hash; - center.setX((xi + RAND_VECS_3D[idx] * cellularJitter) / frequency); - center.setY((yi + RAND_VECS_3D[idx | 1] * cellularJitter) / frequency); - center.setZ((zi + RAND_VECS_3D[idx | 2] * cellularJitter) / frequency); - } else if(newDistance < distance1) { - distance2 = distance1; - distance1 = newDistance; - } else if(newDistance < distance2) { - distance2 = newDistance; - } - zPrimed += PRIME_Z; - } - yPrimed += PRIME_Y; - } - xPrimed += PRIME_X; - } - break; - default: - break; - } - - if(distanceFunction == DistanceFunction.Euclidean && returnType != ReturnType.CellValue) { - distance0 = fastSqrt(distance0); - if(returnType != ReturnType.CellValue) { - distance1 = fastSqrt(distance1); - } - } - - return switch(returnType) { - case CellValue -> closestHash * (1 / 2147483648.0); - case Distance -> distance0 - 1; - case Distance2 -> distance1 - 1; - case Distance2Add -> (distance1 + distance0) * 0.5 - 1; - case Distance2Sub -> distance1 - distance0 - 1; - case Distance2Mul -> distance1 * distance0 * 0.5 - 1; - case Distance2Div -> distance0 / distance1 - 1; - case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, center.getX(), center.getY(), center.getZ()); - case Distance3 -> distance2 - 1; - case Distance3Add -> (distance2 + distance0) * 0.5 - 1; - case Distance3Sub -> distance2 - distance0 - 1; - case Distance3Mul -> distance2 * distance0 - 1; - case Distance3Div -> distance0 / distance2 - 1; - }; - } - - public enum DistanceFunction { - Euclidean, - EuclideanSq, - Manhattan, - Hybrid - } - - - public enum ReturnType { - CellValue, - Distance, - Distance2, - Distance2Add, - Distance2Sub, - Distance2Mul, - Distance2Div, - NoiseLookup, - Distance3, - Distance3Add, - Distance3Sub, - Distance3Mul, - Distance3Div - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java deleted file mode 100644 index eaea1382d..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ConstantSampler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - -/** - * Sampler3D implementation that returns a constant. - */ -public class ConstantSampler extends NoiseFunction { - private final double constant; - - public ConstantSampler(double constant) { - this.constant = constant; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - return constant; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return constant; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java deleted file mode 100644 index 01011f58e..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/ExpressionFunction.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - -import com.dfsek.paralithic.Expression; -import com.dfsek.paralithic.eval.parser.Parser; -import com.dfsek.paralithic.eval.parser.Scope; -import com.dfsek.paralithic.eval.tokenizer.ParseException; -import com.dfsek.paralithic.functions.Function; - -import java.util.Map; - -import com.dfsek.terra.addons.noise.paralithic.noise.SeedContext; - - -/** - * NoiseSampler implementation using a Paralithic expression. - */ -public class ExpressionFunction extends NoiseFunction { - private final Expression expression; - - public ExpressionFunction(Map functions, String eq, Map vars) throws ParseException { - Parser p = new Parser(); - Scope scope = new Scope(); - - scope.addInvocationVariable("x"); - scope.addInvocationVariable("y"); - scope.addInvocationVariable("z"); - - vars.forEach(scope::create); - - functions.forEach(p::registerFunction); - - expression = p.parse(eq, scope); - frequency = 1; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - return expression.evaluate(new SeedContext(seed), x, 0, y); - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return expression.evaluate(new SeedContext(seed), x, y, z); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java deleted file mode 100644 index fbe7afdae..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/GaborNoiseSampler.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - -import net.jafama.FastMath; - -import com.dfsek.terra.addons.noise.samplers.noise.random.WhiteNoiseSampler; - - -public class GaborNoiseSampler extends NoiseFunction { - private final WhiteNoiseSampler rand; - private double k = 1.0; - private double a = 0.1; - private double f0 = 0.625; - private double kernelRadius = (FastMath.sqrt(-FastMath.log(0.05) / Math.PI) / a); - private double omega0 = Math.PI * 0.25; - private boolean isotropic = true; - private double impulsesPerKernel = 64d; - private double impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); - private double impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; - private double g = FastMath.exp(-impulsesPerCell); - - - public GaborNoiseSampler() { - rand = new WhiteNoiseSampler(); - } - - private void recalculateRadiusAndDensity() { - kernelRadius = (FastMath.sqrt(-FastMath.log(0.05) / Math.PI) / this.a); - impulseDensity = (impulsesPerKernel / (Math.PI * kernelRadius * kernelRadius)); - impulsesPerCell = impulseDensity * kernelRadius * kernelRadius; - g = FastMath.exp(-impulsesPerCell); - } - - private double gaborNoise(long seed, double x, double y) { - x /= kernelRadius; - y /= kernelRadius; - int xi = fastFloor(x); - int yi = fastFloor(y); - double xf = x - xi; - double yf = y - yi; - double noise = 0; - for(int dx = -1; dx <= 1; dx++) { - for(int dz = -1; dz <= 1; dz++) { - noise += calculateCell(seed, xi + dx, yi + dz, xf - dx, yf - dz); - } - } - return noise; - } - - private double calculateCell(long seed, int xi, int yi, double x, double y) { - long mashedSeed = murmur64(31L * xi + yi) + seed; - - double gaussianSource = (rand.getNoiseRaw(mashedSeed++) + 1) / 2; - int impulses = 0; - while(gaussianSource > g) { - impulses++; - gaussianSource *= (rand.getNoiseRaw(mashedSeed++) + 1) / 2; - } - - double noise = 0; - for(int i = 0; i < impulses; i++) { - noise += rand.getNoiseRaw(mashedSeed++) * gabor(isotropic ? (rand.getNoiseRaw(mashedSeed++) + 1) * Math.PI : omega0, - x * kernelRadius, y * kernelRadius); - } - return noise; - } - - private double gabor(double omega_0, double x, double y) { - return k * (FastMath.exp(-Math.PI * (a * a) * (x * x + y * y)) * fastCos(2 * Math.PI * f0 * (x * fastCos(omega_0) + y * fastSin( - omega_0)))); - } - - public void setA(double a) { - this.a = a; - recalculateRadiusAndDensity(); - } - - public void setDeviation(double k) { - this.k = k; - } - - public void setFrequency0(double f0) { - this.f0 = f0; - } - - public void setImpulsesPerKernel(double impulsesPerKernel) { - this.impulsesPerKernel = impulsesPerKernel; - recalculateRadiusAndDensity(); - } - - public void setIsotropic(boolean isotropic) { - this.isotropic = isotropic; - } - - public void setRotation(double omega0) { - this.omega0 = Math.PI * omega0; - } - - @Override - public double getNoiseRaw(long seed, double x, double z) { - return gaborNoise(seed, x, z); - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return gaborNoise(seed, x, z); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java deleted file mode 100644 index d3b6a3045..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/NoiseFunction.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise; - -import net.jafama.FastMath; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings("ManualMinMaxCalculation") -public abstract class NoiseFunction implements NoiseSampler { - // Hashing - protected static final int PRIME_X = 501125321; - protected static final int PRIME_Y = 1136930381; - protected static final int PRIME_Z = 1720413743; - static final int precision = 100; - static final int modulus = 360 * precision; - static final double[] sin = new double[360 * 100]; // lookup table - static { - for(int i = 0; i < sin.length; i++) { - sin[i] = (float) Math.sin((double) (i) / (precision)); - } - } - protected double frequency = 0.02d; - protected long salt; - - public NoiseFunction() { - this.salt = 0; - } - - protected static int fastFloor(double f) { - return f >= 0 ? (int) f : (int) f - 1; - } - - protected static int hash(int seed, int xPrimed, int yPrimed, int zPrimed) { - int hash = seed ^ xPrimed ^ yPrimed ^ zPrimed; - - hash *= 0x27d4eb2d; - return hash; - } - - protected static int hash(int seed, int xPrimed, int yPrimed) { - int hash = seed ^ xPrimed ^ yPrimed; - - hash *= 0x27d4eb2d; - return hash; - } - - protected static int fastRound(double f) { - return f >= 0 ? (int) (f + 0.5f) : (int) (f - 0.5); - } - - protected static double lerp(double a, double b, double t) { - return a + t * (b - a); - } - - protected static double interpHermite(double t) { - return t * t * (3 - 2 * t); - } - - protected static double interpQuintic(double t) { - return t * t * t * (t * (t * 6 - 15) + 10); - } - - protected static double cubicLerp(double a, double b, double c, double d, double t) { - double p = (d - c) - (a - b); - return t * t * t * p + t * t * ((a - b) - p) + t * (c - a) + b; - } - - protected static double fastMin(double a, double b) { - return a < b ? a : b; - } - - protected static double fastMax(double a, double b) { - return a > b ? a : b; - } - - protected static double fastAbs(double f) { - return f < 0 ? -f : f; - } - - protected static double fastSqrt(double f) { - return FastMath.sqrt(f); - } - - protected static int fastCeil(double f) { - int i = (int) f; - if(i < f) i++; - return i; - } - - /** - * Murmur64 hashing function - * - * @param h Input value - * - * @return Hashed value - */ - protected static long murmur64(long h) { - h ^= h >>> 33; - h *= 0xff51afd7ed558ccdL; - h ^= h >>> 33; - h *= 0xc4ceb9fe1a85ec53L; - h ^= h >>> 33; - return h; - } - - protected static double fastSin(double a) { - return sinLookup((int) (a * precision + 0.5f)); - } - - protected static double fastCos(double a) { - return sinLookup((int) ((a + Math.PI / 2) * precision + 0.5f)); - } - - private static double sinLookup(int a) { - return a >= 0 ? sin[a % (modulus)] : -sin[-a % (modulus)]; - } - - public void setSalt(long salt) { - this.salt = salt; - } - - public double getFrequency() { - return frequency; - } - - public void setFrequency(double frequency) { - this.frequency = frequency; - } - - @Override - public double getNoiseSeeded(long seed, double x, double y) { - return getNoiseRaw(seed + salt, x * frequency, y * frequency); - } - - @Override - public double getNoiseSeeded(long seed, double x, double y, double z) { - return getNoiseRaw(seed + salt, x * frequency, y * frequency, z * frequency); - } - - public abstract double getNoiseRaw(long seed, double x, double y); - - public abstract double getNoiseRaw(long seed, double x, double y, double z); -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java deleted file mode 100644 index f7e636ae6..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/BrownianMotionSampler.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class BrownianMotionSampler extends FractalNoiseFunction { - public BrownianMotionSampler(NoiseSampler input) { - super(input); - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - double sum = 0; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - double noise = input.getNoiseSeeded(seed++, x, y); - sum += noise * amp; - amp *= lerp(1.0, fastMin(noise + 1, 2) * 0.5, weightedStrength); - - x *= lacunarity; - y *= lacunarity; - amp *= gain; - } - - return sum; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - double sum = 0; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - double noise = input.getNoiseSeeded(seed++, x, y, z); - sum += noise * amp; - amp *= lerp(1.0, (noise + 1) * 0.5, weightedStrength); - - x *= lacunarity; - y *= lacunarity; - z *= lacunarity; - amp *= gain; - } - - return sum; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java deleted file mode 100644 index 0f3455c72..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/FractalNoiseFunction.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public abstract class FractalNoiseFunction extends NoiseFunction { - protected final NoiseSampler input; - protected double fractalBounding = 1 / 1.75; - protected int octaves = 3; - protected double gain = 0.5; - protected double lacunarity = 2.0d; - protected double weightedStrength = 0.0d; - - public FractalNoiseFunction(NoiseSampler input) { - this.input = input; - frequency = 1; - } - - protected void calculateFractalBounding() { - double gain = fastAbs(this.gain); - double amp = gain; - double ampFractal = 1.0; - for(int i = 1; i < octaves; i++) { - ampFractal += amp; - amp *= gain; - } - fractalBounding = 1 / ampFractal; - } - - public void setGain(double gain) { - this.gain = gain; - calculateFractalBounding(); - } - - public void setLacunarity(double lacunarity) { - this.lacunarity = lacunarity; - } - - public void setOctaves(int octaves) { - this.octaves = octaves; - calculateFractalBounding(); - } - - public void setWeightedStrength(double weightedStrength) { - this.weightedStrength = weightedStrength; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java deleted file mode 100644 index 3c712db61..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/PingPongSampler.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class PingPongSampler extends FractalNoiseFunction { - private double pingPongStrength = 2.0; - - public PingPongSampler(NoiseSampler input) { - super(input); - } - - - private static double pingPong(double t) { - t -= (int) (t * 0.5f) << 1; - return t < 1 ? t : 2 - t; - } - - public void setPingPongStrength(double strength) { - this.pingPongStrength = strength; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - double sum = 0; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - double noise = pingPong((input.getNoiseSeeded(seed++, x, y) + 1) * pingPongStrength); - sum += (noise - 0.5) * 2 * amp; - amp *= lerp(1.0, noise, weightedStrength); - - x *= lacunarity; - y *= lacunarity; - amp *= gain; - } - - return sum; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - double sum = 0; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - double noise = pingPong((input.getNoiseSeeded(seed++, x, y, z) + 1) * pingPongStrength); - sum += (noise - 0.5) * 2 * amp; - amp *= lerp(1.0, noise, weightedStrength); - - x *= lacunarity; - y *= lacunarity; - z *= lacunarity; - amp *= gain; - } - - return sum; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java deleted file mode 100644 index 6c6f53592..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/fractal/RidgedFractalSampler.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.fractal; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class RidgedFractalSampler extends FractalNoiseFunction { - - public RidgedFractalSampler(NoiseSampler input) { - super(input); - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - double sum = 0; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - double noise = fastAbs(input.getNoiseSeeded(seed++, x, y)); - sum += (noise * -2 + 1) * amp; - amp *= lerp(1.0, 1 - noise, weightedStrength); - - x *= lacunarity; - y *= lacunarity; - amp *= gain; - } - - return sum; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - double sum = 0; - double amp = fractalBounding; - - for(int i = 0; i < octaves; i++) { - double noise = fastAbs(input.getNoiseSeeded(seed++, x, y, z)); - sum += (noise * -2 + 1) * amp; - amp *= lerp(1.0, 1 - noise, weightedStrength); - - x *= lacunarity; - y *= lacunarity; - z *= lacunarity; - amp *= gain; - } - - return sum; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java deleted file mode 100644 index 159dfffc0..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/GaussianNoiseSampler.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.random; - -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; - - -/** - * NoiseSampler implementation to provide random, normally distributed (Gaussian) noise. - */ -public class GaussianNoiseSampler extends NoiseFunction { - private final WhiteNoiseSampler whiteNoiseSampler; // Back with a white noise sampler. - - public GaussianNoiseSampler() { - whiteNoiseSampler = new WhiteNoiseSampler(); - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - double v1, v2, s; - do { - v1 = whiteNoiseSampler.getNoiseSeeded(seed++, x, y); - v2 = whiteNoiseSampler.getNoiseSeeded(seed++, x, y); - s = v1 * v1 + v2 * v2; - } while(s >= 1 || s == 0); - double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s) / s); - return v1 * multiplier; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - double v1, v2, s; - do { - v1 = whiteNoiseSampler.getNoiseSeeded(seed++, x, y, z); - v2 = whiteNoiseSampler.getNoiseSeeded(seed++, x, y, z); - s = v1 * v1 + v2 * v2; - } while(s >= 1 || s == 0); - double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s) / s); - return v1 * multiplier; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java deleted file mode 100644 index 8ec5d0d2b..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/random/WhiteNoiseSampler.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.random; - -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; - - -/** - * NoiseSampler implementation to produce random, uniformly distributed (white) noise. - */ -public class WhiteNoiseSampler extends NoiseFunction { - private static final long POSITIVE_POW1 = 0b01111111111L << 52; - // Bits that when applied to the exponent/sign section of a double, produce a positive number with a power of 1. - - public WhiteNoiseSampler() { - } - - public long randomBits(long seed, double x, double y, double z) { - long hashX = Double.doubleToRawLongBits(x) ^ seed; - long hashZ = Double.doubleToRawLongBits(y) ^ seed; - long hash = (((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed) + Double.doubleToRawLongBits(z); - return murmur64(hash); - } - - public long randomBits(long seed, double x, double y) { - long hashX = Double.doubleToRawLongBits(x) ^ seed; - long hashZ = Double.doubleToRawLongBits(y) ^ seed; - long hash = ((hashX ^ (hashX >>> 32)) + ((hashZ ^ (hashZ >>> 32)) << 32)) ^ seed; - return murmur64(hash); - } - - public double getNoiseRaw(long seed) { - return (Double.longBitsToDouble((murmur64(seed) & 0x000fffffffffffffL) | POSITIVE_POW1) - 1.5) * 2; - } - - @Override - public double getNoiseRaw(long seed, double x, double y) { - return (getNoiseUnmapped(seed, x, y) - 1.5) * 2; - } - - @Override - public double getNoiseRaw(long seed, double x, double y, double z) { - return (getNoiseUnmapped(seed, x, y, z) - 1.5) * 2; - } - - public double getNoiseUnmapped(long seed, double x, double y, double z) { - long base = ((randomBits(seed, x, y, z)) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent - return Double.longBitsToDouble(base); - } - - public double getNoiseUnmapped(long seed, double x, double y) { - long base = (randomBits(seed, x, y) & 0x000fffffffffffffL) | POSITIVE_POW1; // Sign and exponent - return Double.longBitsToDouble(base); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java deleted file mode 100644 index 24c36cb34..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2SSampler.java +++ /dev/null @@ -1,272 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -/** - * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. - */ -public class OpenSimplex2SSampler extends SimplexStyleSampler { - @Override - @SuppressWarnings("NumericOverflow") - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - // 2D OpenSimplex2S case is a modified 2D simplex noise. - - final double SQRT3 = 1.7320508075688772935274463415059; - final double G2 = (3 - SQRT3) / 6; - - final double F2 = 0.5f * (SQRT3 - 1); - double s = (x + y) * F2; - x += s; - y += s; - - - int i = fastFloor(x); - int j = fastFloor(y); - double xi = x - i; - double yi = y - j; - - i *= PRIME_X; - j *= PRIME_Y; - int i1 = i + PRIME_X; - int j1 = j + PRIME_Y; - - double t = (xi + yi) * G2; - double x0 = xi - t; - double y0 = yi - t; - - double a0 = (2.0 / 3.0) - x0 * x0 - y0 * y0; - double value = (a0 * a0) * (a0 * a0) * gradCoord(seed, i, j, x0, y0); - - double a1 = 2 * (1 - 2 * G2) * (1 / G2 - 2) * t + ((-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a0); - double x1 = x0 - (1 - 2 * G2); - double y1 = y0 - (1 - 2 * G2); - value += (a1 * a1) * (a1 * a1) * gradCoord(seed, i1, j1, x1, y1); - - // Nested conditionals were faster than compact bit logic/arithmetic. - double xmyi = xi - yi; - if(t > G2) { - if(xi + xmyi > 1) { - double x2 = x0 + (3 * G2 - 2); - double y2 = y0 + (3 * G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i + (PRIME_X << 1), j + PRIME_Y, x2, y2); - } - } else { - double x2 = x0 + G2; - double y2 = y0 + (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i, j + PRIME_Y, x2, y2); - } - } - - if(yi - xmyi > 1) { - double x3 = x0 + (3 * G2 - 1); - double y3 = y0 + (3 * G2 - 2); - double a3 = (2.0 / 3.0) - x3 * x3 - y3 * y3; - if(a3 > 0) { - value += (a3 * a3) * (a3 * a3) * gradCoord(seed, i + PRIME_X, j + (PRIME_Y << 1), x3, y3); - } - } else { - double x3 = x0 + (G2 - 1); - double y3 = y0 + G2; - double a3 = (2.0 / 3.0) - x3 * x3 - y3 * y3; - if(a3 > 0) { - value += (a3 * a3) * (a3 * a3) * gradCoord(seed, i + PRIME_X, j, x3, y3); - } - } - } else { - if(xi + xmyi < 0) { - double x2 = x0 + (1 - G2); - double y2 = y0 - G2; - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i - PRIME_X, j, x2, y2); - } - } else { - double x2 = x0 + (G2 - 1); - double y2 = y0 + G2; - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i + PRIME_X, j, x2, y2); - } - } - - if(yi < xmyi) { - double x2 = x0 - G2; - double y2 = y0 - (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i, j - PRIME_Y, x2, y2); - } - } else { - double x2 = x0 + G2; - double y2 = y0 + (G2 - 1); - double a2 = (2.0 / 3.0) - x2 * x2 - y2 * y2; - if(a2 > 0) { - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i, j + PRIME_Y, x2, y2); - } - } - } - - return value * 18.24196194486065; - } - - @Override - @SuppressWarnings("NumericOverflow") - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - // 3D OpenSimplex2S case uses two offset rotated cube grids. - final double R3 = (2.0 / 3.0); - double r = (x + y + z) * R3; // Rotation, not skew - x = r - x; - y = r - y; - z = r - z; - - - int i = fastFloor(x); - int j = fastFloor(y); - int k = fastFloor(z); - double xi = x - i; - double yi = y - j; - double zi = z - k; - - i *= PRIME_X; - j *= PRIME_Y; - k *= PRIME_Z; - int seed2 = seed + 1293373; - - int xNMask = (int) (-0.5 - xi); - int yNMask = (int) (-0.5 - yi); - int zNMask = (int) (-0.5 - zi); - - double x0 = xi + xNMask; - double y0 = yi + yNMask; - double z0 = zi + zNMask; - double a0 = 0.75 - x0 * x0 - y0 * y0 - z0 * z0; - double value = (a0 * a0) * (a0 * a0) * gradCoord(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x0, - y0, - z0); - - double x1 = xi - 0.5; - double y1 = yi - 0.5; - double z1 = zi - 0.5; - double a1 = 0.75 - x1 * x1 - y1 * y1 - z1 * z1; - value += (a1 * a1) * (a1 * a1) * gradCoord(seed2, i + PRIME_X, j + PRIME_Y, k + PRIME_Z, x1, y1, z1); - - double xAFlipMask0 = ((xNMask | 1) << 1) * x1; - double yAFlipMask0 = ((yNMask | 1) << 1) * y1; - double zAFlipMask0 = ((zNMask | 1) << 1) * z1; - double xAFlipMask1 = (-2 - (xNMask << 2)) * x1 - 1.0; - double yAFlipMask1 = (-2 - (yNMask << 2)) * y1 - 1.0; - double zAFlipMask1 = (-2 - (zNMask << 2)) * z1 - 1.0; - - boolean skip5 = false; - double a2 = xAFlipMask0 + a0; - if(a2 > 0) { - double x2 = x0 - (xNMask | 1); - value += (a2 * a2) * (a2 * a2) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x2, - y0, - z0); - } else { - double a3 = yAFlipMask0 + zAFlipMask0 + a0; - if(a3 > 0) { - double y3 = y0 - (yNMask | 1); - double z3 = z0 - (zNMask | 1); - value += (a3 * a3) * (a3 * a3) * gradCoord(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), - x0, - y3, z3); - } - - double a4 = xAFlipMask1 + a1; - if(a4 > 0) { - double x4 = (xNMask | 1) + x1; - value += (a4 * a4) * (a4 * a4) * gradCoord(seed2, i + (xNMask & (PRIME_X << 1)), j + PRIME_Y, k + PRIME_Z, x4, y1, z1); - skip5 = true; - } - } - - boolean skip9 = false; - double a6 = yAFlipMask0 + a0; - if(a6 > 0) { - double y6 = y0 - (yNMask | 1); - value += (a6 * a6) * (a6 * a6) * gradCoord(seed, i + (xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z), x0, - y6, - z0); - } else { - double a7 = xAFlipMask0 + zAFlipMask0 + a0; - if(a7 > 0) { - double x7 = x0 - (xNMask | 1); - double z7 = z0 - (zNMask | 1); - value += (a7 * a7) * (a7 * a7) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), - x7, - y0, z7); - } - - double a8 = yAFlipMask1 + a1; - if(a8 > 0) { - double y8 = (yNMask | 1) + y1; - value += (a8 * a8) * (a8 * a8) * gradCoord(seed2, i + PRIME_X, j + (yNMask & (PRIME_Y << 1)), k + PRIME_Z, x1, y8, z1); - skip9 = true; - } - } - - boolean skipD = false; - double aA = zAFlipMask0 + a0; - if(aA > 0) { - double zA = z0 - (zNMask | 1); - value += (aA * aA) * (aA * aA) * gradCoord(seed, i + (xNMask & PRIME_X), j + (yNMask & PRIME_Y), k + (~zNMask & PRIME_Z), x0, - y0, - zA); - } else { - double aB = xAFlipMask0 + yAFlipMask0 + a0; - if(aB > 0) { - double xB = x0 - (xNMask | 1); - double yB = y0 - (yNMask | 1); - value += (aB * aB) * (aB * aB) * gradCoord(seed, i + (~xNMask & PRIME_X), j + (~yNMask & PRIME_Y), k + (zNMask & PRIME_Z), - xB, - yB, z0); - } - - double aC = zAFlipMask1 + a1; - if(aC > 0) { - double zC = (zNMask | 1) + z1; - value += (aC * aC) * (aC * aC) * gradCoord(seed2, i + PRIME_X, j + PRIME_Y, k + (zNMask & (PRIME_Z << 1)), x1, y1, zC); - skipD = true; - } - } - - if(!skip5) { - double a5 = yAFlipMask1 + zAFlipMask1 + a1; - if(a5 > 0) { - double y5 = (yNMask | 1) + y1; - double z5 = (zNMask | 1) + z1; - value += (a5 * a5) * (a5 * a5) * gradCoord(seed2, i + PRIME_X, j + (yNMask & (PRIME_Y << 1)), k + (zNMask & (PRIME_Z << 1)), - x1, y5, z5); - } - } - - if(!skip9) { - double a9 = xAFlipMask1 + zAFlipMask1 + a1; - if(a9 > 0) { - double x9 = (xNMask | 1) + x1; - double z9 = (zNMask | 1) + z1; - value += (a9 * a9) * (a9 * a9) * gradCoord(seed2, i + (xNMask & (PRIME_X << 1)), j + PRIME_Y, k + (zNMask & (PRIME_Z << 1)), - x9, - y1, z9); - } - } - - if(!skipD) { - double aD = xAFlipMask1 + yAFlipMask1 + a1; - if(aD > 0) { - double xD = (xNMask | 1) + x1; - double yD = (yNMask | 1) + y1; - value += (aD * aD) * (aD * aD) * gradCoord(seed2, i + (xNMask & (PRIME_X << 1)), j + (yNMask & (PRIME_Y << 1)), k + PRIME_Z, - xD, yD, z1); - } - } - - return value * 9.046026385208288; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java deleted file mode 100644 index 410176b2e..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/OpenSimplex2Sampler.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -/** - * NoiseSampler implementation to provide OpenSimplex2 noise. - */ -public class OpenSimplex2Sampler extends SimplexStyleSampler { - private static final double SQRT3 = 1.7320508075688772935274463415059; - - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - // 2D OpenSimplex2 case uses the same algorithm as ordinary Simplex. - final double G2 = (3 - SQRT3) / 6; - - final double F2 = 0.5f * (SQRT3 - 1); - double s = (x + y) * F2; - x += s; - y += s; - - - int i = fastFloor(x); - int j = fastFloor(y); - double xi = x - i; - double yi = y - j; - - double t = (xi + yi) * G2; - double x0 = xi - t; - double y0 = yi - t; - - i *= PRIME_X; - j *= PRIME_Y; - - double n0, n1, n2; - - double a = 0.5 - x0 * x0 - y0 * y0; - if(a <= 0) n0 = 0; - else { - n0 = (a * a) * (a * a) * gradCoord(seed, i, j, x0, y0); - } - - double c = 2 * (1 - 2 * G2) * (1 / G2 - 2) * t + ((-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a); - if(c <= 0) n2 = 0; - else { - double x2 = x0 + (2 * G2 - 1); - double y2 = y0 + (2 * G2 - 1); - n2 = (c * c) * (c * c) * gradCoord(seed, i + PRIME_X, j + PRIME_Y, x2, y2); - } - - if(y0 > x0) { - double x1 = x0 + G2; - double y1 = y0 + (G2 - 1); - double b = 0.5 - x1 * x1 - y1 * y1; - if(b <= 0) n1 = 0; - else { - n1 = (b * b) * (b * b) * gradCoord(seed, i, j + PRIME_Y, x1, y1); - } - } else { - double x1 = x0 + (G2 - 1); - double y1 = y0 + G2; - double b = 0.5 - x1 * x1 - y1 * y1; - if(b <= 0) n1 = 0; - else { - n1 = (b * b) * (b * b) * gradCoord(seed, i + PRIME_X, j, x1, y1); - } - } - - return (n0 + n1 + n2) * 99.83685446303647f; - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - // 3D OpenSimplex2Sampler case uses two offset rotated cube grids. - final double R3 = (2.0 / 3.0); - double r = (x + y + z) * R3; // Rotation, not skew - x = r - x; - y = r - y; - z = r - z; - - - int i = fastRound(x); - int j = fastRound(y); - int k = fastRound(z); - double x0 = x - i; - double y0 = y - j; - double z0 = z - k; - - int xNSign = (int) (-1.0 - x0) | 1; - int yNSign = (int) (-1.0 - y0) | 1; - int zNSign = (int) (-1.0 - z0) | 1; - - double ax0 = xNSign * -x0; - double ay0 = yNSign * -y0; - double az0 = zNSign * -z0; - - i *= PRIME_X; - j *= PRIME_Y; - k *= PRIME_Z; - - double value = 0; - double a = (0.6f - x0 * x0) - (y0 * y0 + z0 * z0); - - for(int l = 0; ; l++) { - if(a > 0) { - value += (a * a) * (a * a) * gradCoord(seed, i, j, k, x0, y0, z0); - } - - if(ax0 >= ay0 && ax0 >= az0) { - double b = a + ax0 + ax0; - if(b > 1) { - b -= 1; - value += (b * b) * (b * b) * gradCoord(seed, i - xNSign * PRIME_X, j, k, x0 + xNSign, y0, z0); - } - } else if(ay0 > ax0 && ay0 >= az0) { - double b = a + ay0 + ay0; - if(b > 1) { - b -= 1; - value += (b * b) * (b * b) * gradCoord(seed, i, j - yNSign * PRIME_Y, k, x0, y0 + yNSign, z0); - } - } else { - double b = a + az0 + az0; - if(b > 1) { - b -= 1; - value += (b * b) * (b * b) * gradCoord(seed, i, j, k - zNSign * PRIME_Z, x0, y0, z0 + zNSign); - } - } - - if(l == 1) break; - - ax0 = 0.5 - ax0; - ay0 = 0.5 - ay0; - az0 = 0.5 - az0; - - x0 = xNSign * ax0; - y0 = yNSign * ay0; - z0 = zNSign * az0; - - a += (0.75 - ax0) - (ay0 + az0); - - i += (xNSign >> 1) & PRIME_X; - j += (yNSign >> 1) & PRIME_Y; - k += (zNSign >> 1) & PRIME_Z; - - xNSign = -xNSign; - yNSign = -yNSign; - zNSign = -zNSign; - - seed = ~seed; - } - - return value * 32.69428253173828125; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java deleted file mode 100644 index 047e02ce5..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/PerlinSampler.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -/** - * NoiseSampler implementation to provide Perlin Noise. - */ -public class PerlinSampler extends SimplexStyleSampler { - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); - - double xd0 = x - x0; - double yd0 = y - y0; - double xd1 = xd0 - 1; - double yd1 = yd0 - 1; - - double xs = interpQuintic(xd0); - double ys = interpQuintic(yd0); - - x0 *= PRIME_X; - y0 *= PRIME_Y; - int x1 = x0 + PRIME_X; - int y1 = y0 + PRIME_Y; - - double xf0 = lerp(gradCoord(seed, x0, y0, xd0, yd0), gradCoord(seed, x1, y0, xd1, yd0), xs); - double xf1 = lerp(gradCoord(seed, x0, y1, xd0, yd1), gradCoord(seed, x1, y1, xd1, yd1), xs); - - return lerp(xf0, xf1, ys) * 1.4247691104677813; - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); - int z0 = fastFloor(z); - - double xd0 = x - x0; - double yd0 = y - y0; - double zd0 = z - z0; - double xd1 = xd0 - 1; - double yd1 = yd0 - 1; - double zd1 = zd0 - 1; - - double xs = interpQuintic(xd0); - double ys = interpQuintic(yd0); - double zs = interpQuintic(zd0); - - x0 *= PRIME_X; - y0 *= PRIME_Y; - z0 *= PRIME_Z; - int x1 = x0 + PRIME_X; - int y1 = y0 + PRIME_Y; - int z1 = z0 + PRIME_Z; - - double xf00 = lerp(gradCoord(seed, x0, y0, z0, xd0, yd0, zd0), gradCoord(seed, x1, y0, z0, xd1, yd0, zd0), xs); - double xf10 = lerp(gradCoord(seed, x0, y1, z0, xd0, yd1, zd0), gradCoord(seed, x1, y1, z0, xd1, yd1, zd0), xs); - double xf01 = lerp(gradCoord(seed, x0, y0, z1, xd0, yd0, zd1), gradCoord(seed, x1, y0, z1, xd1, yd0, zd1), xs); - double xf11 = lerp(gradCoord(seed, x0, y1, z1, xd0, yd1, zd1), gradCoord(seed, x1, y1, z1, xd1, yd1, zd1), xs); - - double yf0 = lerp(xf00, xf10, ys); - double yf1 = lerp(xf01, xf11, ys); - - return lerp(yf0, yf1, zs) * 0.964921414852142333984375; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java deleted file mode 100644 index dfaaf5bc6..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexSampler.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -public class SimplexSampler extends SimplexStyleSampler { - private static final Double2[] GRAD_2D = { - new Double2(-1, -1), new Double2(1, -1), new Double2(-1, 1), new Double2(1, 1), - new Double2(0, -1), new Double2(-1, 0), new Double2(0, 1), new Double2(1, 0), - }; - private static final Double3[] GRAD_3D = { - new Double3(1, 1, 0), new Double3(-1, 1, 0), new Double3(1, -1, 0), new Double3(-1, -1, 0), - new Double3(1, 0, 1), new Double3(-1, 0, 1), new Double3(1, 0, -1), new Double3(-1, 0, -1), - new Double3(0, 1, 1), new Double3(0, -1, 1), new Double3(0, 1, -1), new Double3(0, -1, -1), - new Double3(1, 1, 0), new Double3(0, -1, 1), new Double3(-1, 1, 0), new Double3(0, -1, -1), - }; - - private static final double F2 = 1.0 / 2.0; - private static final double F3 = (1.0 / 3.0); - private static final double G2 = 1.0 / 4.0; - private static final double G3 = (1.0 / 6.0); - private static final double G33 = G3 * 3 - 1; - - private static final int X_PRIME = 1619; - private static final int Y_PRIME = 31337; - private static final int Z_PRIME = 6971; - - - private static double gradCoord3D(int seed, int x, int y, int z, double xd, double yd, double zd) { - int hash = seed; - hash ^= X_PRIME * x; - hash ^= Y_PRIME * y; - hash ^= Z_PRIME * z; - - hash = hash * hash * hash * 60493; - hash = (hash >> 13) ^ hash; - - Double3 g = GRAD_3D[hash & 15]; - - return xd * g.x + yd * g.y + zd * g.z; - } - - private static double gradCoord2D(int seed, int x, int y, double xd, double yd) { - int hash = seed; - hash ^= X_PRIME * x; - hash ^= Y_PRIME * y; - - hash = hash * hash * hash * 60493; - hash = (hash >> 13) ^ hash; - - Double2 g = GRAD_2D[hash & 7]; - - return xd * g.x + yd * g.y; - } - - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - double t = (x + y) * F2; - int i = fastFloor(x + t); - int j = fastFloor(y + t); - - t = (i + j) * G2; - double X0 = i - t; - double Y0 = j - t; - - double x0 = x - X0; - double y0 = y - Y0; - - int i1, j1; - if(x0 > y0) { - i1 = 1; - j1 = 0; - } else { - i1 = 0; - j1 = 1; - } - - double x1 = x0 - i1 + G2; - double y1 = y0 - j1 + G2; - double x2 = x0 - 1 + F2; - double y2 = y0 - 1 + F2; - - double n0, n1, n2; - - t = 0.5 - x0 * x0 - y0 * y0; - if(t < 0) { - n0 = 0; - } else { - t *= t; - n0 = t * t * gradCoord2D(seed, i, j, x0, y0); - } - - t = 0.5 - x1 * x1 - y1 * y1; - if(t < 0) { - n1 = 0; - } else { - t *= t; - n1 = t * t * gradCoord2D(seed, i + i1, j + j1, x1, y1); - } - - t = 0.5 - x2 * x2 - y2 * y2; - if(t < 0) { - n2 = 0; - } else { - t *= t; - n2 = t * t * gradCoord2D(seed, i + 1, j + 1, x2, y2); - } - - return 50 * (n0 + n1 + n2); - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - double t = (x + y + z) * F3; - int i = fastFloor(x + t); - int j = fastFloor(y + t); - int k = fastFloor(z + t); - - t = (i + j + k) * G3; - double x0 = x - (i - t); - double y0 = y - (j - t); - double z0 = z - (k - t); - - int i1, j1, k1; - int i2, j2, k2; - - if(x0 >= y0) { - if(y0 >= z0) { - i1 = 1; - j1 = 0; - k1 = 0; - i2 = 1; - j2 = 1; - k2 = 0; - } else if(x0 >= z0) { - i1 = 1; - j1 = 0; - k1 = 0; - i2 = 1; - j2 = 0; - k2 = 1; - } else // x0 < z0 - { - i1 = 0; - j1 = 0; - k1 = 1; - i2 = 1; - j2 = 0; - k2 = 1; - } - } else // x0 < y0 - { - if(y0 < z0) { - i1 = 0; - j1 = 0; - k1 = 1; - i2 = 0; - j2 = 1; - k2 = 1; - } else if(x0 < z0) { - i1 = 0; - j1 = 1; - k1 = 0; - i2 = 0; - j2 = 1; - k2 = 1; - } else // x0 >= z0 - { - i1 = 0; - j1 = 1; - k1 = 0; - i2 = 1; - j2 = 1; - k2 = 0; - } - } - - double x1 = x0 - i1 + G3; - double y1 = y0 - j1 + G3; - double z1 = z0 - k1 + G3; - double x2 = x0 - i2 + F3; - double y2 = y0 - j2 + F3; - double z2 = z0 - k2 + F3; - double x3 = x0 + G33; - double y3 = y0 + G33; - double z3 = z0 + G33; - - double n0, n1, n2, n3; - - t = 0.6 - x0 * x0 - y0 * y0 - z0 * z0; - if(t < 0) n0 = 0; - else { - t *= t; - n0 = t * t * gradCoord3D(seed, i, j, k, x0, y0, z0); - } - - t = 0.6 - x1 * x1 - y1 * y1 - z1 * z1; - if(t < 0) { - n1 = 0; - } else { - t *= t; - n1 = t * t * gradCoord3D(seed, i + i1, j + j1, k + k1, x1, y1, z1); - } - - t = 0.6 - x2 * x2 - y2 * y2 - z2 * z2; - if(t < 0) { - n2 = 0; - } else { - t *= t; - n2 = t * t * gradCoord3D(seed, i + i2, j + j2, k + k2, x2, y2, z2); - } - - t = 0.6 - x3 * x3 - y3 * y3 - z3 * z3; - if(t < 0) { - n3 = 0; - } else { - t *= t; - n3 = t * t * gradCoord3D(seed, i + 1, j + 1, k + 1, x3, y3, z3); - } - - return 32 * (n0 + n1 + n2 + n3); - } - - private static class Double2 { - public final double x, y; - - public Double2(double x, double y) { - this.x = x; - this.y = y; - } - } - - - private static class Double3 { - public final double x, y, z; - - public Double3(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - } - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java deleted file mode 100644 index d924f2833..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/simplex/SimplexStyleSampler.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.simplex; - -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; - - -/** - * Abstract NoiseSampler implementation for simplex-style noise functions. - */ -public abstract class SimplexStyleSampler extends NoiseFunction { - protected static final double[] GRADIENTS_2_D = { - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.130526192220052d, 0.99144486137381d, 0.38268343236509d, 0.923879532511287d, 0.608761429008721d, 0.793353340291235d, - 0.793353340291235d, 0.608761429008721d, 0.923879532511287d, 0.38268343236509d, 0.99144486137381d, 0.130526192220051d, - 0.99144486137381d, -0.130526192220051d, 0.923879532511287d, -0.38268343236509d, 0.793353340291235d, -0.60876142900872d, - 0.608761429008721d, -0.793353340291235d, 0.38268343236509d, -0.923879532511287d, 0.130526192220052d, -0.99144486137381d, - -0.130526192220052d, -0.99144486137381d, -0.38268343236509d, -0.923879532511287d, -0.608761429008721d, -0.793353340291235d, - -0.793353340291235d, -0.608761429008721d, -0.923879532511287d, -0.38268343236509d, -0.99144486137381d, -0.130526192220052d, - -0.99144486137381d, 0.130526192220051d, -0.923879532511287d, 0.38268343236509d, -0.793353340291235d, 0.608761429008721d, - -0.608761429008721d, 0.793353340291235d, -0.38268343236509d, 0.923879532511287d, -0.130526192220052d, 0.99144486137381d, - 0.38268343236509d, 0.923879532511287d, 0.923879532511287d, 0.38268343236509d, 0.923879532511287d, -0.38268343236509d, - 0.38268343236509d, -0.923879532511287d, -0.38268343236509d, -0.923879532511287d, -0.923879532511287d, -0.38268343236509d, - -0.923879532511287d, 0.38268343236509d, -0.38268343236509d, 0.923879532511287d, - }; - - protected static final double[] GRADIENTS_3D = { - 0, 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, - 1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 0, -1, 0, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 0, 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, - 1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 0, -1, 0, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 0, 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, - 1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 0, -1, 0, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 0, 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, - 1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 0, -1, 0, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 0, 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, - 1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 0, -1, 0, - 1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, -1, 0, 0, - 1, 1, 0, 0, 0, -1, 1, 0, -1, 1, 0, 0, 0, -1, -1, 0 - }; - - protected static double gradCoord(int seed, int xPrimed, int yPrimed, double xd, double yd) { - int hash = hash(seed, xPrimed, yPrimed); - hash ^= hash >> 15; - hash &= 127 << 1; - - double xg = GRADIENTS_2_D[hash]; - double yg = GRADIENTS_2_D[hash | 1]; - - return xd * xg + yd * yg; - } - - protected static double gradCoord(int seed, int xPrimed, int yPrimed, int zPrimed, double xd, double yd, double zd) { - int hash = hash(seed, xPrimed, yPrimed, zPrimed); - hash ^= hash >> 15; - hash &= 63 << 2; - - double xg = GRADIENTS_3D[hash]; - double yg = GRADIENTS_3D[hash | 1]; - double zg = GRADIENTS_3D[hash | 2]; - - return xd * xg + yd * yg + zd * zg; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java deleted file mode 100644 index d490126f1..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueCubicSampler.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.value; - -public class ValueCubicSampler extends ValueStyleNoise { - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int x1 = fastFloor(x); - int y1 = fastFloor(y); - - double xs = x - x1; - double ys = y - y1; - - x1 *= PRIME_X; - y1 *= PRIME_Y; - int x0 = x1 - PRIME_X; - int y0 = y1 - PRIME_Y; - int x2 = x1 + PRIME_X; - int y2 = y1 + PRIME_Y; - int x3 = x1 + (PRIME_X << 1); - int y3 = y1 + (PRIME_Y << 1); - - return cubicLerp( - cubicLerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), valCoord(seed, x2, y0), valCoord(seed, x3, y0), - xs), - cubicLerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), valCoord(seed, x2, y1), valCoord(seed, x3, y1), - xs), - cubicLerp(valCoord(seed, x0, y2), valCoord(seed, x1, y2), valCoord(seed, x2, y2), valCoord(seed, x3, y2), - xs), - cubicLerp(valCoord(seed, x0, y3), valCoord(seed, x1, y3), valCoord(seed, x2, y3), valCoord(seed, x3, y3), - xs), - ys) * (1 / (1.5 * 1.5)); - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - int x1 = fastFloor(x); - int y1 = fastFloor(y); - int z1 = fastFloor(z); - - double xs = x - x1; - double ys = y - y1; - double zs = z - z1; - - x1 *= PRIME_X; - y1 *= PRIME_Y; - z1 *= PRIME_Z; - - int x0 = x1 - PRIME_X; - int y0 = y1 - PRIME_Y; - int z0 = z1 - PRIME_Z; - int x2 = x1 + PRIME_X; - int y2 = y1 + PRIME_Y; - int z2 = z1 + PRIME_Z; - int x3 = x1 + (PRIME_X << 1); - int y3 = y1 + (PRIME_Y << 1); - int z3 = z1 + (PRIME_Z << 1); - - return cubicLerp( - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), valCoord(seed, x2, y0, z0), - valCoord(seed, x3, y0, z0), xs), - cubicLerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), valCoord(seed, x2, y1, z0), - valCoord(seed, x3, y1, z0), xs), - cubicLerp(valCoord(seed, x0, y2, z0), valCoord(seed, x1, y2, z0), valCoord(seed, x2, y2, z0), - valCoord(seed, x3, y2, z0), xs), - cubicLerp(valCoord(seed, x0, y3, z0), valCoord(seed, x1, y3, z0), valCoord(seed, x2, y3, z0), - valCoord(seed, x3, y3, z0), xs), - ys), - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), valCoord(seed, x2, y0, z1), - valCoord(seed, x3, y0, z1), xs), - cubicLerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), valCoord(seed, x2, y1, z1), - valCoord(seed, x3, y1, z1), xs), - cubicLerp(valCoord(seed, x0, y2, z1), valCoord(seed, x1, y2, z1), valCoord(seed, x2, y2, z1), - valCoord(seed, x3, y2, z1), xs), - cubicLerp(valCoord(seed, x0, y3, z1), valCoord(seed, x1, y3, z1), valCoord(seed, x2, y3, z1), - valCoord(seed, x3, y3, z1), xs), - ys), - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z2), valCoord(seed, x1, y0, z2), valCoord(seed, x2, y0, z2), - valCoord(seed, x3, y0, z2), xs), - cubicLerp(valCoord(seed, x0, y1, z2), valCoord(seed, x1, y1, z2), valCoord(seed, x2, y1, z2), - valCoord(seed, x3, y1, z2), xs), - cubicLerp(valCoord(seed, x0, y2, z2), valCoord(seed, x1, y2, z2), valCoord(seed, x2, y2, z2), - valCoord(seed, x3, y2, z2), xs), - cubicLerp(valCoord(seed, x0, y3, z2), valCoord(seed, x1, y3, z2), valCoord(seed, x2, y3, z2), - valCoord(seed, x3, y3, z2), xs), - ys), - cubicLerp( - cubicLerp(valCoord(seed, x0, y0, z3), valCoord(seed, x1, y0, z3), valCoord(seed, x2, y0, z3), - valCoord(seed, x3, y0, z3), xs), - cubicLerp(valCoord(seed, x0, y1, z3), valCoord(seed, x1, y1, z3), valCoord(seed, x2, y1, z3), - valCoord(seed, x3, y1, z3), xs), - cubicLerp(valCoord(seed, x0, y2, z3), valCoord(seed, x1, y2, z3), valCoord(seed, x2, y2, z3), - valCoord(seed, x3, y2, z3), xs), - cubicLerp(valCoord(seed, x0, y3, z3), valCoord(seed, x1, y3, z3), valCoord(seed, x2, y3, z3), - valCoord(seed, x3, y3, z3), xs), - ys), - zs) * (1 / (1.5 * 1.5 * 1.5)); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java deleted file mode 100644 index 15c200633..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueSampler.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.value; - -public class ValueSampler extends ValueStyleNoise { - @Override - public double getNoiseRaw(long sl, double x, double y) { - int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); - - double xs = interpHermite(x - x0); - double ys = interpHermite(y - y0); - - x0 *= PRIME_X; - y0 *= PRIME_Y; - int x1 = x0 + PRIME_X; - int y1 = y0 + PRIME_Y; - - double xf0 = lerp(valCoord(seed, x0, y0), valCoord(seed, x1, y0), xs); - double xf1 = lerp(valCoord(seed, x0, y1), valCoord(seed, x1, y1), xs); - - return lerp(xf0, xf1, ys); - } - - @Override - public double getNoiseRaw(long sl, double x, double y, double z) { - int seed = (int) sl; - int x0 = fastFloor(x); - int y0 = fastFloor(y); - int z0 = fastFloor(z); - - double xs = interpHermite(x - x0); - double ys = interpHermite(y - y0); - double zs = interpHermite(z - z0); - - x0 *= PRIME_X; - y0 *= PRIME_Y; - z0 *= PRIME_Z; - int x1 = x0 + PRIME_X; - int y1 = y0 + PRIME_Y; - int z1 = z0 + PRIME_Z; - - double xf00 = lerp(valCoord(seed, x0, y0, z0), valCoord(seed, x1, y0, z0), xs); - double xf10 = lerp(valCoord(seed, x0, y1, z0), valCoord(seed, x1, y1, z0), xs); - double xf01 = lerp(valCoord(seed, x0, y0, z1), valCoord(seed, x1, y0, z1), xs); - double xf11 = lerp(valCoord(seed, x0, y1, z1), valCoord(seed, x1, y1, z1), xs); - - double yf0 = lerp(xf00, xf10, ys); - double yf1 = lerp(xf01, xf11, ys); - - return lerp(yf0, yf1, zs); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java deleted file mode 100644 index 74804a00b..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/samplers/noise/value/ValueStyleNoise.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.noise.samplers.noise.value; - -import com.dfsek.terra.addons.noise.samplers.noise.NoiseFunction; - - -public abstract class ValueStyleNoise extends NoiseFunction { - - protected static double valCoord(int seed, int xPrimed, int yPrimed) { - int hash = hash(seed, xPrimed, yPrimed); - - hash *= hash; - hash ^= hash << 19; - return hash * (1 / 2147483648.0); - } - - protected static double valCoord(int seed, int xPrimed, int yPrimed, int zPrimed) { - int hash = hash(seed, xPrimed, yPrimed, zPrimed); - - hash *= hash; - hash ^= hash << 19; - return hash * (1 / 2147483648.0); - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java deleted file mode 100644 index 8e0def4ca..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashIntrinsic.java +++ /dev/null @@ -1,119 +0,0 @@ -/* -Copyright 2009 Sandia Corporation. Under the terms of Contract -DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government -retains certain rights in this software. - -BSD Open Source License. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Sandia National Laboratories nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - */ - -package com.dfsek.terra.addons.noise.util; - -import java.io.Serializable; - - -public abstract class HashIntrinsic implements Serializable { - public static final int FLOAT_EXP_BIT_MASK = 2139095040; - public static final int FLOAT_SIGNIF_BIT_MASK = 8388607; - public static final long DOUBLE_EXP_BIT_MASK = 9218868437227405312L; - public static final long DOUBLE_SIGNIF_BIT_MASK = 4503599627370495L; - protected static final int DEFAULT_INITIAL_CAPACITY = 16; - protected static final int MAXIMUM_CAPACITY = 1073741824; - protected static final float DEFAULT_LOAD_FACTOR = 0.75F; - private static final long serialVersionUID = 8058099372006904458L; - protected int size; - protected int threshold; - protected float loadFactor; - protected int capMinus1; - - protected HashIntrinsic(int initialCapacity, float loadFactor) { - if(initialCapacity <= 0) { - throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity); - } else if(!(loadFactor <= 0.0F) && !Float.isNaN(loadFactor)) { - if(initialCapacity > 1073741824) { - initialCapacity = 1073741824; - } - - int capacity; - for(capacity = 1; capacity < initialCapacity; capacity <<= 1) { - } - - this.capMinus1 = capacity - 1; - this.loadFactor = loadFactor; - this.threshold = (int) ((float) capacity * loadFactor); - } else { - throw new IllegalArgumentException("Illegal load factor: " + loadFactor); - } - } - - public static int floatToIntBits(float value) { - int result = Float.floatToRawIntBits(value); - if((result & 2139095040) == 2139095040 && (result & 8388607) != 0) { - result = 2143289344; - } - - return result; - } - - public static long doubleToLongBits(double value) { - long result = Double.doubleToRawLongBits(value); - if((result & 9218868437227405312L) == 9218868437227405312L && (result & 4503599627370495L) != 0L) { - result = 9221120237041090560L; - } - - return result; - } - - protected static int hashCodeLong(long value) { - return (int) (value ^ value >>> 32); - } - - protected static int hashCodeFloat(float value) { - return floatToIntBits(value); - } - - protected static int hashCodeDouble(double value) { - long bits = doubleToLongBits(value); - return (int) (bits ^ bits >>> 32); - } - - protected static int tableIndex(int hc, int lm1) { - hc ^= hc >>> 20 ^ hc >>> 12; - hc ^= hc >>> 7 ^ hc >>> 4; - return hc & lm1; - } - - public int size() { - return this.size; - } - - public abstract void clear(); - - public boolean isEmpty() { - return this.size == 0; - } -} diff --git a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java b/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java deleted file mode 100644 index a07d2cd74..000000000 --- a/common/addons/config-noise-function/src/main/java/com/dfsek/terra/addons/noise/util/HashMapDoubleDouble.java +++ /dev/null @@ -1,295 +0,0 @@ -/* -Copyright 2009 Sandia Corporation. Under the terms of Contract -DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government -retains certain rights in this software. - -BSD Open Source License. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Sandia National Laboratories nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - */ - -package com.dfsek.terra.addons.noise.util; - -import java.io.Serializable; -import java.util.Arrays; -import java.util.NoSuchElementException; - - -public class HashMapDoubleDouble extends HashIntrinsic { - private static final long serialVersionUID = 2109458761298324234L; - private HashMapDoubleDouble.Entry[] table; - - public HashMapDoubleDouble(int initialCapacity, float loadFactor) { - super(initialCapacity, loadFactor); - this.table = this.createTable(this.capMinus1 + 1); - } - - public HashMapDoubleDouble(int initialCapacity) { - this(initialCapacity, 0.75F); - } - - public HashMapDoubleDouble() { - this(16, 0.75F); - } - - public final boolean contains(double key) { - int i = tableIndex(hashCodeDouble(key), this.capMinus1); - - for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { - if(e.key == key) { - return true; - } - } - - return false; - } - - public boolean containsValue(double value) { - for(Entry entry : this.table) { - for(Entry e = entry; e != null; e = e.next) { - if(value == e.value) { - return true; - } - } - } - - return false; - } - - public double get(double key) { - int i = tableIndex(hashCodeDouble(key), this.capMinus1); - - for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { - if(key == e.key) { - return e.value; - } - } - - return 4.9E-324D; - } - - public double put(double key, double value) { - int i = tableIndex(hashCodeDouble(key), this.capMinus1); - - for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { - if(key == e.key) { - double oldValue = e.value; - e.value = value; - return oldValue; - } - } - - this.addEntry(key, value, i); - return 4.9E-324D; - } - - public void resize(int newCapacity) { - int oldCapacity = this.table.length; - if(oldCapacity == 1073741824) { - this.threshold = 2147483647; - } else { - HashMapDoubleDouble.Entry[] newTable = this.createTable(newCapacity); - this.capMinus1 = newCapacity - 1; - this.transfer(newTable); - this.table = newTable; - this.threshold = (int) ((float) newCapacity * this.loadFactor); - } - } - - public final HashMapDoubleDouble.Entry remove(double key) { - int i = tableIndex(hashCodeDouble(key), this.capMinus1); - HashMapDoubleDouble.Entry prev = this.table[i]; - - HashMapDoubleDouble.Entry e; - HashMapDoubleDouble.Entry next; - for(e = prev; e != null; e = next) { - next = e.next; - if(key == e.key) { - --this.size; - if(prev == e) { - this.table[i] = next; - } else { - prev.next = next; - } - - return e; - } - - prev = e; - } - - return e; - } - - public void clear() { - Arrays.fill(this.table, null); - - this.size = 0; - } - - public long memoryEstimate(int ptrsize) { - return (long) ptrsize * (long) (this.capMinus1 + this.size + 1) + (this.size * 64L / 4); - } - - public HashMapDoubleDouble.Iterator iterator() { - return new HashMapDoubleDouble.Iterator(); - } - - private void addEntry(double key, double value, int index) { - HashMapDoubleDouble.Entry e = this.table[index]; - this.table[index] = new HashMapDoubleDouble.Entry(key, value, e); - if(this.size++ >= this.threshold) { - this.resize(2 * this.table.length); - } - - } - - private void transfer(HashMapDoubleDouble.Entry[] newTable) { - for(int j = 0; j < this.table.length; ++j) { - HashMapDoubleDouble.Entry e = this.table[j]; - if(e != null) { - this.table[j] = null; - - HashMapDoubleDouble.Entry next; - do { - next = e.next; - int i = tableIndex(hashCodeDouble(e.key), this.capMinus1); - e.next = newTable[i]; - newTable[i] = e; - e = next; - } while(next != null); - } - } - - } - - private HashMapDoubleDouble.Entry[] createTable(int capacity) { - return new HashMapDoubleDouble.Entry[capacity]; - } - - public HashMapDoubleDouble.Entry getEntry(double key) { - int i = tableIndex(hashCodeDouble(key), this.capMinus1); - - for(HashMapDoubleDouble.Entry e = this.table[i]; e != null; e = e.next) { - if(key == e.key) { - return e; - } - } - - return null; - } - - - public static class Entry implements Serializable { - private static final long serialVersionUID = 7972173983741231238L; - private final double key; - private double value; - private HashMapDoubleDouble.Entry next; - - public Entry(double key, double val, HashMapDoubleDouble.Entry n) { - this.key = key; - this.value = val; - this.next = n; - } - - public final double setValue(double newValue) { - double oldValue = this.value; - this.value = newValue; - return oldValue; - } - - public final double getKey() { - return this.key; - } - - public final double getValue() { - return this.value; - } - - public final int hashCode() { - return hashCodeDouble(key) + hashCodeDouble(value); - } - - public final boolean equals(Object o) { - HashMapDoubleDouble.Entry e = (HashMapDoubleDouble.Entry) o; - return this.key == e.key && this.value == e.value; - } - - public final String toString() { - return this.key + " = " + this.value; - } - } - - - public class Iterator { - HashMapDoubleDouble.Entry next; - int index; - HashMapDoubleDouble.Entry current; - - Iterator() { - if(HashMapDoubleDouble.this.size > 0) { - while(this.index < HashMapDoubleDouble.this.table.length && - (this.next = HashMapDoubleDouble.this.table[this.index++]) == null) { - } - } - - } - - public HashMapDoubleDouble.Entry nextEntry() { - HashMapDoubleDouble.Entry e = this.next; - if(e == null) { - throw new NoSuchElementException(); - } else { - if((this.next = e.next) == null) { - while(this.index < HashMapDoubleDouble.this.table.length && - (this.next = HashMapDoubleDouble.this.table[this.index++]) == null) { - } - } - - this.current = e; - return e; - } - } - - public double next() { - return this.nextEntry().value; - } - - public void remove() { - if(this.current == null) { - throw new IllegalStateException(); - } else { - double k = this.current.key; - this.current = null; - HashMapDoubleDouble.this.remove(k); - } - } - - public final boolean hasNext() { - return this.next != null; - } - } -} From 76f6184640019cda6d04a733858e8a098ddbfca5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:18:50 -0700 Subject: [PATCH 39/97] add noise addon as submodule --- .gitmodules | 3 +++ common/addons/config-noise-function | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-noise-function diff --git a/.gitmodules b/.gitmodules index 2df23f2b6..67018f2f4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,3 +28,6 @@ [submodule "common/addons/config-locators"] path = common/addons/config-locators url = https://github.com/PolyhedralDev/Terra-config-locators +[submodule "common/addons/config-noise-function"] + path = common/addons/config-noise-function + url = https://github.com/PolyhedralDev/Terra-config-noise-function diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function new file mode 160000 index 000000000..dadffdfa4 --- /dev/null +++ b/common/addons/config-noise-function @@ -0,0 +1 @@ +Subproject commit dadffdfa46d743bcd1a45cd2ff3b4b9c2f401d5e From 097d33a0562fc9eeff52b3e662cb893a87efc8a9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:20:14 -0700 Subject: [PATCH 40/97] remove ore addon from main repo --- common/addons/config-ore/README.md | 3 - common/addons/config-ore/build.gradle.kts | 2 - .../com/dfsek/terra/addons/ore/OreAddon.java | 32 ------- .../dfsek/terra/addons/ore/OreConfigType.java | 38 --------- .../dfsek/terra/addons/ore/OreFactory.java | 16 ---- .../dfsek/terra/addons/ore/OrePopulator.java | 55 ------------ .../dfsek/terra/addons/ore/OreTemplate.java | 80 ----------------- .../com/dfsek/terra/addons/ore/ores/Ore.java | 43 ---------- .../terra/addons/ore/ores/OreConfig.java | 22 ----- .../terra/addons/ore/ores/OreHolder.java | 48 ----------- .../terra/addons/ore/ores/VanillaOre.java | 85 ------------------- 11 files changed, 424 deletions(-) delete mode 100644 common/addons/config-ore/README.md delete mode 100644 common/addons/config-ore/build.gradle.kts delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java delete mode 100644 common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java diff --git a/common/addons/config-ore/README.md b/common/addons/config-ore/README.md deleted file mode 100644 index 1b72835ea..000000000 --- a/common/addons/config-ore/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-ore - -Registers the default configuration for Terra Ores, `ORE`. \ No newline at end of file diff --git a/common/addons/config-ore/build.gradle.kts b/common/addons/config-ore/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-ore/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java deleted file mode 100644 index 4784f8686..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreAddon.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.dfsek.terra.addons.ore; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.world.generator.GenerationStageProvider; - - -@Addon("config-ore") -@Author("Terra") -@Version("1.0.0") -public class OreAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new OreConfigType(), "ORE", 1); - event.getPack().getOrCreateRegistry(GenerationStageProvider.class).register("ORE", pack -> new OrePopulator(platform)); - }) - .failThrough(); - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java deleted file mode 100644 index 1719368c2..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreConfigType.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.ore; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.ore.ores.Ore; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; - - -public class OreConfigType implements ConfigType { - public static final TypeKey ORE_TYPE_TOKEN = new TypeKey<>() { - }; - private final OreFactory factory = new OreFactory(); - - @Override - public Supplier> registrySupplier(ConfigPack pack) { - return pack.getRegistryFactory()::create; - } - - @Override - public OreTemplate getTemplate(ConfigPack pack, Platform platform) { - return new OreTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return ORE_TYPE_TOKEN; - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java deleted file mode 100644 index 283ca9f19..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreFactory.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.ore; - -import com.dfsek.terra.addons.ore.ores.Ore; -import com.dfsek.terra.addons.ore.ores.VanillaOre; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.ConfigFactory; - - -public class OreFactory implements ConfigFactory { - @Override - public Ore build(OreTemplate config, Platform platform) { - BlockState m = config.getMaterial(); - return new VanillaOre(m, config.getReplaceable(), config.doPhysics(), config.getSize(), platform, config.getMaterialOverrides()); - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java deleted file mode 100644 index 7ca39e6c8..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OrePopulator.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.dfsek.terra.addons.ore; - -import org.jetbrains.annotations.NotNull; - -import java.util.Random; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.generator.GenerationStage; - - -public class OrePopulator implements GenerationStage { - private final Platform platform; - - public OrePopulator(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("try") - @Override - public void populate(@NotNull World world, @NotNull Chunk chunk) { - try(ProfileFrame ignore = platform.getProfiler().profile("ore")) { - if(world.getConfig().disableOres()) return; - - for(int cx = -1; cx <= 1; cx++) { - for(int cz = -1; cz <= 1; cz++) { - Random random = new Random(PopulationUtil.getCarverChunkSeed(chunk.getX() + cx, chunk.getZ() + cz, world.getSeed())); - int originX = ((chunk.getX() + cx) << 4); - int originZ = ((chunk.getZ() + cz) << 4); - TerraBiome b = world.getBiomeProvider().getBiome(originX + 8, originZ + 8, world.getSeed()); - /* - BiomeTemplate config = ((UserDefinedBiome) b).getConfig(); - int finalCx = cx; - int finalCz = cz; - config.getOreHolder().forEach((id, orePair) -> { - try(ProfileFrame ignored = main.getProfiler().profile("ore:" + id)) { - int amount = orePair.getRight().getAmount().get(random); - for(int i = 0; i < amount; i++) { - Vector3 location = new Vector3(random.nextInt(16) + 16 * finalCx, orePair.getRight().getHeight().get - (random), random.nextInt(16) + 16 * finalCz); - orePair.getLeft().generate(location, chunk, random); - } - } - }); - - */ - } - } - } - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java deleted file mode 100644 index fbbfa14d9..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/OreTemplate.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.dfsek.terra.addons.ore; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; - -import java.util.HashMap; -import java.util.Map; - -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.MaterialSet; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class OreTemplate implements AbstractableTemplate { - @Value("id") - @Final - private String id; - - @Value("material") - private @Meta BlockState material; - - @Value("material-overrides") - @Default - private @Meta Map<@Meta BlockType, @Meta BlockState> materials = new HashMap<>(); - - @Value("replace") - private @Meta MaterialSet replaceable; - - @Value("physics") - @Default - private @Meta boolean physics = false; - - @Value("size") - private @Meta Range size; - - @Value("deform") - @Default - private @Meta double deform = 0.75D; - - @Value("deform-frequency") - @Default - private @Meta double deformFrequency = 0.1D; - - public boolean doPhysics() { - return physics; - } - - public double getDeform() { - return deform; - } - - public double getDeformFrequency() { - return deformFrequency; - } - - public Range getSize() { - return size; - } - - public BlockState getMaterial() { - return material; - } - - public MaterialSet getReplaceable() { - return replaceable; - } - - public String getID() { - return id; - } - - public Map getMaterialOverrides() { - return materials; - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java deleted file mode 100644 index 5c4014cba..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/Ore.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.addons.ore.ores; - -import java.util.Map; -import java.util.Random; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; - - -public abstract class Ore { - - private final BlockState material; - private final MaterialSet replaceable; - private final boolean applyGravity; - private final Map materials; - protected Platform platform; - - public Ore(BlockState material, MaterialSet replaceable, boolean applyGravity, Platform platform, Map materials) { - this.material = material; - this.replaceable = replaceable; - this.applyGravity = applyGravity; - this.platform = platform; - this.materials = materials; - } - - public abstract void generate(Vector3 origin, Chunk c, Random r); - - public BlockState getMaterial(BlockType replace) { - return materials.getOrDefault(replace, material); - } - - public MaterialSet getReplaceable() { - return replaceable; - } - - public boolean isApplyGravity() { - return applyGravity; - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java deleted file mode 100644 index 2f23ddadb..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.ore.ores; - -import com.dfsek.terra.api.util.Range; - - -public class OreConfig { - private final Range amount; - private final Range height; - - public OreConfig(Range amount, Range height) { - this.amount = amount; - this.height = height; - } - - public Range getAmount() { - return amount; - } - - public Range getHeight() { - return height; - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java deleted file mode 100644 index 18344605c..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/OreHolder.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dfsek.terra.addons.ore.ores; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.BiConsumer; - -import com.dfsek.terra.api.util.generic.pair.ImmutablePair; - - -/** - * Holds ordered list of ores mapped to their configs. - */ -public class OreHolder { - private final List entries = new ArrayList<>(); - - public void forEach(BiConsumer> consumer) { - entries.forEach(entry -> consumer.accept(entry.getId(), ImmutablePair.of(entry.getOre(), entry.getConfig()))); - } - - public OreHolder add(Ore ore, OreConfig config, String id) { - entries.add(new Entry(ore, config, id)); - return this; - } - - private static final class Entry { - private final Ore ore; - private final OreConfig config; - private final String id; - - private Entry(Ore ore, OreConfig config, String id) { - this.ore = ore; - this.config = config; - this.id = id; - } - - public OreConfig getConfig() { - return config; - } - - public Ore getOre() { - return ore; - } - - public String getId() { - return id; - } - } -} diff --git a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java b/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java deleted file mode 100644 index 78bcfc0a1..000000000 --- a/common/addons/config-ore/src/main/java/com/dfsek/terra/addons/ore/ores/VanillaOre.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.dfsek.terra.addons.ore.ores; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; - -import java.util.Map; -import java.util.Random; - -import com.dfsek.terra.api.block.BlockType; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.MaterialSet; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; - - -public class VanillaOre extends Ore { - private final Range sizeRange; - - public VanillaOre(BlockState material, MaterialSet replaceable, boolean applyGravity, Range size, Platform platform, - Map materials) { - super(material, replaceable, applyGravity, platform, materials); - this.sizeRange = size; - } - - @Override - public void generate(Vector3 location, Chunk chunk, Random random) { - double size = sizeRange.get(random); - - int centerX = location.getBlockX(); - int centerZ = location.getBlockZ(); - int centerY = location.getBlockY(); - - - double f = random.nextFloat() * Math.PI; - - double fS = FastMath.sin(f) * size / 8.0F; - double fC = FastMath.cos(f) * size / 8.0F; - - double d1 = centerX + 8 + fS; - double d2 = centerX + 8 - fS; - double d3 = centerZ + 8 + fC; - double d4 = centerZ + 8 - fC; - - double d5 = centerY + random.nextInt(3) - 2D; - double d6 = centerY + random.nextInt(3) - 2D; - - for(int i = 0; i < size; i++) { - double iFactor = i / size; - - double d10 = random.nextDouble() * size / 16.0D; - double d11 = (FastMath.sin(Math.PI * iFactor) + 1.0) * d10 + 1.0; - - int xStart = FastMath.roundToInt(FastMath.floor(d1 + (d2 - d1) * iFactor - d11 / 2.0D)); - int yStart = FastMath.roundToInt(FastMath.floor(d5 + (d6 - d5) * iFactor - d11 / 2.0D)); - int zStart = FastMath.roundToInt(FastMath.floor(d3 + (d4 - d3) * iFactor - d11 / 2.0D)); - - int xEnd = FastMath.roundToInt(FastMath.floor(d1 + (d2 - d1) * iFactor + d11 / 2.0D)); - int yEnd = FastMath.roundToInt(FastMath.floor(d5 + (d6 - d5) * iFactor + d11 / 2.0D)); - int zEnd = FastMath.roundToInt(FastMath.floor(d3 + (d4 - d3) * iFactor + d11 / 2.0D)); - - for(int x = xStart; x <= xEnd; x++) { - double d13 = (x + 0.5D - (d1 + (d2 - d1) * iFactor)) / (d11 / 2.0D); - - if(d13 * d13 < 1.0D) { - for(int y = yStart; y <= yEnd; y++) { - double d14 = (y + 0.5D - (d5 + (d6 - d5) * iFactor)) / (d11 / 2.0D); - if(d13 * d13 + d14 * d14 < 1.0D) { - for(int z = zStart; z <= zEnd; z++) { - double d15 = (z + 0.5D - (d3 + (d4 - d3) * iFactor)) / (d11 / 2.0D); - if(x > 15 || z > 15 || y > 255 || x < 0 || z < 0 || y < 0) continue; - - BlockType type = chunk.getBlock(x, y, z).getBlockType(); - if((d13 * d13 + d14 * d14 + d15 * d15 < 1.0D) && getReplaceable().contains(type)) { - chunk.setBlock(x, y, z, getMaterial(type), isApplyGravity()); - } - } - } - } - } - } - } - } -} From 75209dc6eb0f87079a33846e70a31afe82ba3954 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:20:34 -0700 Subject: [PATCH 41/97] add ore addon as submodule --- .gitmodules | 3 +++ common/addons/config-ore | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-ore diff --git a/.gitmodules b/.gitmodules index 67018f2f4..a4f97f1a5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -31,3 +31,6 @@ [submodule "common/addons/config-noise-function"] path = common/addons/config-noise-function url = https://github.com/PolyhedralDev/Terra-config-noise-function +[submodule "common/addons/config-ore"] + path = common/addons/config-ore + url = https://github.com/PolyhedralDev/Terra-config-ore diff --git a/common/addons/config-ore b/common/addons/config-ore new file mode 160000 index 000000000..31f057cba --- /dev/null +++ b/common/addons/config-ore @@ -0,0 +1 @@ +Subproject commit 31f057cbaddd1a46b1a6d258e344decf0d216992 From 67e30df22b0ad1798e5aa3ec9c7e6481014ab21d Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:22:27 -0700 Subject: [PATCH 42/97] remove palette addon from main repo --- common/addons/config-palette/README.md | 3 - common/addons/config-palette/build.gradle.kts | 2 - .../terra/addons/palette/PaletteAddon.java | 33 ------ .../addons/palette/PaletteConfigType.java | 55 --------- .../terra/addons/palette/PaletteFactory.java | 19 --- .../terra/addons/palette/PaletteTemplate.java | 39 ------ .../addons/palette/palette/NoisePalette.java | 28 ----- .../addons/palette/palette/PaletteImpl.java | 112 ------------------ .../palette/palette/PaletteLayerHolder.java | 33 ------ .../palette/palette/PaletteLayerLoader.java | 43 ------- 10 files changed, 367 deletions(-) delete mode 100644 common/addons/config-palette/README.md delete mode 100644 common/addons/config-palette/build.gradle.kts delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java delete mode 100644 common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java diff --git a/common/addons/config-palette/README.md b/common/addons/config-palette/README.md deleted file mode 100644 index 7aa0bbe8f..000000000 --- a/common/addons/config-palette/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-palette - -Registers the default configuration for Terra Palettes, `PALETTE`. \ No newline at end of file diff --git a/common/addons/config-palette/build.gradle.kts b/common/addons/config-palette/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/config-palette/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java deleted file mode 100644 index 358196707..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteAddon.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.palette; - -import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; -import com.dfsek.terra.addons.palette.palette.PaletteLayerLoader; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; - - -@Addon("config-palette") -@Author("Terra") -@Version("1.0.0") -public class PaletteAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - event.getPack().registerConfigType(new PaletteConfigType(platform), "PALETTE", 2); - event.getPack().applyLoader(PaletteLayerHolder.class, new PaletteLayerLoader()); - }) - .failThrough(); - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java deleted file mode 100644 index 37e7e934e..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteConfigType.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.dfsek.terra.addons.palette; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.TypeLoader; - -import java.util.function.Supplier; - -import com.dfsek.terra.addons.palette.palette.PaletteImpl; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.config.ConfigType; -import com.dfsek.terra.api.registry.OpenRegistry; -import com.dfsek.terra.api.util.reflection.TypeKey; -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteConfigType implements ConfigType { - public static final TypeKey PALETTE_TYPE_TOKEN = new TypeKey<>() { - }; - private final PaletteFactory factory = new PaletteFactory(); - private final Platform platform; - - public PaletteConfigType(Platform platform) { - this.platform = platform; - } - - @Override - public Supplier> registrySupplier(ConfigPack pack) { - return () -> pack.getRegistryFactory().create(registry -> (TypeLoader) (t, c, loader) -> { - if(((String) c).startsWith("BLOCK:")) - return new PaletteImpl.Singleton( - platform.getWorldHandle().createBlockData(((String) c).substring(6))); // Return single palette for BLOCK: shortcut. - Palette obj = registry.get((String) c); - if(obj == null) - throw new LoadException("No such " + t.getType().getTypeName() + " matching \"" + c + "\" was found in this registry."); - return obj; - }); - } - - @Override - public PaletteTemplate getTemplate(ConfigPack pack, Platform platform) { - return new PaletteTemplate(); - } - - @Override - public ConfigFactory getFactory() { - return factory; - } - - @Override - public TypeKey getTypeKey() { - return PALETTE_TYPE_TOKEN; - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java deleted file mode 100644 index 3b66f8b22..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteFactory.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.palette; - -import com.dfsek.terra.addons.palette.palette.NoisePalette; -import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.world.generator.Palette; - - -public class PaletteFactory implements ConfigFactory { - @Override - public Palette build(PaletteTemplate config, Platform platform) { - NoisePalette palette = new NoisePalette(config.getNoise()); - for(PaletteLayerHolder layer : config.getPalette()) { - palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); - } - return palette; - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java deleted file mode 100644 index 8224f2de5..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/PaletteTemplate.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.addons.palette; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; - -import java.util.List; - -import com.dfsek.terra.addons.palette.palette.PaletteLayerHolder; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings({ "FieldMayBeFinal", "unused" }) -public class PaletteTemplate implements AbstractableTemplate { - @Value("noise") - @Default - private @Meta NoiseSampler noise = NoiseSampler.zero(); - - @Value("id") - @Final - private String id; - - @Value("layers") - private @Meta List<@Meta PaletteLayerHolder> palette; - - public String getID() { - return id; - } - - public List getPalette() { - return palette; - } - - public NoiseSampler getNoise() { - return noise; - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java deleted file mode 100644 index 7f630a4b2..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/NoisePalette.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.palette.palette; - -import java.util.List; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.noise.NoiseSampler; - - -public class NoisePalette extends PaletteImpl { - private final NoiseSampler sampler; - - public NoisePalette(NoiseSampler sampler) { - this.sampler = sampler; - } - - @Override - public BlockState get(int layer, double x, double y, double z, long seed) { - PaletteLayer paletteLayer; - if(layer > this.getSize()) paletteLayer = this.getLayers().get(this.getLayers().size() - 1); - else { - List pl = getLayers(); - if(layer >= pl.size()) paletteLayer = pl.get(pl.size() - 1); - else paletteLayer = pl.get(layer); - } - NoiseSampler paletteSampler = paletteLayer.getSampler(); - return paletteLayer.get(paletteSampler == null ? sampler : paletteSampler, x, y, z, seed); - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java deleted file mode 100644 index 1201b852e..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.dfsek.terra.addons.palette.palette; - -import java.util.ArrayList; -import java.util.List; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; -import com.dfsek.terra.api.world.generator.Palette; - - -/** - * A class representation of a "slice" of the world. - * Used to get a section of blocks, based on the depth at which they are found. - */ -public abstract class PaletteImpl implements Palette { - private final List pallet = new ArrayList<>(); - - /** - * Constructs a blank palette. - */ - public PaletteImpl() { - - } - - @Override - public Palette add(BlockState m, int layers, NoiseSampler sampler) { - for(int i = 0; i < layers; i++) { - pallet.add(new PaletteLayer(m, sampler)); - } - return this; - } - - @Override - public Palette add(ProbabilityCollection m, int layers, NoiseSampler sampler) { - for(int i = 0; i < layers; i++) { - pallet.add(new PaletteLayer(m, sampler)); - } - return this; - } - - - @Override - public int getSize() { - return pallet.size(); - } - - public List getLayers() { - return pallet; - } - - /** - * Class representation of a layer of a BlockPalette. - */ - public static class PaletteLayer { - private final boolean col; // Is layer using a collection? - private final NoiseSampler sampler; - private ProbabilityCollection collection; - private BlockState m; - - /** - * Constructs a PaletteLayerHolder with a ProbabilityCollection of materials and a number of layers. - * - * @param type The collection of materials to choose from. - * @param sampler Noise sampler to use - */ - public PaletteLayer(ProbabilityCollection type, NoiseSampler sampler) { - this.sampler = sampler; - this.col = true; - this.collection = type; - } - - /** - * Constructs a PaletteLayerHolder with a single Material and a number of layers. - * - * @param type The material to use. - * @param sampler Noise sampler to use - */ - public PaletteLayer(BlockState type, NoiseSampler sampler) { - this.sampler = sampler; - this.col = false; - this.m = type; - } - - public BlockState get(NoiseSampler random, double x, double y, double z, long seed) { - if(col) return this.collection.get(random, x, y, z, seed); - return m; - } - - public NoiseSampler getSampler() { - return sampler; - } - - public ProbabilityCollection getCollection() { - return collection; - } - } - - - public static class Singleton extends PaletteImpl { - private final BlockState item; - - public Singleton(BlockState item) { - this.item = item; - } - - @Override - public BlockState get(int layer, double x, double y, double z, long seed) { - return item; - } - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java deleted file mode 100644 index 484872036..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerHolder.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.palette.palette; - -import org.jetbrains.annotations.NotNull; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class PaletteLayerHolder { - private final ProbabilityCollection layer; - private final NoiseSampler sampler; - private final int size; - - public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { - this.layer = layer; - this.sampler = sampler; - this.size = size; - } - - @NotNull - public ProbabilityCollection getLayer() { - return layer; - } - - public int getSize() { - return size; - } - - public NoiseSampler getSampler() { - return sampler; - } -} diff --git a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java b/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java deleted file mode 100644 index 0f5104930..000000000 --- a/common/addons/config-palette/src/main/java/com/dfsek/terra/addons/palette/palette/PaletteLayerLoader.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.addons.palette.palette; - -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; - -import java.lang.reflect.AnnotatedType; -import java.util.Map; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -@SuppressWarnings("unchecked") -public class PaletteLayerLoader implements TypeLoader { - private static final AnnotatedType BLOCK_DATA_PROBABILITY_COLLECTION_TYPE; - static { - try { - BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection") - .getAnnotatedType(); - } catch(NoSuchFieldException e) { - throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong.", e); - } - } - @SuppressWarnings("unused") - private ProbabilityCollection blockStateProbabilityCollection; - - @Override - public PaletteLayerHolder load(AnnotatedType type, Object o, ConfigLoader configLoader) throws LoadException { - Map map = (Map) o; - ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType( - BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); - - NoiseSampler sampler = null; - if(map.containsKey("noise")) { - sampler = configLoader.loadType(NoiseSampler.class, map.get("noise")); - } - - if(collection == null) throw new LoadException("Collection is null: " + map.get("materials")); - return new PaletteLayerHolder(collection, sampler, (Integer) map.get("layers")); - } -} From c3a90b2022484a4af9d49404b150d0fd4632e008 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:22:42 -0700 Subject: [PATCH 43/97] add palette addon as submodule --- .gitmodules | 3 +++ common/addons/config-palette | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-palette diff --git a/.gitmodules b/.gitmodules index a4f97f1a5..65291c1a1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,3 +34,6 @@ [submodule "common/addons/config-ore"] path = common/addons/config-ore url = https://github.com/PolyhedralDev/Terra-config-ore +[submodule "common/addons/config-palette"] + path = common/addons/config-palette + url = https://github.com/PolyhedralDev/Terra-config-palette diff --git a/common/addons/config-palette b/common/addons/config-palette new file mode 160000 index 000000000..1793e729d --- /dev/null +++ b/common/addons/config-palette @@ -0,0 +1 @@ +Subproject commit 1793e729dd655d1b08ea87aec4881f402d69691c From 48abed87db872298323b222a8446e97968763249 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:24:27 -0700 Subject: [PATCH 44/97] remove structure addon from main repo --- common/addons/config-structure/README.md | 3 - .../addons/config-structure/build.gradle.kts | 3 - .../addons/structure/BiomeStructures.java | 19 --- .../structure/BiomeStructuresTemplate.java | 23 ---- .../addons/structure/StructureAddon.java | 29 ----- .../addons/structure/StructureFactory.java | 13 -- .../addons/structure/StructurePopulator.java | 53 --------- .../addons/structure/StructureTemplate.java | 44 ------- .../addons/structure/TerraStructure.java | 40 ------- .../command/AsyncStructureFinder.java | 111 ------------------ .../command/structure/StructureCommand.java | 34 ------ .../structure/StructureExportCommand.java | 106 ----------------- .../structure/StructureLoadCommand.java | 85 -------------- .../structure/StructureLocateCommand.java | 75 ------------ .../argument/ScriptArgumentParser.java | 19 --- .../argument/StructureArgumentParser.java | 19 --- .../completer/RotationCompleter.java | 15 --- .../structure/completer/ScriptCompleter.java | 23 ---- .../completer/StructureCompleter.java | 23 ---- .../structure/structures/loot/Entry.java | 103 ---------------- .../structures/loot/LootTableImpl.java | 73 ------------ .../structure/structures/loot/Pool.java | 63 ---------- .../loot/functions/AmountFunction.java | 40 ------- .../loot/functions/DamageFunction.java | 47 -------- .../loot/functions/EnchantFunction.java | 72 ------------ .../loot/functions/LootFunction.java | 22 ---- 26 files changed, 1157 deletions(-) delete mode 100644 common/addons/config-structure/README.md delete mode 100644 common/addons/config-structure/build.gradle.kts delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java delete mode 100644 common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java diff --git a/common/addons/config-structure/README.md b/common/addons/config-structure/README.md deleted file mode 100644 index 60e62972a..000000000 --- a/common/addons/config-structure/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# config-structure - -Registers the default configuration for Terra Structures, `STRUCTURE`. \ No newline at end of file diff --git a/common/addons/config-structure/build.gradle.kts b/common/addons/config-structure/build.gradle.kts deleted file mode 100644 index a5227add5..000000000 --- a/common/addons/config-structure/build.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -dependencies { - "shadedApi"("com.googlecode.json-simple:json-simple:1.1.1") -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java deleted file mode 100644 index 69c7ae792..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructures.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.structure; - -import java.util.Set; - -import com.dfsek.terra.api.properties.Properties; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; - - -public class BiomeStructures implements Properties { - private final Set structures; - - public BiomeStructures(Set structures) { - this.structures = structures; - } - - public Set getStructures() { - return structures; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java deleted file mode 100644 index 0af5a5e5b..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/BiomeStructuresTemplate.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.structure; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.Collections; -import java.util.Set; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; - - -public class BiomeStructuresTemplate implements ObjectTemplate { - @Value("structures") - @Default - private @Meta Set<@Meta ConfiguredStructure> structures = Collections.emptySet(); - - @Override - public BiomeStructures get() { - return new BiomeStructures(structures); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java deleted file mode 100644 index 0e1f46aca..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureAddon.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.addons.structure; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; - - -@Addon("config-structure") -@Version("1.0.0") -@Author("Terra") -public class StructureAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack().applyLoader(ConfiguredStructure.class, (t, o, l) -> null)) - .failThrough(); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java deleted file mode 100644 index 6989429dc..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureFactory.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dfsek.terra.addons.structure; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.config.ConfigFactory; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; - - -public class StructureFactory implements ConfigFactory { - @Override - public ConfiguredStructure build(StructureTemplate config, Platform platform) { - return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn()); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java deleted file mode 100644 index ca0ff0b65..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructurePopulator.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.dfsek.terra.addons.structure; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; -import org.jetbrains.annotations.NotNull; - -import java.util.Random; - -import com.dfsek.terra.api.config.WorldConfig; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; -import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.GenerationStage; - - -public class StructurePopulator implements GenerationStage, Chunkified { - private final Platform platform; - - public StructurePopulator(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("try") - @Override - public void populate(@NotNull World world, @NotNull Chunk chunk) { - try(ProfileFrame ignore = platform.getProfiler().profile("structure")) { - if(world.getConfig().disableStructures()) return; - - int cx = (chunk.getX() << 4); - int cz = (chunk.getZ() << 4); - BiomeProvider provider = world.getBiomeProvider(); - WorldConfig config = world.getConfig(); - for(ConfiguredStructure conf : config.getRegistry(TerraStructure.class).entries()) { - Vector3 spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()); - - if(!provider.getBiome(spawn, world.getSeed()).getContext().get(BiomeStructures.class).getStructures().contains(conf)) { - continue; - } - Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), - FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); - conf.getStructure().get(random).generate(spawn.setY(conf.getSpawnStart().get(random)), world, chunk, random, - Rotation.fromDegrees(90 * random.nextInt(4))); - } - } - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java deleted file mode 100644 index b9e86647c..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/StructureTemplate.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.dfsek.terra.addons.structure; - -import com.dfsek.tectonic.annotations.Final; -import com.dfsek.tectonic.annotations.Value; - -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.StructureSpawn; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -@SuppressWarnings({ "unused", "FieldMayBeFinal" }) -public class StructureTemplate implements AbstractableTemplate { - @Value("id") - @Final - private String id; - - @Value("scripts") - private @Meta ProbabilityCollection<@Meta Structure> structure; - - @Value("spawn.start") - private @Meta Range y; - - @Value("spawn") - private @Meta StructureSpawn spawn; - - public String getID() { - return id; - } - - public ProbabilityCollection getStructures() { - return structure; - } - - public Range getY() { - return y; - } - - public StructureSpawn getSpawn() { - return spawn; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java deleted file mode 100644 index 283a45268..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/TerraStructure.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.structure; - -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.StructureSpawn; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class TerraStructure implements ConfiguredStructure { - private final ProbabilityCollection structure; - private final Range spawnStart; - private final StructureSpawn spawn; - - public TerraStructure(ProbabilityCollection structures, Range spawnStart, StructureSpawn spawn) { - this.structure = structures; - this.spawnStart = spawnStart; - this.spawn = spawn; - } - - @Override - public ProbabilityCollection getStructure() { - return structure; - } - - @Override - public Range getSpawnStart() { - return spawnStart; - } - - @Override - public StructureSpawn getSpawn() { - return spawn; - } - - @Override - public String getID() { - return null; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java deleted file mode 100644 index 9cf44879e..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/AsyncStructureFinder.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.dfsek.terra.addons.structure.command; - -import com.dfsek.terra.api.Platform; - -import org.jetbrains.annotations.NotNull; - -import java.util.function.Consumer; - -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class AsyncStructureFinder implements Runnable { - protected final BiomeProvider provider; - protected final ConfiguredStructure target; - protected final int startRadius; - protected final int maxRadius; - protected final int centerX; - protected final int centerZ; - protected final World world; - protected final Platform platform; - private final Consumer callback; - protected int searchSize = 1; - - public AsyncStructureFinder(BiomeProvider provider, ConfiguredStructure target, @NotNull Vector3 origin, World world, int startRadius, - int maxRadius, Consumer callback, Platform platform) { - //setSearchSize(target.getSpawn().getWidth() + 2 * target.getSpawn().getSeparation()); - this.provider = provider; - this.target = target; - this.platform = platform; - this.startRadius = startRadius; - this.maxRadius = maxRadius; - this.centerX = origin.getBlockX(); - this.centerZ = origin.getBlockZ(); - this.world = world; - this.callback = callback; - } - - public Vector3 finalizeVector(Vector3 orig) { - return orig;//target.getSpawn().getChunkSpawn(orig.getBlockX(), orig.getBlockZ(), world.getSeed()); - } - - @Override - public void run() { - int x = centerX; - int z = centerZ; - - x /= searchSize; - z /= searchSize; - - int run = 1; - boolean toggle = true; - boolean found = false; - - main: - for(int i = startRadius; i < maxRadius; i++) { - for(int j = 0; j < run; j++) { - if(isValid(x, z, target)) { - found = true; - break main; - } - if(toggle) x += 1; - else x -= 1; - } - for(int j = 0; j < run; j++) { - if(isValid(x, z, target)) { - found = true; - break main; - } - if(toggle) z += 1; - else z -= 1; - } - run++; - toggle = !toggle; - } - Vector3 finalSpawn = found ? finalizeVector(new Vector3(x, 0, z)) : null; - callback.accept(finalSpawn); - } - - public boolean isValid(int x, int z, ConfiguredStructure target) { - //Vector3 spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()); - //if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; - //Random random = new Random(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn - // .getBlockZ(), 16), world.getSeed())); - //return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), world, random, Rotation - // .fromDegrees(90 * random.nextInt(4))); - return false; - } - - public ConfiguredStructure getTarget() { - return target; - } - - public World getWorld() { - return world; - } - - public BiomeProvider getProvider() { - return provider; - } - - public int getSearchSize() { - return searchSize; - } - - public void setSearchSize(int searchSize) { - this.searchSize = searchSize; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java deleted file mode 100644 index 9b5665688..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureCommand.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure; - -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.Subcommand; -import com.dfsek.terra.api.entity.CommandSender; - - -@Command( - subcommands = { - @Subcommand( - clazz = StructureExportCommand.class, - value = "export", - aliases = "ex" - ), - @Subcommand( - clazz = StructureLoadCommand.class, - value = "load", - aliases = "ld" - ), - @Subcommand( - clazz = StructureLocateCommand.class, - value = "locate", - aliases = "l" - ) - }, - usage = "/te structure" -) -public class StructureCommand implements CommandTemplate { - @Override - public void execute(CommandSender sender) { - //LangUtil.send("command.structure.main-menu", sender); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java deleted file mode 100644 index 5b67a9575..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureExportCommand.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.terra.api.block.entity.Sign; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.vector.Vector3; - - -@PlayerCommand -@WorldCommand -@DebugCommand -@Command(arguments = @Argument("id"), usage = "/terra structure export ") -public class StructureExportCommand implements CommandTemplate { - @Inject - private Platform platform; - - @ArgumentTarget("id") - private String id; - - @Override - public void execute(CommandSender sender) { - Player player = (Player) sender; - - Pair l = platform.getWorldHandle().getSelectedLocation(player); - - Vector3 l1 = l.getLeft(); - Vector3 l2 = l.getRight(); - - StringBuilder scriptBuilder = new StringBuilder("id \"" + id + "\";\nnum y = 0;\n"); - - int centerX = 0; - int centerY = 0; - int centerZ = 0; - - for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { - for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { - for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - BlockEntity state = player.world().getBlockState(x, y, z); - if(state instanceof Sign) { - Sign sign = (Sign) state; - if(sign.getLine(0).equals("[TERRA]") && sign.getLine(1).equals("[CENTER]")) { - centerX = x - l1.getBlockX(); - centerY = y - l1.getBlockY(); - centerZ = z - l1.getBlockZ(); - } - } - } - } - } - - for(int x = l1.getBlockX(); x <= l2.getBlockX(); x++) { - for(int y = l1.getBlockY(); y <= l2.getBlockY(); y++) { - for(int z = l1.getBlockZ(); z <= l2.getBlockZ(); z++) { - - BlockState data = player.world().getBlockData(x, y, z); - if(data.isStructureVoid()) continue; - BlockEntity state = player.world().getBlockState(x, y, z); - if(state instanceof Sign) { - Sign sign = (Sign) state; - if(sign.getLine(0).equals("[TERRA]")) { - data = platform.getWorldHandle().createBlockData(sign.getLine(2) + sign.getLine(3)); - } - } - if(!data.isStructureVoid()) { - scriptBuilder.append("block(").append(x - l1.getBlockX() - centerX).append(", y + ").append( - y - l1.getBlockY() - centerY).append(", ").append(z - l1.getBlockZ() - centerZ).append(", ") - .append("\""); - scriptBuilder.append(data.getAsString()).append("\");\n"); - } - } - } - } - - File file = new File(platform.getDataFolder() + File.separator + "export" + File.separator + "structures", id + ".tesf"); - try { - file.getParentFile().mkdirs(); - file.createNewFile(); - } catch(IOException e) { - e.printStackTrace(); - } - try(BufferedWriter writer = new BufferedWriter(new FileWriter(file))) { - writer.write(scriptBuilder.toString()); - } catch(IOException e) { - e.printStackTrace(); - } - - sender.sendMessage("Exported structure to " + file.getAbsolutePath()); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java deleted file mode 100644 index 8b2c6e3f1..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLoadCommand.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure; - -import java.util.Random; -import java.util.concurrent.ThreadLocalRandom; - -import com.dfsek.terra.addons.structure.command.structure.argument.ScriptArgumentParser; -import com.dfsek.terra.addons.structure.command.structure.completer.RotationCompleter; -import com.dfsek.terra.addons.structure.command.structure.completer.ScriptCompleter; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.Switch; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.command.annotation.inject.SwitchTarget; -import com.dfsek.terra.api.command.annotation.type.DebugCommand; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.rotation.Rotation; - - -@PlayerCommand -@DebugCommand -@WorldCommand -@Command(arguments = { - @Argument( - value = "structure", - tabCompleter = ScriptCompleter.class, - argumentParser = ScriptArgumentParser.class - ), - @Argument( - value = "rotation", - required = false, - tabCompleter = RotationCompleter.class, - argumentParser = IntegerArgumentParser.class, - defaultValue = "0" - ) -}, switches = @Switch(value = "chunk", - aliases = "c" -), usage = "/terra structure load [ROTATION] [-c]") -public class StructureLoadCommand implements CommandTemplate { - @ArgumentTarget("rotation") - private final Integer rotation = 0; - - @SwitchTarget("chunk") - private boolean chunk; - - @ArgumentTarget("structure") - private Structure script; - - @Inject - private Platform platform; - - @Override - public void execute(CommandSender sender) { - Player player = (Player) sender; - - long t = System.nanoTime(); - Random random = new Random(ThreadLocalRandom.current().nextLong()); - Rotation r; - try { - r = Rotation.fromDegrees(rotation); - } catch(Exception e) { - sender.sendMessage("Invalid rotation: " + rotation); - return; - } - if(script == null) { - sender.sendMessage("Invalid structure."); - return; - } - if(this.chunk) { - script.generate(player.position(), player.world(), player.world().getChunkAt(player.position()), random, r); - } else { - script.generate(player.position(), player.world(), random, r); - } - long l = System.nanoTime() - t; - - sender.sendMessage("Took " + ((double) l) / 1000000 + "ms"); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java deleted file mode 100644 index cede50303..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/StructureLocateCommand.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure; - -import java.util.Locale; - -import com.dfsek.terra.addons.structure.command.AsyncStructureFinder; -import com.dfsek.terra.addons.structure.command.structure.argument.StructureArgumentParser; -import com.dfsek.terra.addons.structure.command.structure.completer.StructureCompleter; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.CommandTemplate; -import com.dfsek.terra.api.command.annotation.Argument; -import com.dfsek.terra.api.command.annotation.Command; -import com.dfsek.terra.api.command.annotation.Switch; -import com.dfsek.terra.api.command.annotation.inject.ArgumentTarget; -import com.dfsek.terra.api.command.annotation.inject.SwitchTarget; -import com.dfsek.terra.api.command.annotation.type.PlayerCommand; -import com.dfsek.terra.api.command.annotation.type.WorldCommand; -import com.dfsek.terra.api.command.arg.IntegerArgumentParser; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; -import com.dfsek.terra.api.util.vector.Vector3; - - -@PlayerCommand -@WorldCommand -@Command(arguments = { - @Argument( - value = "structure", - tabCompleter = StructureCompleter.class, - argumentParser = StructureArgumentParser.class - ), - @Argument( - value = "radius", - required = false, - defaultValue = "100", - argumentParser = IntegerArgumentParser.class - ) -}, switches = @Switch( - value = "teleport", - aliases = { "t", "tp" } -)) -public class StructureLocateCommand implements CommandTemplate { - @Inject - private Platform platform; - - @ArgumentTarget("structure") - private ConfiguredStructure structure; - - @ArgumentTarget("radius") - private Integer radius; - - @SwitchTarget("teleport") - private boolean teleport; - - @Override - public void execute(CommandSender sender) { - Player player = (Player) sender; - - new Thread(new AsyncStructureFinder(player.world().getBiomeProvider(), structure, - player.position().clone().multiply((1D / platform.getTerraConfig().getBiomeSearchResolution())), - player.world(), 0, radius, location -> { - if(location != null) { - sender.sendMessage( - String.format("The nearest %s is at [%d, ~, %d] (%.1f blocks away)", structure.getID().toLowerCase(Locale.ROOT), - location.getBlockX(), location.getBlockZ(), - location.add(new Vector3(0, player.position().getY(), 0)).distance(player.position()))); - if(teleport) { - platform.runPossiblyUnsafeTask( - () -> player.position(new Vector3(location.getX(), player.position().getY(), location.getZ()))); - } - } //else LangUtil.send("command.biome.unable-to-locate", sender); - }, platform), "Biome Location Thread").start(); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java deleted file mode 100644 index b1ca7e2e7..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/ScriptArgumentParser.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure.argument; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.arg.ArgumentParser; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.structure.Structure; - - -public class ScriptArgumentParser implements ArgumentParser { - @Inject - private Platform platform; - - @Override - public Structure parse(CommandSender sender, String arg) { - return ((Player) sender).world().getConfig().getRegistry(Structure.class).get(arg); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java deleted file mode 100644 index 5c53464e7..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/argument/StructureArgumentParser.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure.argument; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.arg.ArgumentParser; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; - - -public class StructureArgumentParser implements ArgumentParser { - @Inject - private Platform platform; - - @Override - public ConfiguredStructure parse(CommandSender sender, String arg) { - return ((Player) sender).world().getConfig().getRegistry(ConfiguredStructure.class).get(arg); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java deleted file mode 100644 index 01d5ed287..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/RotationCompleter.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure.completer; - -import java.util.Arrays; -import java.util.List; - -import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.entity.CommandSender; - - -public class RotationCompleter implements TabCompleter { - @Override - public List complete(CommandSender sender) { - return Arrays.asList("0", "90", "180", "270"); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java deleted file mode 100644 index d48daf7a3..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/ScriptCompleter.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure.completer; - -import java.util.List; -import java.util.stream.Collectors; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.structure.Structure; - - -public class ScriptCompleter implements TabCompleter { - @Inject - private Platform platform; - - @Override - public List complete(CommandSender sender) { - return ((Player) sender).world().getConfig().getRegistry(Structure.class).entries().stream().map(Structure::getID).collect( - Collectors.toList()); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java deleted file mode 100644 index d5b1feb7e..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/command/structure/completer/StructureCompleter.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.structure.command.structure.completer; - -import java.util.ArrayList; -import java.util.List; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.command.tab.TabCompleter; -import com.dfsek.terra.api.entity.CommandSender; -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.structure.configured.ConfiguredStructure; - - -public class StructureCompleter implements TabCompleter { - @Inject - private Platform platform; - - @Override - public List complete(CommandSender sender) { - Player player = (Player) sender; - return new ArrayList<>(player.world().getConfig().getRegistry(ConfiguredStructure.class).keys()); - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java deleted file mode 100644 index c86959588..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Entry.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.loot; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.dfsek.terra.addons.structure.structures.loot.functions.AmountFunction; -import com.dfsek.terra.addons.structure.structures.loot.functions.DamageFunction; -import com.dfsek.terra.addons.structure.structures.loot.functions.EnchantFunction; -import com.dfsek.terra.addons.structure.structures.loot.functions.LootFunction; -import com.dfsek.terra.api.inventory.Item; -import com.dfsek.terra.api.inventory.ItemStack; - - -/** - * Representation of a single item entry within a Loot Table pool. - */ -public class Entry { - private final Item item; - private final long weight; - private final List functions = new ArrayList<>(); - - /** - * Instantiates an Entry from a JSON representation. - * - * @param entry The JSON Object to instantiate from. - */ - public Entry(JSONObject entry, Platform platform) { - String id = entry.get("name").toString(); - this.item = platform.getItemHandle().createItem(id); - - long weight1; - try { - weight1 = (long) entry.get("weight"); - } catch(NullPointerException e) { - weight1 = 1; - } - - this.weight = weight1; - if(entry.containsKey("functions")) { - for(Object function : (JSONArray) entry.get("functions")) { - switch(((String) ((JSONObject) function).get("function"))) { - case "minecraft:set_count", "set_count" -> { - Object loot = ((JSONObject) function).get("count"); - long max, min; - if(loot instanceof Long) { - max = (Long) loot; - min = (Long) loot; - } else { - max = (long) ((JSONObject) loot).get("max"); - min = (long) ((JSONObject) loot).get("min"); - } - functions.add(new AmountFunction(FastMath.toIntExact(min), FastMath.toIntExact(max))); - } - case "minecraft:set_damage", "set_damage" -> { - long maxDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("max"); - long minDamage = (long) ((JSONObject) ((JSONObject) function).get("damage")).get("min"); - functions.add(new DamageFunction(FastMath.toIntExact(minDamage), FastMath.toIntExact(maxDamage))); - } - case "minecraft:enchant_with_levels", "enchant_with_levels" -> { - long maxEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("max"); - long minEnchant = (long) ((JSONObject) ((JSONObject) function).get("levels")).get("min"); - JSONArray disabled = null; - if(((JSONObject) function).containsKey("disabled_enchants")) - disabled = (JSONArray) ((JSONObject) function).get("disabled_enchants"); - functions.add( - new EnchantFunction(FastMath.toIntExact(minEnchant), FastMath.toIntExact(maxEnchant), disabled, platform)); - } - } - } - } - } - - /** - * Fetches a single ItemStack from the Entry, applying all functions to it. - * - * @param r The Random instance to apply functions with - * - * @return ItemStack - The ItemStack with all functions applied. - */ - public ItemStack getItem(Random r) { - ItemStack item = this.item.newItemStack(1); - for(LootFunction f : functions) { - item = f.apply(item, r); - } - return item; - } - - /** - * Gets the weight attribute of the Entry. - * - * @return long - The weight of the Entry. - */ - public long getWeight() { - return this.weight; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java deleted file mode 100644 index f32349a43..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/LootTableImpl.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.loot; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.inventory.Inventory; -import com.dfsek.terra.api.inventory.ItemStack; - - -/** - * Class representation of a Loot Table to populate chest loot. - */ -public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable { - private final List pools = new ArrayList<>(); - - /** - * Instantiates a LootTable from a JSON String. - * - * @param json The JSON String representing the loot table. - * - * @throws ParseException if malformed JSON is passed. - */ - public LootTableImpl(String json, Platform platform) throws ParseException { - JSONParser jsonParser = new JSONParser(); - Object tableJSON = jsonParser.parse(json); - JSONArray poolArray = (JSONArray) ((JSONObject) tableJSON).get("pools"); - for(Object pool : poolArray) { - pools.add(new Pool((JSONObject) pool, platform)); - } - } - - @Override - public void fillInventory(Inventory i, Random r) { - List loot = getLoot(r); - for(ItemStack stack : loot) { - int attempts = 0; - while(stack.getAmount() != 0 && attempts < 10) { - ItemStack newStack = stack.getType().newItemStack(stack.getAmount()); - newStack.setItemMeta(stack.getItemMeta()); - newStack.setAmount(1); - int slot = r.nextInt(i.getSize()); - ItemStack slotItem = i.getItem(slot); - if(slotItem == null) { - i.setItem(slot, newStack); - stack.setAmount(stack.getAmount() - 1); - } else if(slotItem.getType().equals(newStack.getType())) { - ItemStack dep = newStack.getType().newItemStack(newStack.getAmount()); - dep.setItemMeta(newStack.getItemMeta()); - dep.setAmount(newStack.getAmount() + slotItem.getAmount()); - i.setItem(slot, dep); - stack.setAmount(stack.getAmount() - 1); - } - attempts++; - } - } - } - - @Override - public List getLoot(Random r) { - List itemList = new ArrayList<>(); - for(Pool pool : pools) { - itemList.addAll(pool.getItems(r)); - } - return itemList; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java deleted file mode 100644 index 22473a722..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/Pool.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.loot; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -/** - * Representation of a Loot Table pool, or a set of items to be fetched independently. - */ -public class Pool { - private final int max; - private final int min; - private final ProbabilityCollection entries; - - /** - * Instantiates a Pool from a JSON representation. - * - * @param pool The JSON Object to instantiate from. - */ - public Pool(JSONObject pool, Platform platform) { - entries = new ProbabilityCollection<>(); - Object amount = pool.get("rolls"); - if(amount instanceof Long) { - max = FastMath.toIntExact((Long) amount); - min = FastMath.toIntExact((Long) amount); - } else { - max = FastMath.toIntExact((Long) ((JSONObject) amount).get("max")); - min = FastMath.toIntExact((Long) ((JSONObject) amount).get("min")); - } - - for(Object entryJSON : (JSONArray) pool.get("entries")) { - Entry entry = new Entry((JSONObject) entryJSON, platform); - entries.add(entry, FastMath.toIntExact(entry.getWeight())); - } - } - - /** - * Fetches a list of items from the pool using the provided Random instance. - * - * @param r The Random instance to use. - * - * @return List<ItemStack> - The list of items fetched. - */ - public List getItems(Random r) { - - int rolls = r.nextInt(max - min + 1) + min; - List items = new ArrayList<>(); - for(int i = 0; i < rolls; i++) { - items.add(entries.get(r).getItem(r)); - } - return items; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java deleted file mode 100644 index c97ea4eaa..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/AmountFunction.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.loot.functions; - - -import java.util.Random; - -import com.dfsek.terra.api.inventory.ItemStack; - - -/** - * Loot LootFunction fot setting the amount of an item. - */ -public class AmountFunction implements LootFunction { - private final int max; - private final int min; - - /** - * Instantiates an AmountFunction. - * - * @param min Minimum amount. - * @param max Maximum amount. - */ - public AmountFunction(int min, int max) { - this.min = min; - this.max = max; - } - - /** - * Applies the function to an ItemStack. - * - * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. - * - * @return - ItemStack - The mutated ItemStack. - */ - @Override - public ItemStack apply(ItemStack original, Random r) { - original.setAmount(r.nextInt(max - min + 1) + min); - return original; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java deleted file mode 100644 index d778f13c9..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/DamageFunction.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.loot.functions; - -import java.util.Random; - -import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.inventory.item.Damageable; -import com.dfsek.terra.api.inventory.item.ItemMeta; - - -/** - * Loot LootFunction for setting the damage on items in Loot Tables - */ -public class DamageFunction implements LootFunction { - private final int max; - private final int min; - - /** - * Instantiates a DamageFunction. - * - * @param min Minimum amount of damage (percentage, out of 100) - * @param max Maximum amount of damage (percentage, out of 100) - */ - public DamageFunction(int min, int max) { - this.min = min; - this.max = max; - } - - /** - * Applies the function to an ItemStack. - * - * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. - * - * @return - ItemStack - The mutated ItemStack. - */ - @Override - public ItemStack apply(ItemStack original, Random r) { - if(original == null) return null; - if(!original.isDamageable()) return original; - ItemMeta meta = original.getItemMeta(); - double itemDurability = (r.nextDouble() * (max - min)) + min; - Damageable damage = (Damageable) meta; - damage.setDamage((int) (original.getType().getMaxDurability() - (itemDurability / 100) * original.getType().getMaxDurability())); - original.setItemMeta((ItemMeta) damage); - return original; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java deleted file mode 100644 index bf3c07a1d..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/EnchantFunction.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.loot.functions; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; -import org.json.simple.JSONArray; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import com.dfsek.terra.api.inventory.ItemStack; -import com.dfsek.terra.api.inventory.item.Enchantment; -import com.dfsek.terra.api.inventory.item.ItemMeta; - - -public class EnchantFunction implements LootFunction { - private final int min; - private final int max; - private final JSONArray disabled; - private final Platform platform; - - - public EnchantFunction(int min, int max, JSONArray disabled, Platform platform) { - this.max = max; - this.min = min; - this.disabled = disabled; - this.platform = platform; - } - - /** - * Applies the function to an ItemStack. - * - * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. - * - * @return - ItemStack - The mutated ItemStack. - */ - @Override - public ItemStack apply(ItemStack original, Random r) { - if(original.getItemMeta() == null) return original; - - double enchant = (r.nextDouble() * (max - min)) + min; - List possible = new ArrayList<>(); - for(Enchantment ench : platform.getItemHandle().getEnchantments()) { - if(ench.canEnchantItem(original) && (disabled == null || !this.disabled.contains(ench.getID()))) { - possible.add(ench); - } - } - int numEnchant = (r.nextInt((int) FastMath.abs(enchant)) / 10 + 1); - Collections.shuffle(possible); - ItemMeta meta = original.getItemMeta(); - iter: - for(int i = 0; i < numEnchant && i < possible.size(); i++) { - Enchantment chosen = possible.get(i); - for(Enchantment ench : meta.getEnchantments().keySet()) { - if(chosen.conflictsWith(ench)) continue iter; - } - int lvl = r.nextInt(1 + (int) (((enchant / 40 > 1) ? 1 : enchant / 40) * (chosen.getMaxLevel()))); - try { - meta.addEnchantment(chosen, FastMath.max(lvl, 1)); - } catch(IllegalArgumentException e) { - platform.logger().warning( - "Attempted to enchant " + original.getType() + " with " + chosen + " at level " + FastMath.max(lvl, 1) + - ", but an unexpected exception occurred! Usually this is caused by a misbehaving enchantment plugin."); - } - } - original.setItemMeta(meta); - return original; - } -} diff --git a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java b/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java deleted file mode 100644 index eaeebae71..000000000 --- a/common/addons/config-structure/src/main/java/com/dfsek/terra/addons/structure/structures/loot/functions/LootFunction.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.dfsek.terra.addons.structure.structures.loot.functions; - - -import java.util.Random; - -import com.dfsek.terra.api.inventory.ItemStack; - - -/** - * Interface for mutating items in Loot Tables. - */ -public interface LootFunction { - /** - * Applies the function to an ItemStack. - * - * @param original The ItemStack on which to apply the function. - * @param r The Random instance to use. - * - * @return - ItemStack - The mutated ItemStack. - */ - ItemStack apply(ItemStack original, Random r); -} From 7de4d84c391797cf76c8769a0857dce885c36443 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:24:42 -0700 Subject: [PATCH 45/97] add structure config addon as submodule --- .gitmodules | 3 +++ common/addons/config-structure | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/config-structure diff --git a/.gitmodules b/.gitmodules index 65291c1a1..4f0245666 100644 --- a/.gitmodules +++ b/.gitmodules @@ -37,3 +37,6 @@ [submodule "common/addons/config-palette"] path = common/addons/config-palette url = https://github.com/PolyhedralDev/Terra-config-palette +[submodule "common/addons/config-structure"] + path = common/addons/config-structure + url = https://github.com/PolyhedralDev/Terra-config-structure diff --git a/common/addons/config-structure b/common/addons/config-structure new file mode 160000 index 000000000..a2bf332fb --- /dev/null +++ b/common/addons/config-structure @@ -0,0 +1 @@ +Subproject commit a2bf332fb25c0f546fb4180edfd38b5dc81ed4ca From ce2807b1f6b55a514e507bc05016cb725eb0849a Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:26:22 -0700 Subject: [PATCH 46/97] remove feature gen addon from main repo --- .../generation-stage-feature/build.gradle.kts | 2 - .../addons/generation/feature/ColumnImpl.java | 63 ------------------- .../feature/FeatureGenerationAddon.java | 44 ------------- .../feature/FeatureGenerationStage.java | 48 -------------- .../feature/config/BiomeFeatures.java | 19 ------ .../feature/config/BiomeFeaturesTemplate.java | 23 ------- 6 files changed, 199 deletions(-) delete mode 100644 common/addons/generation-stage-feature/build.gradle.kts delete mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java delete mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java delete mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java delete mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java delete mode 100644 common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java diff --git a/common/addons/generation-stage-feature/build.gradle.kts b/common/addons/generation-stage-feature/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/generation-stage-feature/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java deleted file mode 100644 index 9acdab106..000000000 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/ColumnImpl.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.dfsek.terra.addons.generation.feature; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structure.feature.BinaryColumn; -import com.dfsek.terra.api.world.Column; -import com.dfsek.terra.api.world.World; - -import java.util.function.IntConsumer; - - -public class ColumnImpl implements Column { - private final int x; - private final int z; - private final World world; - - public ColumnImpl(int x, int z, World world) { - this.x = x; - this.z = z; - this.world = world; - } - - @Override - public int getX() { - return x; - } - - @Override - public int getZ() { - return z; - } - - @Override - public BlockState getBlock(int y) { - return world.getBlockData(x, y, z); - } - - @Override - public World getWorld() { - return world; - } - - @Override - public int getMinY() { - return world.getMinHeight(); - } - - @Override - public int getMaxY() { - return world.getMaxHeight(); - } - - @Override - public void forEach(IntConsumer function) { - for(int y = world.getMinHeight(); y < world.getMaxHeight(); y++) { - function.accept(y); - } - } - - @Override - public BinaryColumn newBinaryColumn() { - return new BinaryColumn(getMinY(), getMaxY()); - } -} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java deleted file mode 100644 index 8016a58c0..000000000 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationAddon.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.dfsek.terra.addons.generation.feature; - -import com.dfsek.terra.addons.generation.feature.config.BiomeFeaturesTemplate; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.world.biome.TerraBiome; -import com.dfsek.terra.api.world.generator.GenerationStageProvider; - - -@Addon("generation-stage-feature") -@Version("1.0.0") -@Author("Terra") -public class FeatureGenerationAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> event.getPack() - .getOrCreateRegistry(GenerationStageProvider.class) - .register("FEATURE", pack -> new FeatureGenerationStage(platform))) - .failThrough(); - - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationLoadEvent.class) - .then(event -> { - if(event.is(TerraBiome.class)) { - event.getLoadedObject(TerraBiome.class).getContext().put(event.load(new BiomeFeaturesTemplate()).get()); - } - }) - .failThrough(); - } -} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java deleted file mode 100644 index 0b03ef29e..000000000 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/FeatureGenerationStage.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dfsek.terra.addons.generation.feature; - -import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.GenerationStage; - - -public class FeatureGenerationStage implements GenerationStage { - private final Platform platform; - - public FeatureGenerationStage(Platform platform) { - this.platform = platform; - } - - @Override - @SuppressWarnings("try") - public void populate(World world, Chunk chunk) { - try(ProfileFrame ignore = platform.getProfiler().profile("feature")) { - int cx = chunk.getX() << 4; - int cz = chunk.getZ() << 4; - long seed = world.getSeed(); - for(int x = 0; x < 16; x++) { - for(int z = 0; z < 16; z++) { - int tx = cx + x; - int tz = cz + z; - ColumnImpl column = new ColumnImpl(tx, tz, world); - world.getBiomeProvider().getBiome(tx, tz, seed).getContext().get(BiomeFeatures.class).getFeatures().forEach(feature -> { - if(feature.getDistributor().matches(tx, tz, seed)) { - feature.getLocator() - .getSuitableCoordinates(column) - .forEach(y -> - feature.getStructure(world, tx, y, tz) - .generate(new Vector3(tx, y, tz), world, PopulationUtil.getRandom(chunk), - Rotation.NONE) - ); - } - }); - } - } - } - } -} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java deleted file mode 100644 index 19fe4d503..000000000 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeatures.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.dfsek.terra.addons.generation.feature.config; - -import java.util.List; - -import com.dfsek.terra.api.properties.Properties; -import com.dfsek.terra.api.structure.feature.Feature; - - -public class BiomeFeatures implements Properties { - private final List features; - - public BiomeFeatures(List features) { - this.features = features; - } - - public List getFeatures() { - return features; - } -} diff --git a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java b/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java deleted file mode 100644 index 9132b7374..000000000 --- a/common/addons/generation-stage-feature/src/main/java/com/dfsek/terra/addons/generation/feature/config/BiomeFeaturesTemplate.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.generation.feature.config; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.loading.object.ObjectTemplate; - -import java.util.Collections; -import java.util.List; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.structure.feature.Feature; - - -public class BiomeFeaturesTemplate implements ObjectTemplate { - @Value("features") - @Default - private @Meta List<@Meta Feature> features = Collections.emptyList(); - - @Override - public BiomeFeatures get() { - return new BiomeFeatures(features); - } -} From 25d6f1debfa497824ea09d9cccefcb8e284c49a4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:26:45 -0700 Subject: [PATCH 47/97] add feature gen addon as submodule --- .gitmodules | 3 +++ common/addons/generation-stage-feature | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/generation-stage-feature diff --git a/.gitmodules b/.gitmodules index 4f0245666..8e0a88325 100644 --- a/.gitmodules +++ b/.gitmodules @@ -40,3 +40,6 @@ [submodule "common/addons/config-structure"] path = common/addons/config-structure url = https://github.com/PolyhedralDev/Terra-config-structure +[submodule "common/addons/generation-stage-feature"] + path = common/addons/generation-stage-feature + url = https://github.com/PolyhedralDev/Terra-generation-stage-feature diff --git a/common/addons/generation-stage-feature b/common/addons/generation-stage-feature new file mode 160000 index 000000000..398a47743 --- /dev/null +++ b/common/addons/generation-stage-feature @@ -0,0 +1 @@ +Subproject commit 398a4774320392e64a025f6495b00d8290981ac9 From 427e20a4dc2764f41aa266d5a4e226df23014b4f Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:29:44 -0700 Subject: [PATCH 48/97] remove structure gen addon from main repo --- common/addons/generation-stage-structure/build.gradle.kts | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 common/addons/generation-stage-structure/build.gradle.kts diff --git a/common/addons/generation-stage-structure/build.gradle.kts b/common/addons/generation-stage-structure/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/generation-stage-structure/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} From c3487f95ecaab6ba4c2220ec92b48cde8f8218e4 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:30:11 -0700 Subject: [PATCH 49/97] add structure gen addon as submodule --- .gitmodules | 3 +++ common/addons/generation-stage-structure | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/generation-stage-structure diff --git a/.gitmodules b/.gitmodules index 8e0a88325..bd47908ed 100644 --- a/.gitmodules +++ b/.gitmodules @@ -43,3 +43,6 @@ [submodule "common/addons/generation-stage-feature"] path = common/addons/generation-stage-feature url = https://github.com/PolyhedralDev/Terra-generation-stage-feature +[submodule "common/addons/generation-stage-structure"] + path = common/addons/generation-stage-structure + url = https://github.com/PolyhedralDev/Terra-generation-stage-structure diff --git a/common/addons/generation-stage-structure b/common/addons/generation-stage-structure new file mode 160000 index 000000000..309c626eb --- /dev/null +++ b/common/addons/generation-stage-structure @@ -0,0 +1 @@ +Subproject commit 309c626ebee0d4bd15e821ed87419abc2e6ef9a5 From f4fa8c861e3c92a896fb8c5ef9f41d599f292e57 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:32:12 -0700 Subject: [PATCH 50/97] remove YAML addon from main repo --- common/addons/language-yaml/README.md | 3 -- common/addons/language-yaml/build.gradle.kts | 3 -- .../dfsek/terra/addons/yaml/YamlAddon.java | 33 ------------------- 3 files changed, 39 deletions(-) delete mode 100644 common/addons/language-yaml/README.md delete mode 100644 common/addons/language-yaml/build.gradle.kts delete mode 100644 common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java diff --git a/common/addons/language-yaml/README.md b/common/addons/language-yaml/README.md deleted file mode 100644 index a8c94a331..000000000 --- a/common/addons/language-yaml/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# language-yaml - -Allows `*.yml` files to be loaded as Terra configurations. \ No newline at end of file diff --git a/common/addons/language-yaml/build.gradle.kts b/common/addons/language-yaml/build.gradle.kts deleted file mode 100644 index 11e8e646a..000000000 --- a/common/addons/language-yaml/build.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -dependencies { - "shadedImplementation"("com.dfsek.tectonic:yaml:2.1.2") -} diff --git a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java b/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java deleted file mode 100644 index bd7bae689..000000000 --- a/common/addons/language-yaml/src/main/java/com/dfsek/terra/addons/yaml/YamlAddon.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.yaml; - -import com.dfsek.tectonic.yaml.YamlConfiguration; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.ConfigurationDiscoveryEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; - - -@Addon("language-yaml") -@Version("1.0.0") -@Author("Terra") -public class YamlAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigurationDiscoveryEvent.class) - .then(event -> event.getLoader().open("", ".yml").thenEntries(entries -> entries.forEach(entry -> { - platform.getDebugLogger().info("Discovered config " + entry.getKey()); - event.register(entry.getKey(), new YamlConfiguration(entry.getValue(), entry.getKey())); - }))) - .failThrough(); - } -} From 63cb98a32784ab25846dcc0f2c6d6b154121eb45 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:32:42 -0700 Subject: [PATCH 51/97] add YAML addon as submodule --- .gitmodules | 3 +++ common/addons/language-yaml | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/language-yaml diff --git a/.gitmodules b/.gitmodules index bd47908ed..6f76ea5ba 100644 --- a/.gitmodules +++ b/.gitmodules @@ -46,3 +46,6 @@ [submodule "common/addons/generation-stage-structure"] path = common/addons/generation-stage-structure url = https://github.com/PolyhedralDev/Terra-generation-stage-structure +[submodule "common/addons/language-yaml"] + path = common/addons/language-yaml + url = https://github.com/PolyhedralDev/Terra-language-yaml diff --git a/common/addons/language-yaml b/common/addons/language-yaml new file mode 160000 index 000000000..aaa32f988 --- /dev/null +++ b/common/addons/language-yaml @@ -0,0 +1 @@ +Subproject commit aaa32f988bdc8bcb25a4193bcf002cd46f748a7f From fa2a25b7c6e4d61733c3dc32e5f98c0be6135b35 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:36:51 -0700 Subject: [PATCH 52/97] remove manifest loader addon from main repo --- common/addons/manifest-addon-loader/build.gradle.kts | 2 -- .../com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java | 4 ---- .../src/main/resources/META-INF/MANIFEST.MF | 1 - 3 files changed, 7 deletions(-) delete mode 100644 common/addons/manifest-addon-loader/build.gradle.kts delete mode 100644 common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java delete mode 100644 common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF diff --git a/common/addons/manifest-addon-loader/build.gradle.kts b/common/addons/manifest-addon-loader/build.gradle.kts deleted file mode 100644 index 7d82dc72f..000000000 --- a/common/addons/manifest-addon-loader/build.gradle.kts +++ /dev/null @@ -1,2 +0,0 @@ -dependencies { -} diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java deleted file mode 100644 index 7a3645ae5..000000000 --- a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.addons.manifest; - -public class ManifestLoaderEntry { -} diff --git a/common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF b/common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index 0cd2377d6..000000000 --- a/common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1 +0,0 @@ -Entry-Point: com.dfsek.terra.addons.manifest.ManifestLoaderEntry From 3f1cbc90954b8984c5b4054418fadeacc9be91ee Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:37:18 -0700 Subject: [PATCH 53/97] add manifest addon loader as submodule --- .gitmodules | 3 +++ common/addons/manifest-addon-loader | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/manifest-addon-loader diff --git a/.gitmodules b/.gitmodules index 6f76ea5ba..06f6752f0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -49,3 +49,6 @@ [submodule "common/addons/language-yaml"] path = common/addons/language-yaml url = https://github.com/PolyhedralDev/Terra-language-yaml +[submodule "common/addons/manifest-addon-loader"] + path = common/addons/manifest-addon-loader + url = https://github.com/PolyhedralDev/Terra-manifest-addon-loader diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader new file mode 160000 index 000000000..8e161a721 --- /dev/null +++ b/common/addons/manifest-addon-loader @@ -0,0 +1 @@ +Subproject commit 8e161a721cbfe3cc27ffc8301129b546e7334240 From 76d165e21b91bb6fdb28de5ad940406231a15251 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:39:24 -0700 Subject: [PATCH 54/97] remove sponge loader addon from main repo --- .../structure-sponge-loader/build.gradle.kts | 23 ---- .../addons/sponge/SpongeSchematicAddon.java | 101 ------------------ .../terra/addons/sponge/SpongeStructure.java | 97 ----------------- 3 files changed, 221 deletions(-) delete mode 100644 common/addons/structure-sponge-loader/build.gradle.kts delete mode 100644 common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java delete mode 100644 common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java diff --git a/common/addons/structure-sponge-loader/build.gradle.kts b/common/addons/structure-sponge-loader/build.gradle.kts deleted file mode 100644 index e1fa2c43d..000000000 --- a/common/addons/structure-sponge-loader/build.gradle.kts +++ /dev/null @@ -1,23 +0,0 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - -plugins { - id("com.github.johnrengelman.shadow") -} - -repositories { - maven { url = uri("https://jitpack.io/") } -} - -dependencies { - "shadedApi"("commons-io:commons-io:2.6") - "shadedApi"("com.github.Querz:NBT:6.1") -} - -tasks.named("shadowJar") { - archiveClassifier.set("") - relocate("org.apache.commons", "com.dfsek.terra.addons.sponge.lib.commons") -} - -tasks.named("build") { - finalizedBy(tasks.named("shadowJar")) -} \ No newline at end of file diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java deleted file mode 100644 index 24d966a8f..000000000 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeSchematicAddon.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.dfsek.terra.addons.sponge; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.structure.Structure; - -import com.dfsek.terra.api.util.StringUtil; - -import net.querz.nbt.io.NBTDeserializer; -import net.querz.nbt.tag.ByteArrayTag; -import net.querz.nbt.tag.CompoundTag; -import net.querz.nbt.tag.IntTag; -import net.querz.nbt.tag.Tag; - -import java.io.IOException; -import java.io.InputStream; -import java.io.PushbackInputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.zip.GZIPInputStream; - -@Addon("structure-sponge-loader") -@Author("Terra") -@Version("1.0.0") -public class SpongeSchematicAddon extends TerraAddon { - @Inject - private Platform platform; - - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); - event.getPack().getLoader().open("", ".schem").thenEntries(entries -> { - for(Map.Entry entry : entries) { - String id = StringUtil.fileName(entry.getKey()); - structureRegistry.register(id, convert(entry.getValue(), id)); - } - }).close(); - }) - .failThrough(); - } - - - public SpongeStructure convert(InputStream in, String id) { - try { - CompoundTag baseTag = (CompoundTag) new NBTDeserializer(false).fromStream(detectDecompression(in)).getTag(); - int wid = baseTag.getShort("Width"); - int len = baseTag.getShort("Length"); - int hei = baseTag.getShort("Height"); - - ByteArrayTag blocks = baseTag.getByteArrayTag("BlockData"); - - CompoundTag palette = (CompoundTag) baseTag.get("Palette"); - Map data = new HashMap<>(); - - for(Map.Entry> entry : palette.entrySet()) { - data.put(((IntTag) entry.getValue()).asInt(), entry.getKey()); - } - - BlockState[][][] states = new BlockState[wid][len][hei]; - - byte[] arr = blocks.getValue(); - for(int x = 0; x < wid; x++) { - for(int z = 0; z < len; z++) { - for(int y = 0; y < hei; y++) { - String block = data.get((int) arr[x + z * wid + y * wid * len]); - if(block.startsWith("minecraft:structure_void")) continue; - states[x][z][y] = platform.getWorldHandle().createBlockData(block); - } - } - } - - return new SpongeStructure(states, platform, id); - } catch(IOException e) { - throw new IllegalArgumentException("Failed to parse Sponge schematic: ", e); - } - } - - private static InputStream detectDecompression(InputStream is) throws IOException { - PushbackInputStream pbis = new PushbackInputStream(is, 2); - int signature = (pbis.read() & 0xFF) + (pbis.read() << 8); - pbis.unread(signature >> 8); - pbis.unread(signature & 0xFF); - if(signature == GZIPInputStream.GZIP_MAGIC) { - return new GZIPInputStream(pbis); - } - return pbis; - } -} diff --git a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java b/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java deleted file mode 100644 index a427e4359..000000000 --- a/common/addons/structure-sponge-loader/src/main/java/com/dfsek/terra/addons/sponge/SpongeStructure.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.dfsek.terra.addons.sponge; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.structure.buffer.items.BufferedBlock; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; - -import net.jafama.FastMath; - -import java.util.Random; - - -public class SpongeStructure implements Structure { - - private final BlockState[][][] blocks; - private final Platform platform; - - private final String id; - - public SpongeStructure(BlockState[][][] blocks, Platform platform, String id) { - this.blocks = blocks; - this.platform = platform; - this.id = id; - } - - @Override - public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { - int bX = location.getBlockX(); - int bY = location.getBlockY(); - int bZ = location.getBlockZ(); - for(int x = 0; x < blocks.length; x++) { - for(int z = 0; z < blocks[x].length; z++) { - Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation); - int rX = r.getBlockX(); - int rZ = r.getBlockZ(); - if(FastMath.floorDiv(bX+rX, 16) != chunk.getX() || FastMath.floorDiv(bZ+rZ, 16) != chunk.getZ()) { - continue; - } - for(int y = 0; y < blocks[z].length; y++) { - BlockState state = blocks[x][z][y]; - if(state == null) continue; - world.setBlockData(bX+rX, bY+y, bZ+rZ, state); - } - } - } - return true; - } - - @Override - public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { - for(int x = 0; x < blocks.length; x++) { - for(int z = 0; z < blocks[x].length; z++) { - Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation); - int rX = r.getBlockX(); - int rZ = r.getBlockZ(); - for(int y = 0; y < blocks[z].length; y++) { - BlockState state = blocks[x][z][y]; - if(state == null) continue; - buffer.addItem(new BufferedBlock(state, true, platform, false), new Vector3(rX, y, rZ)); - } - } - } - return true; - } - - @Override - public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { - int bX = location.getBlockX(); - int bY = location.getBlockY(); - int bZ = location.getBlockZ(); - for(int x = 0; x < blocks.length; x++) { - for(int z = 0; z < blocks[x].length; z++) { - Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation); - int rX = r.getBlockX(); - int rZ = r.getBlockZ(); - for(int y = 0; y < blocks[z].length; y++) { - BlockState state = blocks[x][z][y]; - if(state == null) continue; - world.setBlockData(bX+rX, bY+y, bZ+rZ, state); - } - } - } - return true; - } - - @Override - public String getID() { - return id; - } -} From 9cd45686d3ab07b94faf412d592df743dad519e2 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:39:35 -0700 Subject: [PATCH 55/97] add sponge loader addon as submodule --- .gitmodules | 3 +++ common/addons/structure-sponge-loader | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/structure-sponge-loader diff --git a/.gitmodules b/.gitmodules index 06f6752f0..2605324db 100644 --- a/.gitmodules +++ b/.gitmodules @@ -52,3 +52,6 @@ [submodule "common/addons/manifest-addon-loader"] path = common/addons/manifest-addon-loader url = https://github.com/PolyhedralDev/Terra-manifest-addon-loader +[submodule "common/addons/structure-sponge-loader"] + path = common/addons/structure-sponge-loader + url = https://github.com/PolyhedralDev/Terra-structure-sponge-loader diff --git a/common/addons/structure-sponge-loader b/common/addons/structure-sponge-loader new file mode 160000 index 000000000..5c7455098 --- /dev/null +++ b/common/addons/structure-sponge-loader @@ -0,0 +1 @@ +Subproject commit 5c74550980abb3e7c7addc10c8e0c068440cf433 From aff3e474af67fff3d85f159ca454c80ed34c98ca Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:41:48 -0700 Subject: [PATCH 56/97] remove terrascript addon from main repo --- .../structure-terrascript-loader/README.md | 4 - .../build.gradle.kts | 18 - .../addons/terrascript/TerraScriptAddon.java | 55 --- .../buffer/IntermediateBuffer.java | 49 -- .../buffer/items/BufferedEntity.java | 27 -- .../buffer/items/BufferedLootApplication.java | 48 -- .../buffer/items/BufferedPulledBlock.java | 27 -- .../items/BufferedStateManipulator.java | 30 -- .../addons/terrascript/parser/Parser.java | 430 ------------------ .../addons/terrascript/parser/ParserUtil.java | 108 ----- .../parser/exceptions/ParseException.java | 28 -- .../addons/terrascript/parser/lang/Block.java | 82 ---- .../parser/lang/ImplementationArguments.java | 7 - .../addons/terrascript/parser/lang/Item.java | 13 - .../terrascript/parser/lang/Keyword.java | 4 - .../terrascript/parser/lang/Returnable.java | 23 - .../terrascript/parser/lang/Statement.java | 4 - .../lang/constants/BooleanConstant.java | 15 - .../lang/constants/ConstantExpression.java | 33 -- .../lang/constants/NumericConstant.java | 16 - .../parser/lang/constants/StringConstant.java | 16 - .../parser/lang/functions/Function.java | 28 -- .../lang/functions/FunctionBuilder.java | 16 - .../lang/functions/def/FunctionBlock.java | 47 -- .../lang/keywords/flow/BreakKeyword.java | 33 -- .../lang/keywords/flow/ContinueKeyword.java | 33 -- .../lang/keywords/flow/FailKeyword.java | 33 -- .../lang/keywords/flow/ReturnKeyword.java | 33 -- .../lang/keywords/looplike/ForKeyword.java | 50 -- .../lang/keywords/looplike/IfKeyword.java | 74 --- .../lang/keywords/looplike/WhileKeyword.java | 43 -- .../lang/operations/BinaryOperation.java | 33 -- .../lang/operations/BooleanAndOperation.java | 21 - .../lang/operations/BooleanNotOperation.java | 21 - .../lang/operations/BooleanOrOperation.java | 21 - .../operations/ConcatenationOperation.java | 21 - .../lang/operations/DivisionOperation.java | 21 - .../lang/operations/ModuloOperation.java | 21 - .../operations/MultiplicationOperation.java | 21 - .../lang/operations/NegationOperation.java | 21 - .../operations/NumberAdditionOperation.java | 21 - .../lang/operations/SubtractionOperation.java | 21 - .../lang/operations/UnaryOperation.java | 31 -- .../statements/EqualsStatement.java | 31 -- .../GreaterOrEqualsThanStatement.java | 23 - .../statements/GreaterThanStatement.java | 23 - .../statements/LessThanOrEqualsStatement.java | 23 - .../statements/LessThanStatement.java | 23 - .../statements/NotEqualsStatement.java | 23 - .../parser/lang/variables/Assignment.java | 34 -- .../lang/variables/BooleanVariable.java | 35 -- .../parser/lang/variables/Declaration.java | 55 --- .../parser/lang/variables/Getter.java | 35 -- .../parser/lang/variables/NumberVariable.java | 35 -- .../parser/lang/variables/StringVariable.java | 35 -- .../parser/lang/variables/Variable.java | 15 - .../terrascript/script/StructureScript.java | 185 -------- .../script/TerraImplementationArguments.java | 54 --- .../builders/BinaryNumberFunctionBuilder.java | 55 --- .../script/builders/BiomeFunctionBuilder.java | 38 -- .../script/builders/BlockFunctionBuilder.java | 52 --- .../builders/CheckBlockFunctionBuilder.java | 31 -- .../script/builders/CheckFunctionBuilder.java | 39 -- .../builders/EntityFunctionBuilder.java | 40 -- .../builders/GetMarkFunctionBuilder.java | 35 -- .../script/builders/LootFunctionBuilder.java | 46 -- .../script/builders/PullFunctionBuilder.java | 40 -- .../builders/RandomFunctionBuilder.java | 29 -- .../builders/RecursionsFunctionBuilder.java | 27 -- .../builders/SetMarkFunctionBuilder.java | 37 -- .../script/builders/StateFunctionBuilder.java | 41 -- .../builders/StructureFunctionBuilder.java | 48 -- .../builders/UnaryBooleanFunctionBuilder.java | 57 --- .../builders/UnaryNumberFunctionBuilder.java | 53 --- .../builders/UnaryStringFunctionBuilder.java | 54 --- .../builders/ZeroArgFunctionBuilder.java | 54 --- .../script/functions/BiomeFunction.java | 64 --- .../script/functions/BlockFunction.java | 94 ---- .../script/functions/CheckBlockFunction.java | 60 --- .../script/functions/CheckFunction.java | 85 ---- .../script/functions/EntityFunction.java | 61 --- .../script/functions/GetMarkFunction.java | 50 -- .../script/functions/LootFunction.java | 74 --- .../script/functions/PullFunction.java | 63 --- .../script/functions/RandomFunction.java | 38 -- .../script/functions/RecursionsFunction.java | 33 -- .../script/functions/SetMarkFunction.java | 57 --- .../script/functions/StateFunction.java | 58 --- .../script/functions/StructureFunction.java | 88 ---- .../addons/terrascript/tokenizer/Char.java | 56 --- .../terrascript/tokenizer/Lookahead.java | 123 ----- .../terrascript/tokenizer/Position.java | 16 - .../addons/terrascript/tokenizer/Token.java | 230 ---------- .../terrascript/tokenizer/Tokenizer.java | 240 ---------- .../tokenizer/exceptions/EOFException.java | 17 - .../tokenizer/exceptions/FormatException.java | 17 - .../exceptions/TokenizerException.java | 18 - .../test/java/structure/LookaheadTest.java | 22 - .../src/test/java/structure/ParserTest.java | 89 ---- .../src/test/resources/test.tesf | 97 ---- 100 files changed, 4856 deletions(-) delete mode 100644 common/addons/structure-terrascript-loader/README.md delete mode 100644 common/addons/structure-terrascript-loader/build.gradle.kts delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java delete mode 100644 common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java delete mode 100644 common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java delete mode 100644 common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java delete mode 100644 common/addons/structure-terrascript-loader/src/test/resources/test.tesf diff --git a/common/addons/structure-terrascript-loader/README.md b/common/addons/structure-terrascript-loader/README.md deleted file mode 100644 index 5bf8f622a..000000000 --- a/common/addons/structure-terrascript-loader/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# structure-terrascript-loader - -Implements the TerraScript structure scripting language, and loads all `*.tesf` -files into the Structure registry. \ No newline at end of file diff --git a/common/addons/structure-terrascript-loader/build.gradle.kts b/common/addons/structure-terrascript-loader/build.gradle.kts deleted file mode 100644 index e71d4b285..000000000 --- a/common/addons/structure-terrascript-loader/build.gradle.kts +++ /dev/null @@ -1,18 +0,0 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - -plugins { - id("com.github.johnrengelman.shadow") -} - -dependencies { - "shadedApi"("commons-io:commons-io:2.6") -} - -tasks.named("shadowJar") { - archiveClassifier.set("") - relocate("org.apache.commons", "com.dfsek.terra.addons.terrascript.lib.commons") -} - -tasks.named("build") { - finalizedBy(tasks.named("shadowJar")) -} \ No newline at end of file diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java deleted file mode 100644 index 727944e83..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/TerraScriptAddon.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.dfsek.terra.addons.terrascript; - -import com.dfsek.tectonic.exception.LoadException; - -import java.io.InputStream; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.api.inject.annotations.Inject; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.util.StringUtil; - - -@Addon("structure-terrascript-loader") -@Author("Terra") -@Version("1.0.0") -public class TerraScriptAddon extends TerraAddon { - @Inject - private Platform platform; - - @Override - public void initialize() { - platform.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, ConfigPackPreLoadEvent.class) - .then(event -> { - CheckedRegistry structureRegistry = event.getPack().getOrCreateRegistry(Structure.class); - CheckedRegistry lootRegistry = event.getPack().getOrCreateRegistry(LootTable.class); - event.getPack().getLoader().open("", ".tesf").thenEntries(entries -> { - for(Map.Entry entry : entries) { - try { - String id = StringUtil.fileName(entry.getKey()); - StructureScript structureScript = new StructureScript(entry.getValue(), id, platform, structureRegistry, - lootRegistry, - event.getPack().getRegistryFactory().create()); - structureRegistry.register(structureScript.getID(), structureScript); - } catch(ParseException e) { - throw new LoadException("Failed to load script \"" + entry.getKey() + "\"", e); - } - } - }).close(); - }) - .failThrough(); - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java deleted file mode 100644 index 3c2af58c6..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/IntermediateBuffer.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.dfsek.terra.addons.terrascript.buffer; - -import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; - - -public class IntermediateBuffer implements Buffer { - private final Buffer original; - private final Vector3 offset; - - public IntermediateBuffer(Buffer original, Vector3 offset) { - this.original = original; - this.offset = offset.clone(); - } - - @Override - public void paste(Vector3 origin, Chunk chunk) { - // no-op - } - - @Override - public void paste(Vector3 origin, World world) { - // no-op - } - - @Override - public Buffer addItem(BufferedItem item, Vector3 location) { - return original.addItem(item, location.clone().add(offset)); - } - - @Override - public Buffer setMark(String mark, Vector3 location) { - original.setMark(mark, location.clone().add(offset)); - return this; - } - - @Override - public Vector3 getOrigin() { - return original.getOrigin().clone().add(offset); - } - - @Override - public String getMark(Vector3 location) { - return original.getMark(location.clone().add(offset)); - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java deleted file mode 100644 index 7676c088f..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedEntity.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.entity.Entity; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.event.events.world.generation.EntitySpawnEvent; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; - - -public class BufferedEntity implements BufferedItem { - - private final EntityType type; - private final Platform platform; - - public BufferedEntity(EntityType type, Platform platform) { - this.type = type; - this.platform = platform; - } - - @Override - public void paste(Vector3 origin, World world) { - Entity entity = world.spawnEntity(origin.clone().add(0.5, 0, 0.5), type); - platform.getEventManager().callEvent(new EntitySpawnEvent(entity.world().getConfig().getPack(), entity)); - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java deleted file mode 100644 index 98e82c736..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedLootApplication.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; - -import java.util.Random; - -import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.terra.api.block.entity.Container; -import com.dfsek.terra.api.event.events.world.generation.LootPopulateEvent; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; - - -public class BufferedLootApplication implements BufferedItem { - private final LootTable table; - private final Platform platform; - private final StructureScript structure; - - public BufferedLootApplication(LootTable table, Platform platform, StructureScript structure) { - this.table = table; - this.platform = platform; - this.structure = structure; - } - - @Override - public void paste(Vector3 origin, World world) { - try { - BlockEntity data = world.getBlockState(origin); - if(!(data instanceof Container)) { - platform.logger().severe("Failed to place loot at " + origin + "; block " + data + " is not container."); - return; - } - Container container = (Container) data; - - LootPopulateEvent event = new LootPopulateEvent(container, table, world.getConfig().getPack(), structure); - platform.getEventManager().callEvent(event); - if(event.isCancelled()) return; - - event.getTable().fillInventory(container.getInventory(), new Random(origin.hashCode())); - data.update(false); - } catch(Exception e) { - platform.logger().warning("Could not apply loot at " + origin + ": " + e.getMessage()); - e.printStackTrace(); - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java deleted file mode 100644 index 5ce6982b5..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedPulledBlock.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; - -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; - - -public class BufferedPulledBlock implements BufferedItem { - private final BlockState data; - - public BufferedPulledBlock(BlockState data) { - this.data = data; - } - - @Override - public void paste(Vector3 origin, World world) { - Vector3 mutable = origin.clone(); - while(mutable.getY() > world.getMinHeight()) { - if(!world.getBlockData(mutable).isAir()) { - world.setBlockData(mutable, data); - break; - } - mutable.subtract(0, 1, 0); - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java deleted file mode 100644 index 5d863f0cb..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/buffer/items/BufferedStateManipulator.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.dfsek.terra.addons.terrascript.buffer.items; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.entity.BlockEntity; -import com.dfsek.terra.api.structure.buffer.BufferedItem; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; - - -public class BufferedStateManipulator implements BufferedItem { - private final Platform platform; - private final String data; - - public BufferedStateManipulator(Platform platform, String state) { - this.platform = platform; - this.data = state; - } - - @Override - public void paste(Vector3 origin, World world) { - try { - BlockEntity state = world.getBlockState(origin); - state.applyState(data); - state.update(false); - } catch(Exception e) { - platform.logger().warning("Could not apply BlockState at " + origin + ": " + e.getMessage()); - e.printStackTrace(); - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java deleted file mode 100644 index f043737b1..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ /dev/null @@ -1,430 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.Item; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.NumericConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.BreakKeyword; -import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.ContinueKeyword; -import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.FailKeyword; -import com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow.ReturnKeyword; -import com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike.ForKeyword; -import com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike.IfKeyword; -import com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike.WhileKeyword; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BooleanAndOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BooleanNotOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BooleanOrOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.ConcatenationOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.DivisionOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.ModuloOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.MultiplicationOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.NegationOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.NumberAdditionOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.SubtractionOperation; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.EqualsStatement; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.GreaterOrEqualsThanStatement; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.GreaterThanStatement; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.LessThanOrEqualsStatement; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.LessThanStatement; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.statements.NotEqualsStatement; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Assignment; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Declaration; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Getter; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.addons.terrascript.tokenizer.Token; -import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer; - - -@SuppressWarnings("unchecked") -public class Parser { - private final String data; - private final Map>> functions = new HashMap<>(); - private final List ignoredFunctions = new ArrayList<>(); - - public Parser(String data) { - this.data = data; - } - - public Parser registerFunction(String name, FunctionBuilder> functionBuilder) { - functions.put(name, functionBuilder); - return this; - } - - public Parser ignoreFunction(String name) { - ignoredFunctions.add(name); - return this; - } - - /** - * Parse input - * - * @return executable {@link Block} - * - * @throws ParseException If parsing fails. - */ - public Block parse() { - return parseBlock(new Tokenizer(data), new HashMap<>(), false); - } - - private Keyword parseLoopLike(Tokenizer tokens, Map variableMap, boolean loop) throws ParseException { - - Token identifier = tokens.consume(); - ParserUtil.checkType(identifier, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP); - - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); - - return switch(identifier.getType()) { - case FOR_LOOP -> parseForLoop(tokens, variableMap, identifier.getPosition()); - case IF_STATEMENT -> parseIfStatement(tokens, variableMap, identifier.getPosition(), loop); - case WHILE_LOOP -> parseWhileLoop(tokens, variableMap, identifier.getPosition()); - default -> throw new UnsupportedOperationException( - "Unknown keyword " + identifier.getContent() + ": " + identifier.getPosition()); - }; - } - - private WhileKeyword parseWhileLoop(Tokenizer tokens, Map variableMap, Position start) { - Returnable first = parseExpression(tokens, true, variableMap); - ParserUtil.checkReturnType(first, Returnable.ReturnType.BOOLEAN); - - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); - - return new WhileKeyword(parseStatementBlock(tokens, variableMap, true), (Returnable) first, start); // While loop - } - - private IfKeyword parseIfStatement(Tokenizer tokens, Map variableMap, Position start, boolean loop) { - Returnable condition = parseExpression(tokens, true, variableMap); - ParserUtil.checkReturnType(condition, Returnable.ReturnType.BOOLEAN); - - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); - - Block elseBlock = null; - Block statement = parseStatementBlock(tokens, variableMap, loop); - - List, Block>> elseIf = new ArrayList<>(); - - while(tokens.hasNext() && tokens.get().getType().equals(Token.Type.ELSE)) { - tokens.consume(); // Consume else. - if(tokens.get().getType().equals(Token.Type.IF_STATEMENT)) { - tokens.consume(); // Consume if. - Returnable elseCondition = parseExpression(tokens, true, variableMap); - ParserUtil.checkReturnType(elseCondition, Returnable.ReturnType.BOOLEAN); - elseIf.add(new IfKeyword.Pair<>((Returnable) elseCondition, parseStatementBlock(tokens, variableMap, loop))); - } else { - elseBlock = parseStatementBlock(tokens, variableMap, loop); - break; // Else must be last. - } - } - - return new IfKeyword(statement, (Returnable) condition, elseIf, elseBlock, start); // If statement - } - - private Block parseStatementBlock(Tokenizer tokens, Map variableMap, boolean loop) { - - if(tokens.get().getType().equals(Token.Type.BLOCK_BEGIN)) { - ParserUtil.checkType(tokens.consume(), Token.Type.BLOCK_BEGIN); - Block block = parseBlock(tokens, variableMap, loop); - ParserUtil.checkType(tokens.consume(), Token.Type.BLOCK_END); - return block; - } else { - Position position = tokens.get().getPosition(); - Block block = new Block(Collections.singletonList(parseItem(tokens, variableMap, loop)), position); - ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); - return block; - } - } - - private ForKeyword parseForLoop(Tokenizer tokens, Map old, Position start) { - Map variableMap = new HashMap<>(old); // New scope - Token f = tokens.get(); - ParserUtil.checkType(f, Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.IDENTIFIER); - Item initializer; - if(f.isVariableDeclaration()) { - Declaration forVar = parseVariableDeclaration(tokens, variableMap); - Token name = tokens.get(); - if(functions.containsKey(name.getContent()) || variableMap.containsKey(name.getContent())) - throw new ParseException(name.getContent() + " is already defined in this scope", name.getPosition()); - initializer = forVar; - } else initializer = parseExpression(tokens, true, variableMap); - ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); - Returnable conditional = parseExpression(tokens, true, variableMap); - ParserUtil.checkReturnType(conditional, Returnable.ReturnType.BOOLEAN); - ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); - - Item incrementer; - Token token = tokens.get(); - if(variableMap.containsKey(token.getContent())) { // Assume variable assignment - incrementer = parseAssignment(tokens, variableMap); - } else incrementer = parseFunction(tokens, true, variableMap); - - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); - - return new ForKeyword(parseStatementBlock(tokens, variableMap, true), initializer, (Returnable) conditional, incrementer, - start); - } - - private Returnable parseExpression(Tokenizer tokens, boolean full, Map variableMap) { - boolean booleanInverted = false; // Check for boolean not operator - boolean negate = false; - if(tokens.get().getType().equals(Token.Type.BOOLEAN_NOT)) { - booleanInverted = true; - tokens.consume(); - } else if(tokens.get().getType().equals(Token.Type.SUBTRACTION_OPERATOR)) { - negate = true; - tokens.consume(); - } - - Token id = tokens.get(); - - ParserUtil.checkType(id, Token.Type.IDENTIFIER, Token.Type.BOOLEAN, Token.Type.STRING, Token.Type.NUMBER, Token.Type.GROUP_BEGIN); - - Returnable expression; - if(id.isConstant()) { - expression = parseConstantExpression(tokens); - } else if(id.getType().equals(Token.Type.GROUP_BEGIN)) { // Parse grouped expression - expression = parseGroup(tokens, variableMap); - } else { - if(functions.containsKey(id.getContent())) - expression = parseFunction(tokens, false, variableMap); - else if(variableMap.containsKey(id.getContent())) { - ParserUtil.checkType(tokens.consume(), Token.Type.IDENTIFIER); - expression = new Getter(id.getContent(), id.getPosition(), variableMap.get(id.getContent())); - } else throw new ParseException("Unexpected token \" " + id.getContent() + "\"", id.getPosition()); - } - - if(booleanInverted) { // Invert operation if boolean not detected - ParserUtil.checkReturnType(expression, Returnable.ReturnType.BOOLEAN); - expression = new BooleanNotOperation((Returnable) expression, expression.getPosition()); - } else if(negate) { - ParserUtil.checkReturnType(expression, Returnable.ReturnType.NUMBER); - expression = new NegationOperation((Returnable) expression, expression.getPosition()); - } - - if(full && tokens.get().isBinaryOperator()) { // Parse binary operations - return parseBinaryOperation(expression, tokens, variableMap); - } - return expression; - } - - private ConstantExpression parseConstantExpression(Tokenizer tokens) { - Token constantToken = tokens.consume(); - Position position = constantToken.getPosition(); - switch(constantToken.getType()) { - case NUMBER: - String content = constantToken.getContent(); - return new NumericConstant(content.contains(".") ? Double.parseDouble(content) : Integer.parseInt(content), position); - case STRING: - return new StringConstant(constantToken.getContent(), position); - case BOOLEAN: - return new BooleanConstant(Boolean.parseBoolean(constantToken.getContent()), position); - default: - throw new UnsupportedOperationException( - "Unsupported constant token: " + constantToken.getType() + " at position: " + position); - } - } - - private Returnable parseGroup(Tokenizer tokens, Map variableMap) { - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); - Returnable expression = parseExpression(tokens, true, variableMap); // Parse inside of group as a separate expression - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); - return expression; - } - - private BinaryOperation parseBinaryOperation(Returnable left, Tokenizer tokens, Map variableMap) { - Token binaryOperator = tokens.consume(); - ParserUtil.checkBinaryOperator(binaryOperator); - - Returnable right = parseExpression(tokens, false, variableMap); - - Token other = tokens.get(); - if(ParserUtil.hasPrecedence(binaryOperator.getType(), other.getType())) { - return assemble(left, parseBinaryOperation(right, tokens, variableMap), binaryOperator); - } else if(other.isBinaryOperator()) { - return parseBinaryOperation(assemble(left, right, binaryOperator), tokens, variableMap); - } - return assemble(left, right, binaryOperator); - } - - private BinaryOperation assemble(Returnable left, Returnable right, Token binaryOperator) { - if(binaryOperator.isStrictNumericOperator()) - ParserUtil.checkArithmeticOperation(left, right, binaryOperator); // Numeric type checking - if(binaryOperator.isStrictBooleanOperator()) ParserUtil.checkBooleanOperation(left, right, binaryOperator); // Boolean type checking - switch(binaryOperator.getType()) { - case ADDITION_OPERATOR: - if(left.returnType().equals(Returnable.ReturnType.NUMBER) && right.returnType().equals(Returnable.ReturnType.NUMBER)) { - return new NumberAdditionOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - } - return new ConcatenationOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case SUBTRACTION_OPERATOR: - return new SubtractionOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case MULTIPLICATION_OPERATOR: - return new MultiplicationOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case DIVISION_OPERATOR: - return new DivisionOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case EQUALS_OPERATOR: - return new EqualsStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case NOT_EQUALS_OPERATOR: - return new NotEqualsStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case GREATER_THAN_OPERATOR: - return new GreaterThanStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case LESS_THAN_OPERATOR: - return new LessThanStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case GREATER_THAN_OR_EQUALS_OPERATOR: - return new GreaterOrEqualsThanStatement((Returnable) left, (Returnable) right, - binaryOperator.getPosition()); - case LESS_THAN_OR_EQUALS_OPERATOR: - return new LessThanOrEqualsStatement((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case BOOLEAN_AND: - return new BooleanAndOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case BOOLEAN_OR: - return new BooleanOrOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - case MODULO_OPERATOR: - return new ModuloOperation((Returnable) left, (Returnable) right, binaryOperator.getPosition()); - default: - throw new UnsupportedOperationException("Unsupported binary operator: " + binaryOperator.getType()); - } - } - - private Declaration parseVariableDeclaration(Tokenizer tokens, Map variableMap) { - Token type = tokens.consume(); - ParserUtil.checkType(type, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.NUMBER_VARIABLE); - - Returnable.ReturnType returnType = ParserUtil.getVariableReturnType(type); - - ParserUtil.checkVarType(type, returnType); // Check for type mismatch - Token identifier = tokens.consume(); - ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); - if(functions.containsKey(identifier.getContent()) || variableMap.containsKey(identifier.getContent())) - throw new ParseException(identifier.getContent() + " is already defined in this scope", identifier.getPosition()); - ParserUtil.checkType(tokens.consume(), Token.Type.ASSIGNMENT); - - Returnable value = parseExpression(tokens, true, variableMap); - ParserUtil.checkReturnType(value, returnType); - - variableMap.put(identifier.getContent(), returnType); - - return new Declaration<>(tokens.get().getPosition(), identifier.getContent(), value, returnType); - } - - private Block parseBlock(Tokenizer tokens, Map superVars, boolean loop) { - List> parsedItems = new ArrayList<>(); - - Map parsedVariables = new HashMap<>( - superVars); // New hashmap as to not mutate parent scope's declarations. - - Token first = tokens.get(); - - while(tokens.hasNext()) { - Token token = tokens.get(); - if(token.getType().equals(Token.Type.BLOCK_END)) break; // Stop parsing at block end. - Item parsedItem = parseItem(tokens, parsedVariables, loop); - if(parsedItem != Function.NULL) { - parsedItems.add(parsedItem); - } - if(tokens.hasNext() && !token.isLoopLike()) ParserUtil.checkType(tokens.consume(), Token.Type.STATEMENT_END); - } - return new Block(parsedItems, first.getPosition()); - } - - private Item parseItem(Tokenizer tokens, Map variableMap, boolean loop) { - Token token = tokens.get(); - if(loop) ParserUtil.checkType(token, Token.Type.IDENTIFIER, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP, - Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, - Token.Type.RETURN, Token.Type.BREAK, Token.Type.CONTINUE, Token.Type.FAIL); - else ParserUtil.checkType(token, Token.Type.IDENTIFIER, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP, - Token.Type.NUMBER_VARIABLE, Token.Type.STRING_VARIABLE, Token.Type.BOOLEAN_VARIABLE, Token.Type.RETURN, - Token.Type.FAIL); - - if(token.isLoopLike()) { // Parse loop-like tokens (if, while, etc) - return parseLoopLike(tokens, variableMap, loop); - } else if(token.isIdentifier()) { // Parse identifiers - if(variableMap.containsKey(token.getContent())) { // Assume variable assignment - return parseAssignment(tokens, variableMap); - } else return parseFunction(tokens, true, variableMap); - } else if(token.isVariableDeclaration()) { - - return parseVariableDeclaration(tokens, variableMap); - - } else if(token.getType().equals(Token.Type.RETURN)) return new ReturnKeyword(tokens.consume().getPosition()); - else if(token.getType().equals(Token.Type.BREAK)) return new BreakKeyword(tokens.consume().getPosition()); - else if(token.getType().equals(Token.Type.CONTINUE)) return new ContinueKeyword(tokens.consume().getPosition()); - else if(token.getType().equals(Token.Type.FAIL)) return new FailKeyword(tokens.consume().getPosition()); - else throw new UnsupportedOperationException("Unexpected token " + token.getType() + ": " + token.getPosition()); - } - - private Assignment parseAssignment(Tokenizer tokens, Map variableMap) { - Token identifier = tokens.consume(); - - ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); - - ParserUtil.checkType(tokens.consume(), Token.Type.ASSIGNMENT); - - Returnable value = parseExpression(tokens, true, variableMap); - - ParserUtil.checkReturnType(value, variableMap.get(identifier.getContent())); - - return new Assignment<>(value, identifier.getContent(), identifier.getPosition()); - } - - private Function parseFunction(Tokenizer tokens, boolean fullStatement, Map variableMap) { - Token identifier = tokens.consume(); - ParserUtil.checkType(identifier, Token.Type.IDENTIFIER); // First token must be identifier - - if(!functions.containsKey(identifier.getContent())) - throw new ParseException("No such function \"" + identifier.getContent() + "\"", identifier.getPosition()); - - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_BEGIN); // Second is body begin - - - List> args = getArgs(tokens, variableMap); // Extract arguments, consume the rest. - - ParserUtil.checkType(tokens.consume(), Token.Type.GROUP_END); // Remove body end - - if(fullStatement) ParserUtil.checkType(tokens.get(), Token.Type.STATEMENT_END); - - if(ignoredFunctions.contains(identifier.getContent())) { - return Function.NULL; - } - - if(functions.containsKey(identifier.getContent())) { - FunctionBuilder builder = functions.get(identifier.getContent()); - - if(builder.argNumber() != -1 && args.size() != builder.argNumber()) - throw new ParseException("Expected " + builder.argNumber() + " arguments, found " + args.size(), identifier.getPosition()); - - for(int i = 0; i < args.size(); i++) { - Returnable argument = args.get(i); - if(builder.getArgument(i) == null) - throw new ParseException("Unexpected argument at position " + i + " in function " + identifier.getContent(), - identifier.getPosition()); - ParserUtil.checkReturnType(argument, builder.getArgument(i)); - } - return builder.build(args, identifier.getPosition()); - } - throw new UnsupportedOperationException("Unsupported function: " + identifier.getContent()); - } - - private List> getArgs(Tokenizer tokens, Map variableMap) { - List> args = new ArrayList<>(); - - while(!tokens.get().getType().equals(Token.Type.GROUP_END)) { - args.add(parseExpression(tokens, true, variableMap)); - ParserUtil.checkType(tokens.get(), Token.Type.SEPARATOR, Token.Type.GROUP_END); - if(tokens.get().getType().equals(Token.Type.SEPARATOR)) tokens.consume(); - } - return args; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java deleted file mode 100644 index 3224c69ad..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Token; - - -public class ParserUtil { - - private static final Map> PRECEDENCE = new HashMap<>(); // If second has precedence, true. - private static final List ARITHMETIC = Arrays.asList(Token.Type.ADDITION_OPERATOR, Token.Type.SUBTRACTION_OPERATOR, - Token.Type.MULTIPLICATION_OPERATOR, Token.Type.DIVISION_OPERATOR, - Token.Type.MODULO_OPERATOR); - private static final List COMPARISON = Arrays.asList(Token.Type.EQUALS_OPERATOR, Token.Type.NOT_EQUALS_OPERATOR, - Token.Type.LESS_THAN_OPERATOR, Token.Type.LESS_THAN_OR_EQUALS_OPERATOR, - Token.Type.GREATER_THAN_OPERATOR, - Token.Type.GREATER_THAN_OR_EQUALS_OPERATOR); - - static { // Setup precedence - Map add = new HashMap<>(); // Addition/subtraction before Multiplication/division. - add.put(Token.Type.MULTIPLICATION_OPERATOR, true); - add.put(Token.Type.DIVISION_OPERATOR, true); - - PRECEDENCE.put(Token.Type.ADDITION_OPERATOR, add); - PRECEDENCE.put(Token.Type.SUBTRACTION_OPERATOR, add); - - Map numericBoolean = new HashMap<>(); - - ARITHMETIC.forEach(op -> numericBoolean.put(op, true)); // Numbers before comparison - COMPARISON.forEach(op -> PRECEDENCE.put(op, numericBoolean)); - - - Map booleanOps = new HashMap<>(); - ARITHMETIC.forEach(op -> booleanOps.put(op, true)); // Everything before boolean - COMPARISON.forEach(op -> booleanOps.put(op, true)); - - - PRECEDENCE.put(Token.Type.BOOLEAN_AND, booleanOps); - PRECEDENCE.put(Token.Type.BOOLEAN_OR, booleanOps); - } - - public static void checkType(Token token, Token.Type... expected) { - for(Token.Type type : expected) if(token.getType().equals(type)) return; - throw new ParseException("Expected " + Arrays.toString(expected) + " but found " + token.getType(), token.getPosition()); - } - - public static void checkReturnType(Returnable returnable, Returnable.ReturnType... types) { - for(Returnable.ReturnType type : types) if(returnable.returnType().equals(type)) return; - throw new ParseException("Expected " + Arrays.toString(types) + " but found " + returnable.returnType(), returnable.getPosition()); - } - - public static void checkArithmeticOperation(Returnable left, Returnable right, Token operation) { - if(!left.returnType().equals(Returnable.ReturnType.NUMBER) || !right.returnType().equals(Returnable.ReturnType.NUMBER)) { - throw new ParseException( - "Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), - operation.getPosition()); - } - } - - public static void checkBooleanOperation(Returnable left, Returnable right, Token operation) { - if(!left.returnType().equals(Returnable.ReturnType.BOOLEAN) || !right.returnType().equals(Returnable.ReturnType.BOOLEAN)) { - throw new ParseException( - "Operation " + operation.getType() + " not supported between " + left.returnType() + " and " + right.returnType(), - operation.getPosition()); - } - } - - public static void checkVarType(Token token, Returnable.ReturnType returnType) { - if(returnType.equals(Returnable.ReturnType.STRING) && token.getType().equals(Token.Type.STRING_VARIABLE)) return; - if(returnType.equals(Returnable.ReturnType.NUMBER) && token.getType().equals(Token.Type.NUMBER_VARIABLE)) return; - if(returnType.equals(Returnable.ReturnType.BOOLEAN) && token.getType().equals(Token.Type.BOOLEAN_VARIABLE)) return; - throw new ParseException("Type mismatch, cannot convert from " + returnType + " to " + token.getType(), token.getPosition()); - } - - /** - * Checks if token is a binary operator - * - * @param token Token to check - * - * @throws ParseException If token isn't a binary operator - */ - public static void checkBinaryOperator(Token token) { - if(!token.isBinaryOperator()) - throw new ParseException("Expected binary operator, found " + token.getType(), token.getPosition()); - } - - public static Returnable.ReturnType getVariableReturnType(Token varToken) { - return switch(varToken.getType()) { - case NUMBER_VARIABLE -> Returnable.ReturnType.NUMBER; - case STRING_VARIABLE -> Returnable.ReturnType.STRING; - case BOOLEAN_VARIABLE -> Returnable.ReturnType.BOOLEAN; - default -> throw new ParseException("Unexpected token " + varToken.getType() + "; expected variable declaration", - varToken.getPosition()); - }; - } - - public static boolean hasPrecedence(Token.Type first, Token.Type second) { - if(!PRECEDENCE.containsKey(first)) return false; - Map pre = PRECEDENCE.get(first); - if(!pre.containsKey(second)) return false; - return pre.get(second); - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java deleted file mode 100644 index b56340d0a..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.exceptions; - -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ParseException extends RuntimeException { - private static final long serialVersionUID = 6744390543046766386L; - private final Position position; - - public ParseException(String message, Position position) { - super(message); - this.position = position; - } - - public ParseException(String message, Position position, Throwable cause) { - super(message, cause); - this.position = position; - } - - @Override - public String getMessage() { - return super.getMessage() + ": " + position; - } - - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java deleted file mode 100644 index cf9b15c1c..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class Block implements Item> { - private final List> items; - private final Position position; - - public Block(List> items, Position position) { - this.items = items; - this.position = position; - } - - public ReturnInfo apply(ImplementationArguments implementationArguments) { - return apply(implementationArguments, new HashMap<>()); - } - - @Override - public ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - Map> scope = new HashMap<>(variableMap); - for(Item item : items) { - Object result = item.apply(implementationArguments, scope); - if(result instanceof ReturnInfo) { - ReturnInfo level = (ReturnInfo) result; - if(!level.getLevel().equals(ReturnLevel.NONE)) return level; - } - } - return new ReturnInfo<>(ReturnLevel.NONE, null); - } - - @Override - public Position getPosition() { - return position; - } - - public List> getItems() { - return items; - } - - public enum ReturnLevel { - NONE(false), - BREAK(false), - CONTINUE(false), - RETURN(true), - FAIL(true); - - private final boolean returnFast; - - ReturnLevel(boolean returnFast) { - this.returnFast = returnFast; - } - - public boolean isReturnFast() { - return returnFast; - } - } - - - public static class ReturnInfo { - private final ReturnLevel level; - private final T data; - - public ReturnInfo(ReturnLevel level, T data) { - this.level = level; - this.data = data; - } - - public ReturnLevel getLevel() { - return level; - } - - public T getData() { - return data; - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java deleted file mode 100644 index 1a5963d20..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/ImplementationArguments.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang; - -/** - * Arguments passed to {@link Item}s by the implementation - */ -public interface ImplementationArguments { -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java deleted file mode 100644 index 07721b1d3..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Item.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public interface Item { - T apply(ImplementationArguments implementationArguments, Map> variableMap); - - Position getPosition(); -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java deleted file mode 100644 index 5a76a66bd..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Keyword.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang; - -public interface Keyword extends Returnable { -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java deleted file mode 100644 index a1f082985..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Returnable.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang; - -public interface Returnable extends Item { - ReturnType returnType(); - - enum ReturnType { - NUMBER(true), - STRING(true), - BOOLEAN(false), - VOID(false), - OBJECT(false); - - private final boolean comparable; - - ReturnType(boolean comparable) { - this.comparable = comparable; - } - - public boolean isComparable() { - return comparable; - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java deleted file mode 100644 index c0030a0ed..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Statement.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang; - -public interface Statement extends Item { -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java deleted file mode 100644 index be22b5641..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.constants; - -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class BooleanConstant extends ConstantExpression { - public BooleanConstant(Boolean constant, Position position) { - super(constant, position); - } - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java deleted file mode 100644 index 4b5a4ecad..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.constants; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public abstract class ConstantExpression implements Returnable { - private final T constant; - private final Position position; - - public ConstantExpression(T constant, Position position) { - this.constant = constant; - this.position = position; - } - - @Override - public T apply(ImplementationArguments implementationArguments, Map> variableMap) { - return constant; - } - - @Override - public Position getPosition() { - return position; - } - - public T getConstant() { - return constant; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java deleted file mode 100644 index 568668671..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.constants; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class NumericConstant extends ConstantExpression { - public NumericConstant(Number constant, Position position) { - super(constant, position); - } - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.NUMBER; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java deleted file mode 100644 index 7e6bc04aa..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.constants; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class StringConstant extends ConstantExpression { - public StringConstant(String constant, Position position) { - super(constant, position); - } - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.STRING; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java deleted file mode 100644 index 2040df1ac..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.functions; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public interface Function extends Returnable { - Function NULL = new Function<>() { - @Override - public ReturnType returnType() { - return null; - } - - @Override - public Object apply(ImplementationArguments implementationArguments, Map> variableMap) { - return null; - } - - @Override - public Position getPosition() { - return null; - } - }; -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java deleted file mode 100644 index a2916174b..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.functions; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public interface FunctionBuilder> { - T build(List> argumentList, Position position); - - int argNumber(); - - Returnable.ReturnType getArgument(int position); -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java deleted file mode 100644 index 1e21175ab..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/def/FunctionBlock.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.functions.def; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Item; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class FunctionBlock implements Item { - private final List> items; - private final Position position; - private final T defaultVal; - - public FunctionBlock(List> items, T defaultVal, Position position) { - this.items = items; - this.position = position; - this.defaultVal = defaultVal; - } - - @SuppressWarnings("unchecked") - @Override - public synchronized T apply(ImplementationArguments implementationArguments, Map> variableMap) { - Map> scope = new HashMap<>(variableMap); - for(Item item : items) { - Object result = item.apply(implementationArguments, variableMap); - if(result instanceof Block.ReturnInfo) { - Block.ReturnInfo level = (Block.ReturnInfo) result; - if(level.getLevel().equals(Block.ReturnLevel.RETURN)) return level.getData(); - } - } - return defaultVal; - } - - @Override - public Position getPosition() { - return position; - } - - public List> getItems() { - return items; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java deleted file mode 100644 index fe44e8d20..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class BreakKeyword implements Keyword> { - private final Position position; - - public BreakKeyword(Position position) { - this.position = position; - } - - @Override - public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - return new Block.ReturnInfo<>(Block.ReturnLevel.BREAK, null); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java deleted file mode 100644 index 352529f61..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ContinueKeyword implements Keyword> { - private final Position position; - - public ContinueKeyword(Position position) { - this.position = position; - } - - @Override - public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - return new Block.ReturnInfo<>(Block.ReturnLevel.CONTINUE, null); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java deleted file mode 100644 index 2d0ea7247..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class FailKeyword implements Keyword> { - private final Position position; - - public FailKeyword(Position position) { - this.position = position; - } - - @Override - public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - return new Block.ReturnInfo<>(Block.ReturnLevel.FAIL, null); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java deleted file mode 100644 index 2130fc1e9..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ReturnKeyword implements Keyword> { - private final Position position; - - public ReturnKeyword(Position position) { - this.position = position; - } - - @Override - public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - return new Block.ReturnInfo<>(Block.ReturnLevel.RETURN, null); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java deleted file mode 100644 index 045431df7..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Item; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ForKeyword implements Keyword> { - private final Block conditional; - private final Item initializer; - private final Returnable statement; - private final Item incrementer; - private final Position position; - - public ForKeyword(Block conditional, Item initializer, Returnable statement, Item incrementer, Position position) { - this.conditional = conditional; - this.initializer = initializer; - this.statement = statement; - this.incrementer = incrementer; - this.position = position; - } - - @Override - public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - for(initializer.apply(implementationArguments, variableMap); - statement.apply(implementationArguments, variableMap); - incrementer.apply(implementationArguments, variableMap)) { - Block.ReturnInfo level = conditional.apply(implementationArguments, variableMap); - if(level.getLevel().equals(Block.ReturnLevel.BREAK)) break; - if(level.getLevel().isReturnFast()) return level; - } - return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java deleted file mode 100644 index bd6a5549d..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class IfKeyword implements Keyword> { - private final Block conditional; - private final Returnable statement; - private final Position position; - private final List, Block>> elseIf; - private final Block elseBlock; - - public IfKeyword(Block conditional, Returnable statement, List, Block>> elseIf, - @Nullable Block elseBlock, Position position) { - this.conditional = conditional; - this.statement = statement; - this.position = position; - this.elseIf = elseIf; - this.elseBlock = elseBlock; - } - - @Override - public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - if(statement.apply(implementationArguments, variableMap)) return conditional.apply(implementationArguments, variableMap); - else { - for(Pair, Block> pair : elseIf) { - if(pair.getLeft().apply(implementationArguments, variableMap)) { - return pair.getRight().apply(implementationArguments, variableMap); - } - } - if(elseBlock != null) return elseBlock.apply(implementationArguments, variableMap); - } - return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } - - - public static class Pair { - private final L left; - private final R right; - - public Pair(L left, R right) { - this.left = left; - this.right = right; - } - - public L getLeft() { - return left; - } - - public R getRight() { - return right; - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java deleted file mode 100644 index 49457f5b9..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class WhileKeyword implements Keyword> { - private final Block conditional; - private final Returnable statement; - private final Position position; - - public WhileKeyword(Block conditional, Returnable statement, Position position) { - this.conditional = conditional; - this.statement = statement; - this.position = position; - } - - @Override - public Block.ReturnInfo apply(ImplementationArguments implementationArguments, Map> variableMap) { - while(statement.apply(implementationArguments, variableMap)) { - Block.ReturnInfo level = conditional.apply(implementationArguments, variableMap); - if(level.getLevel().equals(Block.ReturnLevel.BREAK)) break; - if(level.getLevel().isReturnFast()) return level; - } - return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java deleted file mode 100644 index aa9fa7707..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public abstract class BinaryOperation implements Returnable { - private final Returnable left; - private final Returnable right; - private final Position start; - - public BinaryOperation(Returnable left, Returnable right, Position start) { - this.left = left; - this.right = right; - this.start = start; - } - - public abstract O apply(I left, I right); - - @Override - public O apply(ImplementationArguments implementationArguments, Map> variableMap) { - return apply(left.apply(implementationArguments, variableMap), right.apply(implementationArguments, variableMap)); - } - - @Override - public Position getPosition() { - return start; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java deleted file mode 100644 index 90380e7a2..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class BooleanAndOperation extends BinaryOperation { - public BooleanAndOperation(Returnable left, Returnable right, Position start) { - super(left, right, start); - } - - @Override - public Boolean apply(Boolean left, Boolean right) { - return left && right; - } - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java deleted file mode 100644 index 3b2ccea7f..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class BooleanNotOperation extends UnaryOperation { - public BooleanNotOperation(Returnable input, Position position) { - super(input, position); - } - - @Override - public Boolean apply(Boolean input) { - return !input; - } - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java deleted file mode 100644 index 5322a0708..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class BooleanOrOperation extends BinaryOperation { - public BooleanOrOperation(Returnable left, Returnable right, Position start) { - super(left, right, start); - } - - @Override - public Boolean apply(Boolean left, Boolean right) { - return left || right; - } - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java deleted file mode 100644 index 46ad64a10..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ConcatenationOperation extends BinaryOperation { - public ConcatenationOperation(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public String apply(Object left, Object right) { - return left.toString() + right.toString(); - } - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.STRING; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java deleted file mode 100644 index 1610502dc..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class DivisionOperation extends BinaryOperation { - public DivisionOperation(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Number apply(Number left, Number right) { - return left.doubleValue() / right.doubleValue(); - } - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.NUMBER; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java deleted file mode 100644 index 549962922..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ModuloOperation extends BinaryOperation { - public ModuloOperation(Returnable left, Returnable right, Position start) { - super(left, right, start); - } - - @Override - public Number apply(Number left, Number right) { - return left.doubleValue() % right.doubleValue(); - } - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java deleted file mode 100644 index f3fef308b..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class MultiplicationOperation extends BinaryOperation { - public MultiplicationOperation(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Number apply(Number left, Number right) { - return left.doubleValue() * right.doubleValue(); - } - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java deleted file mode 100644 index 640b53443..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class NegationOperation extends UnaryOperation { - public NegationOperation(Returnable input, Position position) { - super(input, position); - } - - @Override - public Number apply(Number input) { - return -input.doubleValue(); - } - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java deleted file mode 100644 index 2b93c4da8..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class NumberAdditionOperation extends BinaryOperation { - public NumberAdditionOperation(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Number apply(Number left, Number right) { - return left.doubleValue() + right.doubleValue(); - } - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java deleted file mode 100644 index a81d70ad4..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class SubtractionOperation extends BinaryOperation { - public SubtractionOperation(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Number apply(Number left, Number right) { - return left.doubleValue() - right.doubleValue(); - } - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java deleted file mode 100644 index 3fbb194d0..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public abstract class UnaryOperation implements Returnable { - private final Returnable input; - private final Position position; - - public UnaryOperation(Returnable input, Position position) { - this.input = input; - this.position = position; - } - - public abstract T apply(T input); - - @Override - public T apply(ImplementationArguments implementationArguments, Map> variableMap) { - return apply(input.apply(implementationArguments, variableMap)); - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java deleted file mode 100644 index 68906e9c8..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; - -import net.jafama.FastMath; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class EqualsStatement extends BinaryOperation { - private static final double EPSILON = 0.000000001D; - - public EqualsStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Object left, Object right) { - if(left instanceof Number && right instanceof Number) { - return FastMath.abs(((Number) left).doubleValue() - ((Number) right).doubleValue()) <= EPSILON; - } - - return left.equals(right); - } - - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java deleted file mode 100644 index c26e423ee..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class GreaterOrEqualsThanStatement extends BinaryOperation { - public GreaterOrEqualsThanStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Number left, Number right) { - return left.doubleValue() >= right.doubleValue(); - } - - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java deleted file mode 100644 index be21852b4..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class GreaterThanStatement extends BinaryOperation { - public GreaterThanStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Number left, Number right) { - return left.doubleValue() > right.doubleValue(); - } - - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java deleted file mode 100644 index d44c51b00..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class LessThanOrEqualsStatement extends BinaryOperation { - public LessThanOrEqualsStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Number left, Number right) { - return left.doubleValue() <= right.doubleValue(); - } - - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java deleted file mode 100644 index 639b45017..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class LessThanStatement extends BinaryOperation { - public LessThanStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Number left, Number right) { - return left.doubleValue() < right.doubleValue(); - } - - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java deleted file mode 100644 index 8d39caf3e..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class NotEqualsStatement extends BinaryOperation { - public NotEqualsStatement(Returnable left, Returnable right, Position position) { - super(left, right, position); - } - - @Override - public Boolean apply(Object left, Object right) { - return !left.equals(right); - } - - - @Override - public Returnable.ReturnType returnType() { - return Returnable.ReturnType.BOOLEAN; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java deleted file mode 100644 index 32be67aa9..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Assignment.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.variables; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Item; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class Assignment implements Item { - private final Returnable value; - private final Position position; - private final String identifier; - - public Assignment(Returnable value, String identifier, Position position) { - this.value = value; - this.identifier = identifier; - this.position = position; - } - - @SuppressWarnings("unchecked") - @Override - public synchronized T apply(ImplementationArguments implementationArguments, Map> variableMap) { - T val = value.apply(implementationArguments, variableMap); - ((Variable) variableMap.get(identifier)).setValue(val); - return val; - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java deleted file mode 100644 index 9e124bd58..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.variables; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class BooleanVariable implements Variable { - private final Position position; - private Boolean value; - - public BooleanVariable(Boolean value, Position position) { - this.value = value; - this.position = position; - } - - @Override - public Boolean getValue() { - return value; - } - - @Override - public void setValue(Boolean value) { - this.value = value; - } - - @Override - public Returnable.ReturnType getType() { - return Returnable.ReturnType.BOOLEAN; - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java deleted file mode 100644 index 90b93f84b..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Declaration.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.variables; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Item; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class Declaration implements Item { - private final Position position; - private final String identifier; - private final Returnable value; - private final Returnable.ReturnType type; - - public Declaration(Position position, String identifier, Returnable value, Returnable.ReturnType type) { - switch(type) { - case STRING: - case BOOLEAN: - case NUMBER: - break; - default: - throw new IllegalArgumentException("Invalid variable type: " + type); - } - this.position = position; - this.identifier = identifier; - this.value = value; - this.type = type; - } - - @Override - public T apply(ImplementationArguments implementationArguments, Map> variableMap) { - T result = value.apply(implementationArguments, variableMap); - switch(type) { - case NUMBER -> variableMap.put(identifier, new NumberVariable((Number) result, position)); - case BOOLEAN -> variableMap.put(identifier, new BooleanVariable((Boolean) result, position)); - case STRING -> variableMap.put(identifier, new StringVariable((String) result, position)); - } - return result; - } - - @Override - public Position getPosition() { - return position; - } - - public Returnable.ReturnType getType() { - return type; - } - - public String getIdentifier() { - return identifier; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java deleted file mode 100644 index c13fe536d..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Getter.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.variables; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class Getter implements Returnable { - private final String identifier; - private final Position position; - private final ReturnType type; - - public Getter(String identifier, Position position, ReturnType type) { - this.identifier = identifier; - this.position = position; - this.type = type; - } - - @Override - public ReturnType returnType() { - return type; - } - - @Override - public synchronized Object apply(ImplementationArguments implementationArguments, Map> variableMap) { - return variableMap.get(identifier).getValue(); - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java deleted file mode 100644 index 803e59a81..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.variables; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class NumberVariable implements Variable { - private final Position position; - private Number value; - - public NumberVariable(Number value, Position position) { - this.value = value; - this.position = position; - } - - @Override - public Number getValue() { - return value; - } - - @Override - public void setValue(Number value) { - this.value = value; - } - - @Override - public Returnable.ReturnType getType() { - return Returnable.ReturnType.NUMBER; - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java deleted file mode 100644 index a4b104458..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.variables; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class StringVariable implements Variable { - private final Position position; - private String value; - - public StringVariable(String value, Position position) { - this.value = value; - this.position = position; - } - - @Override - public String getValue() { - return value; - } - - @Override - public void setValue(String value) { - this.value = value; - } - - @Override - public Returnable.ReturnType getType() { - return Returnable.ReturnType.STRING; - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java deleted file mode 100644 index cc4beb9de..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dfsek.terra.addons.terrascript.parser.lang.variables; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public interface Variable { - T getValue(); - - void setValue(T value); - - Returnable.ReturnType getType(); - - Position getPosition(); -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java deleted file mode 100644 index b260bc8f3..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import net.jafama.FastMath; -import org.apache.commons.io.IOUtils; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.Random; -import java.util.concurrent.ExecutionException; - -import com.dfsek.terra.api.structure.buffer.buffers.DirectBuffer; -import com.dfsek.terra.api.structure.buffer.buffers.StructureBuffer; -import com.dfsek.terra.addons.terrascript.parser.Parser; -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.BiomeFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.BlockFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.CheckBlockFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.CheckFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.EntityFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.GetMarkFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.LootFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.PullFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.RandomFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.RecursionsFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.SetMarkFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.StateFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.StructureFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.UnaryBooleanFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.UnaryNumberFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.UnaryStringFunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.builders.ZeroArgFunctionBuilder; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; - - -public class StructureScript implements Structure { - private final Block block; - private final String id; - private final Cache cache; - private final Platform platform; - - public StructureScript(InputStream inputStream, String id, Platform platform, Registry registry, Registry lootRegistry, - Registry> functionRegistry) { - Parser parser; - try { - parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); - } catch(IOException e) { - throw new RuntimeException(e); - } - this.id = id; - - functionRegistry.forEach(parser::registerFunction); // Register registry functions. - - parser - .registerFunction("block", new BlockFunctionBuilder(platform)) - .registerFunction("debugBlock", new BlockFunctionBuilder(platform)) - .registerFunction("check", new CheckFunctionBuilder(platform)) - .registerFunction("structure", new StructureFunctionBuilder(registry, platform)) - .registerFunction("randomInt", new RandomFunctionBuilder()) - .registerFunction("recursions", new RecursionsFunctionBuilder()) - .registerFunction("setMark", new SetMarkFunctionBuilder()) - .registerFunction("getMark", new GetMarkFunctionBuilder()) - .registerFunction("pull", new PullFunctionBuilder(platform)) - .registerFunction("loot", new LootFunctionBuilder(platform, lootRegistry, this)) - .registerFunction("entity", new EntityFunctionBuilder(platform)) - .registerFunction("getBiome", new BiomeFunctionBuilder(platform)) - .registerFunction("getBlock", new CheckBlockFunctionBuilder()) - .registerFunction("state", new StateFunctionBuilder(platform)) - .registerFunction("setWaterlog", new UnaryBooleanFunctionBuilder((waterlog, args) -> args.setWaterlog(waterlog))) - .registerFunction("originX", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getX(), - Returnable.ReturnType.NUMBER)) - .registerFunction("originY", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getY(), - Returnable.ReturnType.NUMBER)) - .registerFunction("originZ", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getZ(), - Returnable.ReturnType.NUMBER)) - .registerFunction("rotation", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().toString(), - Returnable.ReturnType.STRING)) - .registerFunction("rotationDegrees", new ZeroArgFunctionBuilder<>(arguments -> arguments.getRotation().getDegrees(), - Returnable.ReturnType.NUMBER)) - .registerFunction("print", - new UnaryStringFunctionBuilder(string -> platform.getDebugLogger().info("[" + id + "] " + string))) - .registerFunction("abs", new UnaryNumberFunctionBuilder(number -> FastMath.abs(number.doubleValue()))) - .registerFunction("pow", new BinaryNumberFunctionBuilder( - (number, number2) -> FastMath.pow(number.doubleValue(), number2.doubleValue()))) - .registerFunction("sqrt", new UnaryNumberFunctionBuilder(number -> FastMath.sqrt(number.doubleValue()))) - .registerFunction("floor", new UnaryNumberFunctionBuilder(number -> FastMath.floor(number.doubleValue()))) - .registerFunction("ceil", new UnaryNumberFunctionBuilder(number -> FastMath.ceil(number.doubleValue()))) - .registerFunction("log", new UnaryNumberFunctionBuilder(number -> FastMath.log(number.doubleValue()))) - .registerFunction("round", new UnaryNumberFunctionBuilder(number -> FastMath.round(number.doubleValue()))) - .registerFunction("sin", new UnaryNumberFunctionBuilder(number -> FastMath.sin(number.doubleValue()))) - .registerFunction("cos", new UnaryNumberFunctionBuilder(number -> FastMath.cos(number.doubleValue()))) - .registerFunction("tan", new UnaryNumberFunctionBuilder(number -> FastMath.tan(number.doubleValue()))) - .registerFunction("asin", new UnaryNumberFunctionBuilder(number -> FastMath.asin(number.doubleValue()))) - .registerFunction("acos", new UnaryNumberFunctionBuilder(number -> FastMath.acos(number.doubleValue()))) - .registerFunction("atan", new UnaryNumberFunctionBuilder(number -> FastMath.atan(number.doubleValue()))) - .registerFunction("max", new BinaryNumberFunctionBuilder( - (number, number2) -> FastMath.max(number.doubleValue(), number2.doubleValue()))) - .registerFunction("min", new BinaryNumberFunctionBuilder( - (number, number2) -> FastMath.min(number.doubleValue(), number2.doubleValue()))); - - if(!platform.getTerraConfig().isDebugScript()) { - parser.ignoreFunction("debugBlock"); - } - - block = parser.parse(); - this.platform = platform; - this.cache = CacheBuilder.newBuilder().maximumSize(platform.getTerraConfig().getStructureCache()).build(); - } - - @Override - @SuppressWarnings("try") - public boolean generate(Vector3 location, World world, Chunk chunk, Random random, Rotation rotation) { - try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_chunk:" + id)) { - StructureBuffer buffer = computeBuffer(location, world, random, rotation); - buffer.paste(location, chunk); - return buffer.succeeded(); - } - } - - @Override - @SuppressWarnings("try") - public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) { - try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_recursive:" + id)) { - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, recursions)); - } - } - - @Override - @SuppressWarnings("try") - public boolean generate(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_direct:" + id)) { - DirectBuffer buffer = new DirectBuffer(location, world); - return applyBlock(new TerraImplementationArguments(buffer, rotation, random, world, 0)); - } - } - - @SuppressWarnings("try") - public boolean test(Vector3 location, World world, Random random, Rotation rotation) { - try(ProfileFrame ignore = platform.getProfiler().profile("terrascript_test:" + id)) { - StructureBuffer buffer = computeBuffer(location, world, random, rotation); - return buffer.succeeded(); - } - } - - private StructureBuffer computeBuffer(Vector3 location, World world, Random random, Rotation rotation) { - try { - return cache.get(location, () -> { - StructureBuffer buf = new StructureBuffer(location); - buf.setSucceeded(applyBlock(new TerraImplementationArguments(buf, rotation, random, world, 0))); - return buf; - }); - } catch(ExecutionException e) { - throw new RuntimeException(e); - } - } - - private boolean applyBlock(TerraImplementationArguments arguments) { - try { - return block.apply(arguments).getLevel() != Block.ReturnLevel.FAIL; - } catch(RuntimeException e) { - platform.logger().severe("Failed to generate structure at " + arguments.getBuffer().getOrigin() + ": " + e.getMessage()); - platform.getDebugLogger().stack(e); - return false; - } - } - - @Override - public String getID() { - return id; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java deleted file mode 100644 index 15772fcea..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/TerraImplementationArguments.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script; - -import java.util.Random; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.api.structure.buffer.Buffer; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.world.World; - - -public class TerraImplementationArguments implements ImplementationArguments { - private final Buffer buffer; - private final Rotation rotation; - private final Random random; - private final World world; - private final int recursions; - private boolean waterlog = false; - - public TerraImplementationArguments(Buffer buffer, Rotation rotation, Random random, World world, int recursions) { - this.buffer = buffer; - this.rotation = rotation; - this.random = random; - this.world = world; - this.recursions = recursions; - } - - public Buffer getBuffer() { - return buffer; - } - - public int getRecursions() { - return recursions; - } - - public Random getRandom() { - return random; - } - - public Rotation getRotation() { - return rotation; - } - - public boolean isWaterlog() { - return waterlog; - } - - public void setWaterlog(boolean waterlog) { - this.waterlog = waterlog; - } - - public World getWorld() { - return world; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java deleted file mode 100644 index 2497db303..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; -import java.util.Map; -import java.util.function.BiFunction; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class BinaryNumberFunctionBuilder implements FunctionBuilder> { - - private final BiFunction function; - - public BinaryNumberFunctionBuilder(BiFunction function) { - this.function = function; - } - - @Override - public Function build(List> argumentList, Position position) { - return new Function<>() { - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } - - @SuppressWarnings("unchecked") - @Override - public Number apply(ImplementationArguments implementationArguments, Map> variableMap) { - return function.apply(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap), - ((Returnable) argumentList.get(1)).apply(implementationArguments, variableMap)); - } - - @Override - public Position getPosition() { - return position; - } - }; - } - - @Override - public int argNumber() { - return 2; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - if(position == 0 || position == 1) return Returnable.ReturnType.NUMBER; - return null; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java deleted file mode 100644 index 7b085b892..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.BiomeFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; - - -public class BiomeFunctionBuilder implements FunctionBuilder { - private final Platform platform; - - public BiomeFunctionBuilder(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("unchecked") - @Override - public BiomeFunction build(List> argumentList, Position position) { - return new BiomeFunction(platform, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), position); - } - - @Override - public int argNumber() { - return 3; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java deleted file mode 100644 index f99727389..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; - - -public class BlockFunctionBuilder implements FunctionBuilder { - private final Platform platform; - - public BlockFunctionBuilder(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("unchecked") - @Override - public BlockFunction build(List> argumentList, Position position) { - if(argumentList.size() < 4) throw new ParseException("Expected data", position); - Returnable booleanReturnable = new BooleanConstant(true, position); - if(argumentList.size() == 5) booleanReturnable = (Returnable) argumentList.get(4); - if(argumentList.get(3) instanceof StringConstant) { - return new BlockFunction.Constant((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (StringConstant) argumentList.get(3), - booleanReturnable, platform, position); - } - return new BlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), booleanReturnable, - platform, position); - } - - @Override - public int argNumber() { - return -1; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - case 3 -> Returnable.ReturnType.STRING; - case 4 -> Returnable.ReturnType.BOOLEAN; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java deleted file mode 100644 index e86cc4388..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.CheckBlockFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class CheckBlockFunctionBuilder implements FunctionBuilder { - @SuppressWarnings("unchecked") - @Override - public CheckBlockFunction build(List> argumentList, Position position) { - return new CheckBlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), position); - } - - @Override - public int argNumber() { - return 3; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java deleted file mode 100644 index 483f98947..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckFunctionBuilder.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.CheckFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; - - -public class CheckFunctionBuilder implements FunctionBuilder { - private final Platform platform; - - public CheckFunctionBuilder(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("unchecked") - @Override - public CheckFunction build(List> argumentList, Position position) { - return new CheckFunction(platform, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), position); - } - - @Override - public int argNumber() { - return 3; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java deleted file mode 100644 index 2c3d3c289..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.EntityFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; - - -public class EntityFunctionBuilder implements FunctionBuilder { - private final Platform platform; - - public EntityFunctionBuilder(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("unchecked") - @Override - public EntityFunction build(List> argumentList, Position position) { - return new EntityFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); - } - - @Override - public int argNumber() { - return 4; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - case 3 -> Returnable.ReturnType.STRING; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java deleted file mode 100644 index 3973390b7..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.GetMarkFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class GetMarkFunctionBuilder implements FunctionBuilder { - - public GetMarkFunctionBuilder() { - } - - @SuppressWarnings("unchecked") - @Override - public GetMarkFunction build(List> argumentList, Position position) { - return new GetMarkFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), position); - } - - @Override - public int argNumber() { - return 3; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java deleted file mode 100644 index 619be08ab..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.addons.terrascript.script.functions.LootFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.LootTable; - - -public class LootFunctionBuilder implements FunctionBuilder { - private final Platform platform; - private final Registry registry; - private final StructureScript script; - - public LootFunctionBuilder(Platform platform, Registry registry, StructureScript script) { - this.platform = platform; - this.registry = registry; - this.script = script; - } - - @SuppressWarnings("unchecked") - @Override - public LootFunction build(List> argumentList, Position position) { - return new LootFunction(registry, (Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position, script); - } - - @Override - public int argNumber() { - return 4; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - case 3 -> Returnable.ReturnType.STRING; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java deleted file mode 100644 index f2cd93cd8..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.PullFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; - - -public class PullFunctionBuilder implements FunctionBuilder { - private final Platform platform; - - public PullFunctionBuilder(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("unchecked") - @Override - public PullFunction build(List> argumentList, Position position) { - return new PullFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); - } - - @Override - public int argNumber() { - return 4; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - case 3 -> Returnable.ReturnType.STRING; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java deleted file mode 100644 index bc0334f65..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.RandomFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class RandomFunctionBuilder implements FunctionBuilder { - @SuppressWarnings("unchecked") - @Override - public RandomFunction build(List> argumentList, Position position) { - return new RandomFunction((Returnable) argumentList.get(0), position); - } - - @Override - public int argNumber() { - return 1; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - if(position == 0) return Returnable.ReturnType.NUMBER; - return null; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java deleted file mode 100644 index 793cd7cb2..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.RecursionsFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class RecursionsFunctionBuilder implements FunctionBuilder { - @Override - public RecursionsFunction build(List> argumentList, Position position) { - return new RecursionsFunction(position); - } - - @Override - public int argNumber() { - return 0; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return null; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java deleted file mode 100644 index 51d269133..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.SetMarkFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class SetMarkFunctionBuilder implements FunctionBuilder { - - public SetMarkFunctionBuilder() { - } - - @SuppressWarnings("unchecked") - @Override - public SetMarkFunction build(List> argumentList, Position position) { - return new SetMarkFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), position); - } - - @Override - public int argNumber() { - return 4; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - case 3 -> Returnable.ReturnType.STRING; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java deleted file mode 100644 index e1b9b41a5..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.StateFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; - - -public class StateFunctionBuilder implements FunctionBuilder { - private final Platform platform; - - public StateFunctionBuilder(Platform platform) { - this.platform = platform; - } - - @SuppressWarnings("unchecked") - @Override - public StateFunction build(List> argumentList, Position position) { - if(argumentList.size() < 4) throw new ParseException("Expected data", position); - return new StateFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), - (Returnable) argumentList.get(2), (Returnable) argumentList.get(3), platform, position); - } - - @Override - public int argNumber() { - return 4; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - case 3 -> Returnable.ReturnType.STRING; - default -> null; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java deleted file mode 100644 index 95c0a4164..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; -import java.util.stream.Collectors; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.script.functions.StructureFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.Structure; - - -public class StructureFunctionBuilder implements FunctionBuilder { - private final Registry registry; - private final Platform platform; - - public StructureFunctionBuilder(Registry registry, Platform platform) { - this.registry = registry; - this.platform = platform; - } - - @SuppressWarnings("unchecked") - @Override - public StructureFunction build(List> argumentList, Position position) { - if(argumentList.size() < 5) throw new ParseException("Expected rotations", position); - - return new StructureFunction((Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), - (Returnable) argumentList.remove(0), (Returnable) argumentList.remove(0), - argumentList.stream().map(item -> ((Returnable) item)).collect(Collectors.toList()), registry, - position, platform); - } - - @Override - public int argNumber() { - return -1; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0, 1, 2 -> Returnable.ReturnType.NUMBER; - default -> Returnable.ReturnType.STRING; - }; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java deleted file mode 100644 index 5e81ab78c..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class UnaryBooleanFunctionBuilder implements FunctionBuilder> { - - private final BiConsumer function; - - public UnaryBooleanFunctionBuilder(BiConsumer function) { - this.function = function; - } - - @Override - public Function build(List> argumentList, Position position) { - return new Function<>() { - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } - - @SuppressWarnings("unchecked") - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - function.accept(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap), - (TerraImplementationArguments) implementationArguments); - return null; - } - - @Override - public Position getPosition() { - return position; - } - }; - } - - @Override - public int argNumber() { - return 1; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - if(position == 0) return Returnable.ReturnType.BOOLEAN; - return null; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java deleted file mode 100644 index 06d820a6e..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class UnaryNumberFunctionBuilder implements FunctionBuilder> { - - private final java.util.function.Function function; - - public UnaryNumberFunctionBuilder(java.util.function.Function function) { - this.function = function; - } - - @Override - public Function build(List> argumentList, Position position) { - return new Function<>() { - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } - - @SuppressWarnings("unchecked") - @Override - public Number apply(ImplementationArguments implementationArguments, Map> variableMap) { - return function.apply(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap)); - } - - @Override - public Position getPosition() { - return position; - } - }; - } - - @Override - public int argNumber() { - return 1; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - if(position == 0) return Returnable.ReturnType.NUMBER; - return null; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java deleted file mode 100644 index 729f4d345..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class UnaryStringFunctionBuilder implements FunctionBuilder> { - - private final java.util.function.Consumer function; - - public UnaryStringFunctionBuilder(java.util.function.Consumer function) { - this.function = function; - } - - @Override - public Function build(List> argumentList, Position position) { - return new Function<>() { - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } - - @SuppressWarnings("unchecked") - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - function.accept(((Returnable) argumentList.get(0)).apply(implementationArguments, variableMap)); - return null; - } - - @Override - public Position getPosition() { - return position; - } - }; - } - - @Override - public int argNumber() { - return 1; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - if(position == 0) return Returnable.ReturnType.STRING; - return null; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java deleted file mode 100644 index 4cb828d38..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.builders; - -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ZeroArgFunctionBuilder implements FunctionBuilder> { - private final java.util.function.Function function; - private final Returnable.ReturnType type; - - public ZeroArgFunctionBuilder(java.util.function.Function function, Returnable.ReturnType type) { - this.function = function; - this.type = type; - } - - @Override - public Function build(List> argumentList, Position position) { - return new Function<>() { - @Override - public ReturnType returnType() { - return type; - } - - @Override - public T apply(ImplementationArguments implementationArguments, Map> variableMap) { - return function.apply((TerraImplementationArguments) implementationArguments); - } - - @Override - public Position getPosition() { - return position; - } - }; - } - - @Override - public int argNumber() { - return 0; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - if(position == 0) return type; - return null; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java deleted file mode 100644 index 3619a02db..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - - -public class BiomeFunction implements Function { - private final Platform platform; - private final Returnable x, y, z; - private final Position position; - - - public BiomeFunction(Platform platform, Returnable x, Returnable y, Returnable z, Position position) { - this.platform = platform; - this.x = x; - this.y = y; - this.z = z; - this.position = position; - } - - - @Override - public String apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - BiomeProvider grid = arguments.getWorld().getBiomeProvider(); - - return grid.getBiome(arguments.getBuffer() - .getOrigin() - .clone() - .add(new Vector3(FastMath.roundToInt(xz.getX()), - y.apply(implementationArguments, variableMap).intValue(), - FastMath.roundToInt(xz.getZ()))), arguments.getWorld().getSeed()).getID(); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.STRING; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java deleted file mode 100644 index d34803f8a..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import com.dfsek.terra.api.Platform; - -import net.jafama.FastMath; - -import java.util.HashMap; -import java.util.Map; - -import com.dfsek.terra.api.structure.buffer.items.BufferedBlock; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class BlockFunction implements Function { - protected final Returnable x, y, z; - protected final Returnable blockData; - protected final Platform platform; - private final Map data = new HashMap<>(); - private final Returnable overwrite; - private final Position position; - - public BlockFunction(Returnable x, Returnable y, Returnable z, Returnable blockData, - Returnable overwrite, Platform platform, Position position) { - this.x = x; - this.y = y; - this.z = z; - this.blockData = blockData; - this.overwrite = overwrite; - this.platform = platform; - this.position = position; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - BlockState rot = getBlockState(implementationArguments, variableMap).clone(); - setBlock(implementationArguments, variableMap, arguments, rot); - return null; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } - - void setBlock(ImplementationArguments implementationArguments, Map> variableMap, - TerraImplementationArguments arguments, BlockState rot) { - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem( - new BufferedBlock(rot, overwrite.apply(implementationArguments, variableMap), platform, arguments.isWaterlog()), - new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), - FastMath.roundToInt(xz.getZ()))); - } - - protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { - return data.computeIfAbsent(blockData.apply(arguments, variableMap), platform.getWorldHandle()::createBlockData); - } - - - public static class Constant extends BlockFunction { - private final BlockState state; - - public Constant(Returnable x, Returnable y, Returnable z, StringConstant blockData, - Returnable overwrite, Platform platform, Position position) { - super(x, y, z, blockData, overwrite, platform, position); - this.state = platform.getWorldHandle().createBlockData(blockData.getConstant()); - } - - @Override - protected BlockState getBlockState(ImplementationArguments arguments, Map> variableMap) { - return state; - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java deleted file mode 100644 index 2b60afbd5..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class CheckBlockFunction implements Function { - private final Returnable x, y, z; - private final Position position; - - public CheckBlockFunction(Returnable x, Returnable y, Returnable z, Position position) { - this.x = x; - this.y = y; - this.z = z; - this.position = position; - } - - - @Override - public String apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - String data = arguments.getWorld() - .getBlockData(arguments.getBuffer() - .getOrigin() - .clone() - .add(new Vector3(FastMath.roundToInt(xz.getX()), - y.apply(implementationArguments, variableMap) - .doubleValue(), FastMath.roundToInt(xz.getZ())))) - .getAsString(); - if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties - else return data; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.STRING; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java deleted file mode 100644 index b975fa990..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckFunction.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.SamplerCache; - - -public class CheckFunction implements Function { - private final Platform platform; - private final Returnable x, y, z; - private final Position position; - - public CheckFunction(Platform platform, Returnable x, Returnable y, Returnable z, Position position) { - this.platform = platform; - this.x = x; - this.y = y; - this.z = z; - this.position = position; - } - - - @Override - public String apply(ImplementationArguments implementationArguments, Map> variableMap) { - - - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - Vector3 location = arguments.getBuffer().getOrigin().clone().add( - new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), - FastMath.roundToInt(xz.getZ()))); - - return apply(location, arguments.getWorld()); - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.STRING; - } - - private String apply(Vector3 vector, World world) { - int y = vector.getBlockY(); - if(y >= world.getMaxHeight() || y < 0) return "AIR"; - SamplerCache cache = world.getConfig().getSamplerCache(); - double comp = sample(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ(), cache); - - if(comp > 0) return "LAND"; // If noise val is greater than zero, location will always be land. - - //BiomeProvider provider = tw.getBiomeProvider(); - //TerraBiome b = provider.getBiome(vector.getBlockX(), vector.getBlockZ()); - - /*if(vector.getY() > c.getSeaLevel())*/ - return "AIR"; // Above sea level - //return "OCEAN"; // Below sea level - } - - private double sample(int x, int y, int z, SamplerCache cache) { - int cx = FastMath.floorDiv(x, 16); - int cz = FastMath.floorDiv(z, 16); - return cache.get(x, z).sample(x - (cx << 4), y, z - (cz << 4)); - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java deleted file mode 100644 index cae74890e..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedEntity; -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class EntityFunction implements Function { - private final EntityType data; - private final Returnable x, y, z; - private final Position position; - private final Platform platform; - - public EntityFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, - Position position) { - this.position = position; - this.platform = platform; - if(!(data instanceof ConstantExpression)) throw new ParseException("Entity data must be constant", data.getPosition()); - - this.data = platform.getWorldHandle().getEntity(((ConstantExpression) data).getConstant()); - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - arguments.getBuffer().addItem(new BufferedEntity(data, platform), - new Vector3(xz.getX(), y.apply(implementationArguments, variableMap).doubleValue(), xz.getZ())); - return null; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java deleted file mode 100644 index 2f1fa4a6c..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class GetMarkFunction implements Function { - private final Returnable x, y, z; - private final Position position; - - public GetMarkFunction(Returnable x, Returnable y, Returnable z, Position position) { - this.position = position; - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public String apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt( - y.apply(implementationArguments, variableMap).doubleValue()), FastMath.floorToInt(xz.getZ()))); - return mark == null ? "" : mark; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.STRING; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java deleted file mode 100644 index f0839ff10..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedLootApplication; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.StructureScript; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.LootTable; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class LootFunction implements Function { - private final Registry registry; - private final Returnable data; - private final Returnable x, y, z; - private final Position position; - private final Platform platform; - private final StructureScript script; - - public LootFunction(Registry registry, Returnable x, Returnable y, Returnable z, - Returnable data, Platform platform, Position position, StructureScript script) { - this.registry = registry; - this.position = position; - this.data = data; - this.x = x; - this.y = y; - this.z = z; - this.platform = platform; - this.script = script; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - String id = data.apply(implementationArguments, variableMap); - LootTable table = registry.get(id); - - if(table == null) { - platform.logger().severe("No such loot table " + id); - return null; - } - - arguments.getBuffer().addItem(new BufferedLootApplication(table, platform, script), - new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), - FastMath.roundToInt(xz.getZ()))); - return null; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java deleted file mode 100644 index b80310839..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedPulledBlock; -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.block.state.BlockState; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class PullFunction implements Function { - private final BlockState data; - private final Returnable x, y, z; - private final Position position; - - public PullFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, - Position position) { - this.position = position; - if(!(data instanceof ConstantExpression)) throw new ParseException("Block data must be constant", data.getPosition()); - - this.data = platform.getWorldHandle().createBlockData(((ConstantExpression) data).getConstant()); - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - BlockState rot = data.clone(); - RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse()); - arguments.getBuffer().addItem(new BufferedPulledBlock(rot), - new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), - FastMath.roundToInt(xz.getZ()))); - return null; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java deleted file mode 100644 index 6cec0dcca..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class RandomFunction implements Function { - private final Returnable numberReturnable; - private final Position position; - - public RandomFunction(Returnable numberReturnable, Position position) { - this.numberReturnable = numberReturnable; - this.position = position; - } - - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } - - @Override - public Integer apply(ImplementationArguments implementationArguments, Map> variableMap) { - return ((TerraImplementationArguments) implementationArguments).getRandom().nextInt( - numberReturnable.apply(implementationArguments, variableMap).intValue()); - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java deleted file mode 100644 index 0d4ce39d4..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class RecursionsFunction implements Function { - private final Position position; - - public RecursionsFunction(Position position) { - this.position = position; - } - - @Override - public ReturnType returnType() { - return ReturnType.NUMBER; - } - - @Override - public Number apply(ImplementationArguments implementationArguments, Map> variableMap) { - return ((TerraImplementationArguments) implementationArguments).getRecursions(); - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java deleted file mode 100644 index 803da7bfd..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class SetMarkFunction implements Function { - private final Returnable x, y, z; - private final Position position; - private final Returnable mark; - - public SetMarkFunction(Returnable x, Returnable y, Returnable z, Returnable mark, Position position) { - this.position = position; - this.mark = mark; - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - arguments.getBuffer().setMark(mark.apply(implementationArguments, variableMap), new Vector3(FastMath.floorToInt(xz.getX()), - FastMath.floorToInt( - y.apply(implementationArguments, - variableMap) - .doubleValue()), - FastMath.floorToInt(xz.getZ()))); - return null; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java deleted file mode 100644 index 26bc53ed5..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.buffer.items.BufferedStateManipulator; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class StateFunction implements Function { - private final Returnable data; - private final Returnable x, y, z; - private final Position position; - private final Platform platform; - - public StateFunction(Returnable x, Returnable y, Returnable z, Returnable data, Platform platform, - Position position) { - this.position = position; - this.platform = platform; - this.data = data; - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - RotationUtil.rotateVector(xz, arguments.getRotation()); - - arguments.getBuffer().addItem(new BufferedStateManipulator(platform, data.apply(implementationArguments, variableMap)), - new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).intValue(), - FastMath.roundToInt(xz.getZ()))); - return null; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java deleted file mode 100644 index edcf262c1..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.dfsek.terra.addons.terrascript.script.functions; - -import net.jafama.FastMath; - -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.buffer.IntermediateBuffer; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.registry.Registry; -import com.dfsek.terra.api.structure.Structure; -import com.dfsek.terra.api.structure.rotation.Rotation; -import com.dfsek.terra.api.util.RotationUtil; -import com.dfsek.terra.api.util.vector.Vector2; -import com.dfsek.terra.api.util.vector.Vector3; - - -public class StructureFunction implements Function { - private final Registry registry; - private final Returnable id; - private final Returnable x, y, z; - private final Position position; - private final Platform platform; - private final List> rotations; - - public StructureFunction(Returnable x, Returnable y, Returnable z, Returnable id, - List> rotations, Registry registry, Position position, Platform platform) { - this.registry = registry; - this.id = id; - this.position = position; - this.x = x; - this.y = y; - this.z = z; - this.platform = platform; - this.rotations = rotations; - } - - @Override - public ReturnType returnType() { - return ReturnType.BOOLEAN; - } - - @Override - public Boolean apply(ImplementationArguments implementationArguments, Map> variableMap) { - TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; - - if(arguments.getRecursions() > platform.getTerraConfig().getMaxRecursion()) - throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); - - Vector2 xz = new Vector2(x.apply(implementationArguments, variableMap).doubleValue(), - z.apply(implementationArguments, variableMap).doubleValue()); - - RotationUtil.rotateVector(xz, arguments.getRotation()); - - String app = id.apply(implementationArguments, variableMap); - Structure script = registry.get(app); - if(script == null) { - platform.logger().severe("No such structure " + app); - return null; - } - - Rotation rotation1; - String rotString = rotations.get(arguments.getRandom().nextInt(rotations.size())).apply(implementationArguments, variableMap); - try { - rotation1 = Rotation.valueOf(rotString); - } catch(IllegalArgumentException e) { - platform.logger().severe("Invalid rotation " + rotString); - return null; - } - - Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), - FastMath.roundToInt(xz.getZ())); - - return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getWorld(), arguments.getRandom(), - arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); - } - - @Override - public Position getPosition() { - return position; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java deleted file mode 100644 index 7eb21418f..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer; - -public class Char { - private final char character; - private final int index; - private final int line; - - - public Char(char character, int index, int line) { - this.character = character; - this.index = index; - this.line = line; - } - - public boolean is(char... tests) { - for(char test : tests) { - if(test == character && test != '\0') { - return true; - } - } - return false; - } - - @Override - public String toString() { - return Character.toString(character); - } - - public char getCharacter() { - return character; - } - - public int getIndex() { - return index; - } - - public int getLine() { - return line; - } - - public boolean isWhitespace() { - return Character.isWhitespace(character); - } - - public boolean isNewLine() { - return character == '\n'; - } - - public boolean isDigit() { - return Character.isDigit(character); - } - - public boolean isEOF() { - return character == '\0'; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java deleted file mode 100644 index e65c6476f..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Lookahead.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer; - - -import java.io.IOException; -import java.io.Reader; -import java.util.ArrayList; -import java.util.List; - - -/** - * Stream-like data structure that allows viewing future elements without consuming current. - */ -public class Lookahead { - private final List buffer = new ArrayList<>(); - private final Reader input; - private int index = 0; - private int line = 0; - private boolean end = false; - - public Lookahead(Reader r) { - this.input = r; - } - - /** - * Get the current character without consuming it. - * - * @return current character - */ - public Char current() { - return next(0); - } - - - /** - * Consume and return one character. - * - * @return Character that was consumed. - */ - public Char consume() { - Char consumed = current(); - consume(1); - return consumed; - } - - /** - * Fetch a future character without consuming it. - * - * @param ahead Distance ahead to peek - * - * @return Character - */ - public Char next(int ahead) { - if(ahead < 0) throw new IllegalArgumentException(); - - while(buffer.size() <= ahead && !end) { - Char item = fetch(); - if(item != null) { - buffer.add(item); - } else end = true; - } - - if(ahead >= buffer.size()) { - return null; - } else return buffer.get(ahead); - } - - /** - * Consume an amount of characters - * - * @param amount Number of characters to consume - */ - public void consume(int amount) { - if(amount < 0) throw new IllegalArgumentException(); - while(amount-- > 0) { - if(!buffer.isEmpty()) buffer.remove(0); // Remove top item from buffer. - else { - if(end) return; - Char item = fetch(); - if(item == null) end = true; - } - } - } - - public boolean matches(String check, boolean consume) { - if(check == null) return false; - - for(int i = 0; i < check.length(); i++) { - if(!next(i).is(check.charAt(i))) return false; - } - - if(consume) consume(check.length()); // Consume string - return true; - } - - /** - * Fetch the next character. - * - * @return Next character - */ - private Char fetch() { - try { - int c = input.read(); - if(c == -1) return null; - if(c == '\n') { - line++; - index = 0; - } - index++; - return new Char((char) c, line, index); - } catch(IOException e) { - e.printStackTrace(); - return null; - } - } - - public int getLine() { - return line; - } - - public int getIndex() { - return index; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java deleted file mode 100644 index f57663c44..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Position.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer; - -public class Position { - private final int line; - private final int index; - - public Position(int line, int index) { - this.line = line; - this.index = index; - } - - @Override - public String toString() { - return (line + 1) + ":" + index; - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java deleted file mode 100644 index 578dc65b4..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java +++ /dev/null @@ -1,230 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer; - -public class Token { - private final String content; - private final Type type; - private final Position start; - - public Token(String content, Type type, Position start) { - this.content = content; - this.type = type; - this.start = start; - } - - @Override - public String toString() { - return type + ": '" + content + "'"; - } - - public Type getType() { - return type; - } - - public String getContent() { - return content; - } - - public Position getPosition() { - return start; - } - - public boolean isConstant() { - return this.type.equals(Type.NUMBER) || this.type.equals(Type.STRING) || this.type.equals(Type.BOOLEAN); - } - - public boolean isBinaryOperator() { - return type.equals(Type.ADDITION_OPERATOR) - || type.equals(Type.SUBTRACTION_OPERATOR) - || type.equals(Type.MULTIPLICATION_OPERATOR) - || type.equals(Type.DIVISION_OPERATOR) - || type.equals(Type.EQUALS_OPERATOR) - || type.equals(Type.NOT_EQUALS_OPERATOR) - || type.equals(Type.LESS_THAN_OPERATOR) - || type.equals(Type.GREATER_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.BOOLEAN_OR) - || type.equals(Type.BOOLEAN_AND) - || type.equals(Type.MODULO_OPERATOR); - } - - public boolean isStrictNumericOperator() { - return type.equals(Type.SUBTRACTION_OPERATOR) - || type.equals(Type.MULTIPLICATION_OPERATOR) - || type.equals(Type.DIVISION_OPERATOR) - || type.equals(Type.GREATER_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.MODULO_OPERATOR); - } - - public boolean isStrictBooleanOperator() { - return type.equals(Type.BOOLEAN_AND) - || type.equals(Type.BOOLEAN_OR); - } - - public boolean isVariableDeclaration() { - return type.equals(Type.STRING_VARIABLE) - || type.equals(Type.BOOLEAN_VARIABLE) - || type.equals(Type.NUMBER_VARIABLE); - } - - public boolean isLoopLike() { - return type.equals(Type.IF_STATEMENT) - || type.equals(Type.WHILE_LOOP) - || type.equals(Type.FOR_LOOP); - } - - public boolean isIdentifier() { - return type.equals(Type.IDENTIFIER); - } - - public enum Type { - /** - * Function identifier or language keyword - */ - IDENTIFIER, - - /** - * Numeric literal - */ - NUMBER, - /** - * String literal - */ - STRING, - /** - * Boolean literal - */ - BOOLEAN, - /** - * Beginning of group - */ - GROUP_BEGIN, - /** - * Ending of group - */ - GROUP_END, - /** - * End of statement - */ - STATEMENT_END, - /** - * Argument separator - */ - SEPARATOR, - /** - * Beginning of code block - */ - BLOCK_BEGIN, - /** - * End of code block - */ - BLOCK_END, - /** - * assignment operator - */ - ASSIGNMENT, - /** - * Boolean equals operator - */ - EQUALS_OPERATOR, - /** - * Boolean not equals operator - */ - NOT_EQUALS_OPERATOR, - /** - * Boolean greater than operator - */ - GREATER_THAN_OPERATOR, - /** - * Boolean less than operator - */ - LESS_THAN_OPERATOR, - /** - * Boolean greater than or equal to operator - */ - GREATER_THAN_OR_EQUALS_OPERATOR, - /** - * Boolean less than or equal to operator - */ - LESS_THAN_OR_EQUALS_OPERATOR, - /** - * Addition/concatenation operator - */ - ADDITION_OPERATOR, - /** - * Subtraction operator - */ - SUBTRACTION_OPERATOR, - /** - * Multiplication operator - */ - MULTIPLICATION_OPERATOR, - /** - * Division operator - */ - DIVISION_OPERATOR, - /** - * Modulo operator. - */ - MODULO_OPERATOR, - /** - * Boolean not operator - */ - BOOLEAN_NOT, - /** - * Boolean or - */ - BOOLEAN_OR, - /** - * Boolean and - */ - BOOLEAN_AND, - /** - * Numeric variable declaration - */ - NUMBER_VARIABLE, - /** - * String variable declaration - */ - STRING_VARIABLE, - /** - * Boolean variable declaration - */ - BOOLEAN_VARIABLE, - /** - * If statement declaration - */ - IF_STATEMENT, - /** - * While loop declaration - */ - WHILE_LOOP, - /** - * Return statement - */ - RETURN, - /** - * Continue statement - */ - CONTINUE, - /** - * Break statement - */ - BREAK, - /** - * Fail statement. Like return keyword, but specifies that generation has failed. - */ - FAIL, - /** - * For loop initializer token - */ - FOR_LOOP, - /** - * Else keyword - */ - ELSE - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java deleted file mode 100644 index 5c82f1b81..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java +++ /dev/null @@ -1,240 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer; - -import com.google.common.collect.Sets; - -import java.io.StringReader; -import java.util.Set; -import java.util.Stack; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.EOFException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.FormatException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.TokenizerException; - - -public class Tokenizer { - public static final Set syntaxSignificant = Sets.newHashSet(';', '(', ')', '"', ',', '\\', '=', '{', '}', '+', '-', '*', '/', - '>', '<', '!'); // Reserved chars - private final Lookahead reader; - private final Stack brackets = new Stack<>(); - private Token current; - private Token last; - - public Tokenizer(String data) { - reader = new Lookahead(new StringReader(data + '\0')); - current = fetchCheck(); - } - - /** - * Get the first token. - * - * @return First token - * - * @throws ParseException If token does not exist - */ - public Token get() { - if(!hasNext()) throw new ParseException("Unexpected end of input", last.getPosition()); - return current; - } - - /** - * Consume (get and remove) the first token. - * - * @return First token - * - * @throws ParseException If token does not exist - */ - public Token consume() { - if(!hasNext()) throw new ParseException("Unexpected end of input", last.getPosition()); - Token temp = current; - current = fetchCheck(); - return temp; - } - - private Token fetchCheck() { - Token fetch = fetch(); - if(fetch != null) { - last = fetch; - if(fetch.getType() == Token.Type.BLOCK_BEGIN) brackets.push(fetch); // Opening bracket - else if(fetch.getType() == Token.Type.BLOCK_END) { - if(!brackets.isEmpty()) brackets.pop(); - else throw new ParseException("Dangling opening brace", new Position(0, 0)); - } - } else if(!brackets.isEmpty()) { - throw new ParseException("Dangling closing brace", brackets.peek().getPosition()); - } - return fetch; - } - - private Token fetch() throws TokenizerException { - while(!reader.current().isEOF() && reader.current().isWhitespace()) reader.consume(); - - while(reader.matches("//", true)) skipLine(); // Skip line if comment - - if(reader.matches("/*", true)) skipTo("*/"); // Skip multi line comment - - if(reader.current().isEOF()) return null; // EOF - - if(reader.matches("==", true)) - return new Token("==", Token.Type.EQUALS_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.matches("!=", true)) - return new Token("!=", Token.Type.NOT_EQUALS_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.matches(">=", true)) - return new Token(">=", Token.Type.GREATER_THAN_OR_EQUALS_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.matches("<=", true)) - return new Token("<=", Token.Type.LESS_THAN_OR_EQUALS_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.matches(">", true)) - return new Token(">", Token.Type.GREATER_THAN_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.matches("<", true)) - return new Token("<", Token.Type.LESS_THAN_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - - - if(reader.matches("||", true)) - return new Token("||", Token.Type.BOOLEAN_OR, new Position(reader.getLine(), reader.getIndex())); - if(reader.matches("&&", true)) - return new Token("&&", Token.Type.BOOLEAN_AND, new Position(reader.getLine(), reader.getIndex())); - - - if(isNumberStart()) { - StringBuilder num = new StringBuilder(); - while(!reader.current().isEOF() && isNumberLike()) { - num.append(reader.consume()); - } - return new Token(num.toString(), Token.Type.NUMBER, new Position(reader.getLine(), reader.getIndex())); - } - - if(reader.current().is('"')) { - reader.consume(); // Consume first quote - StringBuilder string = new StringBuilder(); - boolean ignoreNext = false; - while((!reader.current().is('"')) || ignoreNext) { - if(reader.current().is('\\') && !ignoreNext) { - ignoreNext = true; - reader.consume(); - continue; - } else ignoreNext = false; - if(reader.current().isEOF()) - throw new FormatException("No end of string literal found. ", new Position(reader.getLine(), reader.getIndex())); - string.append(reader.consume()); - } - reader.consume(); // Consume last quote - - return new Token(string.toString(), Token.Type.STRING, new Position(reader.getLine(), reader.getIndex())); - } - - if(reader.current().is('(')) - return new Token(reader.consume().toString(), Token.Type.GROUP_BEGIN, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is(')')) - return new Token(reader.consume().toString(), Token.Type.GROUP_END, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is(';')) - return new Token(reader.consume().toString(), Token.Type.STATEMENT_END, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is(',')) - return new Token(reader.consume().toString(), Token.Type.SEPARATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('{')) - return new Token(reader.consume().toString(), Token.Type.BLOCK_BEGIN, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('}')) - return new Token(reader.consume().toString(), Token.Type.BLOCK_END, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('=')) - return new Token(reader.consume().toString(), Token.Type.ASSIGNMENT, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('+')) - return new Token(reader.consume().toString(), Token.Type.ADDITION_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('-')) - return new Token(reader.consume().toString(), Token.Type.SUBTRACTION_OPERATOR, - new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('*')) - return new Token(reader.consume().toString(), Token.Type.MULTIPLICATION_OPERATOR, - new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('/')) - return new Token(reader.consume().toString(), Token.Type.DIVISION_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('%')) - return new Token(reader.consume().toString(), Token.Type.MODULO_OPERATOR, new Position(reader.getLine(), reader.getIndex())); - if(reader.current().is('!')) - return new Token(reader.consume().toString(), Token.Type.BOOLEAN_NOT, new Position(reader.getLine(), reader.getIndex())); - - StringBuilder token = new StringBuilder(); - while(!reader.current().isEOF() && !isSyntaxSignificant(reader.current().getCharacter())) { - Char c = reader.consume(); - if(c.isWhitespace()) break; - token.append(c); - } - - String tokenString = token.toString(); - - if(tokenString.equals("true")) - return new Token(tokenString, Token.Type.BOOLEAN, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("false")) - return new Token(tokenString, Token.Type.BOOLEAN, new Position(reader.getLine(), reader.getIndex())); - - if(tokenString.equals("num")) - return new Token(tokenString, Token.Type.NUMBER_VARIABLE, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("str")) - return new Token(tokenString, Token.Type.STRING_VARIABLE, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("bool")) - return new Token(tokenString, Token.Type.BOOLEAN_VARIABLE, new Position(reader.getLine(), reader.getIndex())); - - if(tokenString.equals("if")) - return new Token(tokenString, Token.Type.IF_STATEMENT, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("else")) - return new Token(tokenString, Token.Type.ELSE, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("while")) - return new Token(tokenString, Token.Type.WHILE_LOOP, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("for")) - return new Token(tokenString, Token.Type.FOR_LOOP, new Position(reader.getLine(), reader.getIndex())); - - if(tokenString.equals("return")) - return new Token(tokenString, Token.Type.RETURN, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("continue")) - return new Token(tokenString, Token.Type.CONTINUE, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("break")) - return new Token(tokenString, Token.Type.BREAK, new Position(reader.getLine(), reader.getIndex())); - if(tokenString.equals("fail")) - return new Token(tokenString, Token.Type.FAIL, new Position(reader.getLine(), reader.getIndex())); - - return new Token(tokenString, Token.Type.IDENTIFIER, new Position(reader.getLine(), reader.getIndex())); - } - - private void skipLine() { - while(!reader.current().isEOF() && !reader.current().isNewLine()) reader.consume(); - consumeWhitespace(); - } - - private void consumeWhitespace() { - while(!reader.current().isEOF() && reader.current().isWhitespace()) reader.consume(); // Consume whitespace. - } - - private void skipTo(String s) throws EOFException { - Position begin = new Position(reader.getLine(), reader.getIndex()); - while(!reader.current().isEOF()) { - if(reader.matches(s, true)) { - consumeWhitespace(); - return; - } - reader.consume(); - } - throw new EOFException("No end of expression found.", begin); - } - - /** - * Whether this {@code Tokenizer} contains additional tokens. - * - * @return {@code true} if more tokens are present, otherwise {@code false} - */ - public boolean hasNext() { - return !(current == null); - } - - private boolean isNumberLike() { - return reader.current().isDigit() - || reader.current().is('_', '.', 'E'); - } - - private boolean isNumberStart() { - return reader.current().isDigit() - || reader.current().is('.') && reader.next(1).isDigit(); - } - - public boolean isSyntaxSignificant(char c) { - return syntaxSignificant.contains(c); - } - -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java deleted file mode 100644 index 8de70c536..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; - -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class EOFException extends TokenizerException { - - private static final long serialVersionUID = 3980047409902809440L; - - public EOFException(String message, Position position) { - super(message, position); - } - - public EOFException(String message, Position position, Throwable cause) { - super(message, position, cause); - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java deleted file mode 100644 index 5ddef18b9..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; - -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class FormatException extends TokenizerException { - - private static final long serialVersionUID = -791308012940744455L; - - public FormatException(String message, Position position) { - super(message, position); - } - - public FormatException(String message, Position position, Throwable cause) { - super(message, position, cause); - } -} diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java deleted file mode 100644 index 6798b10ab..000000000 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; - -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public abstract class TokenizerException extends ParseException { - - private static final long serialVersionUID = 2792384010083575420L; - - public TokenizerException(String message, Position position) { - super(message, position); - } - - public TokenizerException(String message, Position position, Throwable cause) { - super(message, position, cause); - } -} diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java deleted file mode 100644 index 5b033f8e8..000000000 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package structure; - -import org.junit.jupiter.api.Test; - -import java.io.StringReader; - -import com.dfsek.terra.addons.terrascript.tokenizer.Lookahead; - - -public class LookaheadTest { - @Test - public void lookahead() { - Lookahead lookahead = new Lookahead(new StringReader("Test string...")); - - for(int i = 0; lookahead.next(i) != null; i++) { - System.out.print(lookahead.next(i).getCharacter()); - } - while(lookahead.next(0) != null) { - System.out.print(lookahead.consume().getCharacter()); - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java deleted file mode 100644 index d9147d684..000000000 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package structure; - - -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.Test; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.dfsek.terra.addons.terrascript.parser.Parser; -import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.Block; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; -import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.parser.lang.variables.Variable; -import com.dfsek.terra.addons.terrascript.tokenizer.Position; - - -public class ParserTest { - @Test - public void parse() throws IOException, ParseException { - Parser parser = new Parser(IOUtils.toString(getClass().getResourceAsStream("/test.tesf"), Charset.defaultCharset())); - - parser.registerFunction("test", new FunctionBuilder() { - @Override - public Test1 build(List> argumentList, Position position) { - return new Test1(argumentList.get(0), argumentList.get(1), position); - } - - @Override - public int argNumber() { - return 2; - } - - @Override - public Returnable.ReturnType getArgument(int position) { - return switch(position) { - case 0 -> Returnable.ReturnType.STRING; - case 1 -> Returnable.ReturnType.NUMBER; - default -> null; - }; - } - - }); - - long l = System.nanoTime(); - Block block = parser.parse(); - long t = System.nanoTime() - l; - System.out.println("Took " + (double) t / 1000000); - - block.apply(null, new HashMap<>()); - - block.apply(null, new HashMap<>()); - } - - private static class Test1 implements Function { - private final Returnable a; - private final Returnable b; - private final Position position; - - public Test1(Returnable a, Returnable b, Position position) { - this.a = a; - this.b = b; - this.position = position; - } - - @Override - public Void apply(ImplementationArguments implementationArguments, Map> variableMap) { - System.out.println("string: " + a.apply(implementationArguments, variableMap) + ", double: " + - b.apply(implementationArguments, variableMap)); - return null; - } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ReturnType returnType() { - return ReturnType.VOID; - } - } -} diff --git a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf b/common/addons/structure-terrascript-loader/src/test/resources/test.tesf deleted file mode 100644 index 8bcce7177..000000000 --- a/common/addons/structure-terrascript-loader/src/test/resources/test.tesf +++ /dev/null @@ -1,97 +0,0 @@ -bool thing1 = 2 > (2+2) || false; - -if(2 > 2 || 3 + 4 <= 2 && 4 + 5 > 2 / 3) { - test("ok", 2); -} - -test("minecraft:green_w" + "ool", (2 * (3+1) * (2 * (1+1)))); -// - -num testVar = 3.4; -bool boolean = true; -str stringVar = "hello!"; - -num precedence = 3 + 2 * 2 + 3; -test("precedence: " + precedence, 2); -num precedence2 = 3 * 2 + 2 * 3; -test("precedence 2: " + precedence2, 2); - -bool iftest = false; - -bool truetest = false; - -num iterator = 0; -num thing = 4 - 2-2+2-2+2; -test("4 - 2 = " + thing, 2); - -thing = -2; -test("-2 = " + thing, 2); -thing = -thing; -test("--2 = " + thing, 2); - - - -for(num i = 0; i < 5; i = i + 1) { - test("i = " + i, iterator); - if(i > 1 + 1) { - test("more than 2", iterator); - continue; - } -} - -for(num i = 0; i < 5; i = i + 1) { - test("i = " + i, iterator); -} - -for(num j = 0; j < 5; j = j + 1) test("single statement j = " + j, iterator); - -if(4 + 2 == 2 + 4) { - test("new thing " + 2, iterator); -} - -while(iterator < 5) { - test("always, even after " + 2, iterator); - iterator = iterator + 1; - if(iterator > 2) { - continue; - } - test("not after " + 2, iterator); -} - -if(true) test("single statement" + 2, iterator); -else if(true) test("another single statement" + 2, iterator); - -if(true) { - test("true!" + 2, iterator); -} else { - test("false!" + 2, iterator); - } - -if(false) { - test("true!" + 2, iterator); -} else { - test("false!" + 2, iterator); -} - -if(false) { - test("true again!" + 2, iterator); -} else if(true == true) { - test("false again!" + 2, iterator); -} else { - test("not logged!" + 2, iterator); -} - - - -// comment - -/* -fsdfsd -*/ - -test("fdsgdf" + 2, 1 + testVar); - -if(true && !(boolean && false) && true) { - num scopedVar = 2; - test("if statement" + 2 + stringVar, 1 + testVar + scopedVar); -} \ No newline at end of file From 48d9b443443c82723d9fa81090516a50feaa94b9 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sun, 17 Oct 2021 15:42:00 -0700 Subject: [PATCH 57/97] add terrascript addon as submodule --- .gitmodules | 3 +++ common/addons/structure-terrascript-loader | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/structure-terrascript-loader diff --git a/.gitmodules b/.gitmodules index 2605324db..9f044ee01 100644 --- a/.gitmodules +++ b/.gitmodules @@ -55,3 +55,6 @@ [submodule "common/addons/structure-sponge-loader"] path = common/addons/structure-sponge-loader url = https://github.com/PolyhedralDev/Terra-structure-sponge-loader +[submodule "common/addons/structure-terrascript-loader"] + path = common/addons/structure-terrascript-loader + url = https://github.com/PolyhedralDev/Terra-structure-terrascript-loader diff --git a/common/addons/structure-terrascript-loader b/common/addons/structure-terrascript-loader new file mode 160000 index 000000000..2bf906cce --- /dev/null +++ b/common/addons/structure-terrascript-loader @@ -0,0 +1 @@ +Subproject commit 2bf906cce5f72de80f4471b1f3a8c17115424fd3 From 614431af2f85a34ddea1b58ef3ae08febdca8e3d Mon Sep 17 00:00:00 2001 From: NeumimTo Date: Mon, 18 Oct 2021 11:00:34 -0700 Subject: [PATCH 58/97] fix win build (#272) --- settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 3b73c0752..91b4388dc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,7 +7,7 @@ include("common:loader:addon") fun includeImmediateChildren(dir: File, type: String) { dir.walkTopDown().maxDepth(1).forEach { if (!it.isDirectory || !File(it, "build.gradle.kts").exists()) return@forEach - val addonDir = it.relativeTo(file(".")).path.replace("/", ":") + val addonDir = it.relativeTo(file(".")).path.replace("/", ":").replace("\\", ":") println("Including $type directory \"$addonDir\" as subproject.") include(addonDir) } From 9715171abace17aec500d7201ab084d734c9758a Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 9 Nov 2021 23:49:49 -0700 Subject: [PATCH 59/97] move registry api to new module --- common/addons/config-noise-function | 2 +- common/api/core/build.gradle.kts | 1 + common/api/registry/build.gradle.kts | 6 ++++++ .../java/com/dfsek/terra/api/registry/CheckedRegistry.java | 0 .../java/com/dfsek/terra/api/registry/OpenRegistry.java | 0 .../main/java/com/dfsek/terra/api/registry/Registry.java | 0 .../api/registry/exception/DuplicateEntryException.java | 0 .../com/dfsek/terra/api/registry/meta/RegistryFactory.java | 0 .../com/dfsek/terra/api/registry/meta/RegistryHolder.java | 0 .../java/com/dfsek/terra/registry/OpenRegistryImpl.java | 2 -- .../src/main/java/com/dfsek/terra/StandalonePlugin.java | 4 ++-- 11 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 common/api/registry/build.gradle.kts rename common/api/{core => registry}/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java (100%) rename common/api/{core => registry}/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java (100%) rename common/api/{core => registry}/src/main/java/com/dfsek/terra/api/registry/Registry.java (100%) rename common/api/{core => registry}/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java (100%) rename common/api/{core => registry}/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java (100%) rename common/api/{core => registry}/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java (100%) diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function index dadffdfa4..5032f2b9e 160000 --- a/common/addons/config-noise-function +++ b/common/addons/config-noise-function @@ -1 +1 @@ -Subproject commit dadffdfa46d743bcd1a45cd2ff3b4b9c2f401d5e +Subproject commit 5032f2b9eac7a7dbf79d4a50cf90306efd0fee27 diff --git a/common/api/core/build.gradle.kts b/common/api/core/build.gradle.kts index 974fd5097..dd0447e2c 100644 --- a/common/api/core/build.gradle.kts +++ b/common/api/core/build.gradle.kts @@ -1,6 +1,7 @@ dependencies { "shadedApi"(project(":common:api:util")) "shadedApi"(project(":common:api:noise")) + "shadedApi"(project(":common:api:registry")) "shadedApi"("com.dfsek:Paralithic:0.5.0") diff --git a/common/api/registry/build.gradle.kts b/common/api/registry/build.gradle.kts new file mode 100644 index 000000000..5e4da02be --- /dev/null +++ b/common/api/registry/build.gradle.kts @@ -0,0 +1,6 @@ +dependencies { + "shadedApi"(project(":common:api:util")) + + "shadedApi"("com.dfsek.tectonic:common:2.1.2") +} + diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java similarity index 100% rename from common/api/core/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java rename to common/api/registry/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java similarity index 100% rename from common/api/core/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java rename to common/api/registry/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/registry/Registry.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/Registry.java similarity index 100% rename from common/api/core/src/main/java/com/dfsek/terra/api/registry/Registry.java rename to common/api/registry/src/main/java/com/dfsek/terra/api/registry/Registry.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java similarity index 100% rename from common/api/core/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java rename to common/api/registry/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java similarity index 100% rename from common/api/core/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java rename to common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java similarity index 100% rename from common/api/core/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java rename to common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 3cbbdf32a..5bf886b31 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -1,7 +1,6 @@ package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.loading.ConfigLoader; import java.lang.reflect.AnnotatedType; @@ -13,7 +12,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.regex.Pattern; -import java.util.stream.Collector; import java.util.stream.Collectors; import com.dfsek.terra.api.registry.OpenRegistry; diff --git a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java index 6ec8ae9e0..c361eef70 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java +++ b/platforms/region/src/main/java/com/dfsek/terra/StandalonePlugin.java @@ -12,8 +12,8 @@ import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; -import com.dfsek.terra.api.registry.CheckedRegistry; -import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.registry.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.registry.Registry; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; From eb50b29e95e111dd45c2a21aee0507d7a11c348a Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 9 Nov 2021 23:54:46 -0700 Subject: [PATCH 60/97] clean up tests --- .../src/test/java/biome/DistributionTest.java | 0 .../src/test/java/biome/ImageTest.java | 0 .../test/java/noise/ColorConfigTemplate.java | 25 ------------------- .../test/java/noise/NoiseConfigTemplate.java | 17 ------------- .../src/test/java/profiler/ProfilerTest.java | 8 +++--- 5 files changed, 5 insertions(+), 45 deletions(-) delete mode 100644 common/implementation/src/test/java/biome/DistributionTest.java delete mode 100644 common/implementation/src/test/java/biome/ImageTest.java delete mode 100644 common/implementation/src/test/java/noise/ColorConfigTemplate.java delete mode 100644 common/implementation/src/test/java/noise/NoiseConfigTemplate.java diff --git a/common/implementation/src/test/java/biome/DistributionTest.java b/common/implementation/src/test/java/biome/DistributionTest.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/common/implementation/src/test/java/biome/ImageTest.java b/common/implementation/src/test/java/biome/ImageTest.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/common/implementation/src/test/java/noise/ColorConfigTemplate.java b/common/implementation/src/test/java/noise/ColorConfigTemplate.java deleted file mode 100644 index 8c3514961..000000000 --- a/common/implementation/src/test/java/noise/ColorConfigTemplate.java +++ /dev/null @@ -1,25 +0,0 @@ -package noise; - -import com.dfsek.tectonic.annotations.Default; -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; - -import com.dfsek.terra.api.config.meta.Meta; -import com.dfsek.terra.api.util.collection.ProbabilityCollection; - - -public class ColorConfigTemplate implements ConfigTemplate { - @Value("enable") - @Default - private @Meta boolean enable = false; - @Value("colors") - private @Meta ProbabilityCollection<@Meta Integer> colors; - - public boolean enable() { - return enable; - } - - public ProbabilityCollection getColors() { - return colors; - } -} diff --git a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java b/common/implementation/src/test/java/noise/NoiseConfigTemplate.java deleted file mode 100644 index 17659c473..000000000 --- a/common/implementation/src/test/java/noise/NoiseConfigTemplate.java +++ /dev/null @@ -1,17 +0,0 @@ -package noise; - -import com.dfsek.tectonic.annotations.Value; -import com.dfsek.tectonic.config.ConfigTemplate; - -import com.dfsek.terra.api.noise.NoiseSampler; - - -@SuppressWarnings("unused") -public class NoiseConfigTemplate implements ConfigTemplate { - @Value(".") - private NoiseSampler builder; - - public NoiseSampler getBuilder() { - return builder; - } -} diff --git a/common/implementation/src/test/java/profiler/ProfilerTest.java b/common/implementation/src/test/java/profiler/ProfilerTest.java index 74836723b..a3665cc7b 100644 --- a/common/implementation/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/src/test/java/profiler/ProfilerTest.java @@ -3,14 +3,16 @@ package profiler; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; +import org.junit.jupiter.api.Test; + public class ProfilerTest { private static final Profiler PROFILER = new ProfilerImpl(); - //@Test - public static void main(String... a) throws InterruptedException { + @Test + public void testProfiler() throws InterruptedException { //PROFILER.start(); - for(int i = 0; i < 1000; i++) { + for(int i = 0; i < 100; i++) { doThing(); } From 4fa8e7f17a404cbb7bd129dd251213ce63ae0a2d Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 9 Nov 2021 23:59:54 -0700 Subject: [PATCH 61/97] create RegistryTest --- .../src/test/java/registry/RegistryTest.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 common/implementation/src/test/java/registry/RegistryTest.java diff --git a/common/implementation/src/test/java/registry/RegistryTest.java b/common/implementation/src/test/java/registry/RegistryTest.java new file mode 100644 index 000000000..dbebb3c98 --- /dev/null +++ b/common/implementation/src/test/java/registry/RegistryTest.java @@ -0,0 +1,54 @@ +package registry; + +import com.dfsek.terra.api.registry.CheckedRegistry; +import com.dfsek.terra.api.registry.OpenRegistry; + +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; +import com.dfsek.terra.registry.CheckedRegistryImpl; +import com.dfsek.terra.registry.OpenRegistryImpl; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + + +public class RegistryTest { + @Test + public void openRegistry() { + OpenRegistry test = new OpenRegistryImpl<>(); + + test.register("test", "bazinga"); + + assertEquals(test.get("test"), "bazinga"); + } + + @Test + public void openRegistryChecked() { + OpenRegistry test = new OpenRegistryImpl<>(); + + test.registerChecked("test", "bazinga"); + + try { + test.registerChecked("test", "bazinga2"); + fail("Shouldn't be able to re-register with #registerChecked!"); + } catch(DuplicateEntryException ignore) { + + } + } + + @Test + public void checkedRegistry() { + CheckedRegistry test = new CheckedRegistryImpl<>(new OpenRegistryImpl<>()); + + test.register("test", "bazinga"); + + assertEquals(test.get("test"), "bazinga"); + + try { + test.register("test", "bazinga2"); + fail("Shouldn't be able to re-register in CheckedRegistry!"); + } catch(DuplicateEntryException ignore) { + + } + } +} From 72bf8da59d62cfd8640ad78065aeedc85da924c3 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 10 Nov 2021 12:18:49 -0700 Subject: [PATCH 62/97] add api addon loader module --- .gitmodules | 3 +++ common/addons/api-addon-loader | 1 + 2 files changed, 4 insertions(+) create mode 160000 common/addons/api-addon-loader diff --git a/.gitmodules b/.gitmodules index 9f044ee01..9b9bcda58 100644 --- a/.gitmodules +++ b/.gitmodules @@ -58,3 +58,6 @@ [submodule "common/addons/structure-terrascript-loader"] path = common/addons/structure-terrascript-loader url = https://github.com/PolyhedralDev/Terra-structure-terrascript-loader +[submodule "common/addons/api-addon-loader"] + path = common/addons/api-addon-loader + url = https://github.com/PolyhedralDev/Terra-api-addon-loader diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader new file mode 160000 index 000000000..d85f95fef --- /dev/null +++ b/common/addons/api-addon-loader @@ -0,0 +1 @@ +Subproject commit d85f95fefd0d3a32d7dd94d6a2f8127062bfff5c From ec17781f4ac9da46612c403e49aa27ff39d77e24 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 12 Nov 2021 17:11:39 -0700 Subject: [PATCH 63/97] create api-addon-loader module --- common/addons/api-addon-loader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader index d85f95fef..cf06b7966 160000 --- a/common/addons/api-addon-loader +++ b/common/addons/api-addon-loader @@ -1 +1 @@ -Subproject commit d85f95fefd0d3a32d7dd94d6a2f8127062bfff5c +Subproject commit cf06b7966265d47a5b8edd43dff17070f802cb45 From 9d2b354a33f35e92b62e3fb7d006905e6349f363 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 15 Nov 2021 18:23:23 -0700 Subject: [PATCH 64/97] work on addon bootstrapping --- common/addons/api-addon-loader | 2 +- common/addons/manifest-addon-loader | 2 +- common/api/addons/build.gradle.kts | 3 + .../terra/api/addon/AddonEntryPoint.java | 7 +++ .../api/addon/bootstrap/BootstrapAddon.java | 16 +++++ common/api/config/build.gradle.kts | 10 ---- .../dfsek/terra/addon/AddonClassLoader.java | 4 -- .../terra/addon/BootstrapAddonLoader.java | 58 +++++++++++++++++++ .../addon/exception/AddonLoadException.java | 2 +- 9 files changed, 87 insertions(+), 17 deletions(-) create mode 100644 common/api/addons/build.gradle.kts create mode 100644 common/api/addons/src/main/java/com/dfsek/terra/api/addon/AddonEntryPoint.java create mode 100644 common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapAddon.java delete mode 100644 common/api/config/build.gradle.kts create mode 100644 common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader index cf06b7966..960819639 160000 --- a/common/addons/api-addon-loader +++ b/common/addons/api-addon-loader @@ -1 +1 @@ -Subproject commit cf06b7966265d47a5b8edd43dff17070f802cb45 +Subproject commit 960819639fcda82b4911608b83f1cdc277f63234 diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 8e161a721..f388c7b48 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 8e161a721cbfe3cc27ffc8301129b546e7334240 +Subproject commit f388c7b4864fa0f0b3e3c550081f234f9ce2df54 diff --git a/common/api/addons/build.gradle.kts b/common/api/addons/build.gradle.kts new file mode 100644 index 000000000..4936c5616 --- /dev/null +++ b/common/api/addons/build.gradle.kts @@ -0,0 +1,3 @@ +dependencies { + "shadedApi"(project(":common:api:util")) +} diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/AddonEntryPoint.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/AddonEntryPoint.java new file mode 100644 index 000000000..cac5b0542 --- /dev/null +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/AddonEntryPoint.java @@ -0,0 +1,7 @@ +package com.dfsek.terra.api.addon; + +import com.dfsek.terra.api.util.StringIdentifiable; + + +public interface AddonEntryPoint extends StringIdentifiable { +} diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapAddon.java new file mode 100644 index 000000000..ed207682e --- /dev/null +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapAddon.java @@ -0,0 +1,16 @@ +package com.dfsek.terra.api.addon.bootstrap; + +import com.dfsek.terra.api.addon.AddonEntryPoint; + +import java.nio.file.Path; + + +public interface BootstrapAddon extends AddonEntryPoint { + /** + * Load all the relevant addons in the specified path. + * @param addonsFolder Path containing addons. + * @param parent + * @return Loaded addons + */ + Iterable loadAddons(Path addonsFolder, ClassLoader parent); +} diff --git a/common/api/config/build.gradle.kts b/common/api/config/build.gradle.kts deleted file mode 100644 index 6466b8025..000000000 --- a/common/api/config/build.gradle.kts +++ /dev/null @@ -1,10 +0,0 @@ -dependencies { - "shadedApi"(project(":common:api:core")) - - "shadedApi"("com.dfsek:Paralithic:0.5.0") - - "shadedApi"("com.dfsek.tectonic:common:2.1.2") - - "shadedApi"("net.jafama:jafama:2.3.2") -} - diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java index 859dfe498..ff072ad12 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java @@ -23,10 +23,6 @@ public class AddonClassLoader extends URLClassLoader { super(urls, parent); } - public AddonClassLoader(URL[] urls) { - super(urls); - } - @SuppressWarnings("unchecked") public static Set> fetchAddonClasses(File file, ClassLoader parent) throws IOException { JarFile jarFile = new JarFile(file); diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java new file mode 100644 index 000000000..e9f7115a7 --- /dev/null +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -0,0 +1,58 @@ +package com.dfsek.terra.addon; + +import com.dfsek.terra.addon.exception.AddonLoadException; +import com.dfsek.terra.api.addon.AddonEntryPoint; +import com.dfsek.terra.api.addon.bootstrap.BootstrapAddon; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.lang.reflect.InvocationTargetException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.jar.JarFile; +import java.util.stream.Collectors; + + +public class BootstrapAddonLoader implements BootstrapAddon { + @Override + public Iterable loadAddons(Path addonsFolder, ClassLoader parent) { + Path bootstrapAddons = addonsFolder.resolve("bootstrap"); + + try { + return Files.walk(bootstrapAddons, 1) + .filter(path -> path.toFile().isFile() && path.getFileName().endsWith(".jar")) + .map(path -> { + try { + JarFile jar = new JarFile(path.toFile()); + String entry = jar.getManifest().getMainAttributes().getValue("Bootstrap-Addon-Entry-Point"); + AddonClassLoader loader = new AddonClassLoader(new URL[] {path.toUri().toURL()}, parent); + + try { + Object in = loader.loadClass(entry).getConstructor().newInstance(); + if(!(in instanceof AddonEntryPoint)) { + throw new AddonLoadException(in.getClass() + " does not extend " + AddonEntryPoint.class); + } + return (AddonEntryPoint) in; + } catch(InvocationTargetException e) { + throw new AddonLoadException("Exception occurred while instantiating addon: ", e); + } catch(NoSuchMethodException | IllegalAccessException | InstantiationException e) { + throw new AddonLoadException("No valid default constructor found in entry point " + entry); + } catch(ClassNotFoundException e) { + throw new AddonLoadException("Entry point " + entry + " not found in JAR."); + } + + } catch(IOException e) { + throw new UncheckedIOException(e); + } + }).collect(Collectors.toList()); + } catch(IOException e) { + throw new UncheckedIOException(e); + } + } + + @Override + public String getID() { + return "BOOTSTRAP"; + } +} diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java index cd347ea0b..45feaa36c 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java @@ -1,6 +1,6 @@ package com.dfsek.terra.addon.exception; -public class AddonLoadException extends Exception { +public class AddonLoadException extends RuntimeException { private static final long serialVersionUID = -4949084729296580176L; public AddonLoadException(String message) { From 491b6aa96ddc19797a1eadb460da8261279f8768 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 16 Nov 2021 08:56:41 -0700 Subject: [PATCH 65/97] strata version loading --- common/addons/manifest-addon-loader | 2 +- .../addon/{AddonEntryPoint.java => BaseAddon.java} | 2 +- ...BootstrapAddon.java => BootstrapBaseAddon.java} | 6 +++--- .../dfsek/terra/addon/BootstrapAddonLoader.java | 14 +++++++------- 4 files changed, 12 insertions(+), 12 deletions(-) rename common/api/addons/src/main/java/com/dfsek/terra/api/addon/{AddonEntryPoint.java => BaseAddon.java} (59%) rename common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/{BootstrapAddon.java => BootstrapBaseAddon.java} (57%) diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index f388c7b48..b34d3ed3a 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit f388c7b4864fa0f0b3e3c550081f234f9ce2df54 +Subproject commit b34d3ed3a0e30105ec4ebfa4cffc8000614cfc5f diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/AddonEntryPoint.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java similarity index 59% rename from common/api/addons/src/main/java/com/dfsek/terra/api/addon/AddonEntryPoint.java rename to common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java index cac5b0542..5ba13d4cf 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/AddonEntryPoint.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java @@ -3,5 +3,5 @@ package com.dfsek.terra.api.addon; import com.dfsek.terra.api.util.StringIdentifiable; -public interface AddonEntryPoint extends StringIdentifiable { +public interface BaseAddon extends StringIdentifiable { } diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java similarity index 57% rename from common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapAddon.java rename to common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java index ed207682e..6a45c2665 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java @@ -1,16 +1,16 @@ package com.dfsek.terra.api.addon.bootstrap; -import com.dfsek.terra.api.addon.AddonEntryPoint; +import com.dfsek.terra.api.addon.BaseAddon; import java.nio.file.Path; -public interface BootstrapAddon extends AddonEntryPoint { +public interface BootstrapBaseAddon extends BaseAddon { /** * Load all the relevant addons in the specified path. * @param addonsFolder Path containing addons. * @param parent * @return Loaded addons */ - Iterable loadAddons(Path addonsFolder, ClassLoader parent); + Iterable loadAddons(Path addonsFolder, ClassLoader parent); } diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index e9f7115a7..bae341577 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addon; import com.dfsek.terra.addon.exception.AddonLoadException; -import com.dfsek.terra.api.addon.AddonEntryPoint; -import com.dfsek.terra.api.addon.bootstrap.BootstrapAddon; +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; import java.io.IOException; import java.io.UncheckedIOException; @@ -14,9 +14,9 @@ import java.util.jar.JarFile; import java.util.stream.Collectors; -public class BootstrapAddonLoader implements BootstrapAddon { +public class BootstrapAddonLoader implements BootstrapBaseAddon { @Override - public Iterable loadAddons(Path addonsFolder, ClassLoader parent) { + public Iterable loadAddons(Path addonsFolder, ClassLoader parent) { Path bootstrapAddons = addonsFolder.resolve("bootstrap"); try { @@ -30,10 +30,10 @@ public class BootstrapAddonLoader implements BootstrapAddon { try { Object in = loader.loadClass(entry).getConstructor().newInstance(); - if(!(in instanceof AddonEntryPoint)) { - throw new AddonLoadException(in.getClass() + " does not extend " + AddonEntryPoint.class); + if(!(in instanceof BootstrapBaseAddon)) { + throw new AddonLoadException(in.getClass() + " does not extend " + BootstrapBaseAddon.class); } - return (AddonEntryPoint) in; + return (BaseAddon) in; } catch(InvocationTargetException e) { throw new AddonLoadException("Exception occurred while instantiating addon: ", e); } catch(NoSuchMethodException | IllegalAccessException | InstantiationException e) { From e211b27a80a1af1968541f586df5804f2dbec466 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 16 Nov 2021 10:11:44 -0700 Subject: [PATCH 66/97] manifest addon loading --- common/addons/manifest-addon-loader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index b34d3ed3a..c7385fc3b 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit b34d3ed3a0e30105ec4ebfa4cffc8000614cfc5f +Subproject commit c7385fc3bdb2de4e2783e95d67401c7149142db6 From 4f4dc45a48fcd84c4530f372841e53d393cc7003 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 08:22:06 -0700 Subject: [PATCH 67/97] generify BootstrapBaseAddon --- .../addon/bootstrap/BootstrapBaseAddon.java | 4 +- common/api/core/build.gradle.kts | 1 + .../java/com/dfsek/terra/api/Platform.java | 3 +- .../com/dfsek/terra/api/addon/TerraAddon.java | 7 ++- .../functional/FunctionalEventHandler.java | 5 ++- .../com/dfsek/terra/AbstractPlatform.java | 43 ++++++++++++++----- .../java/com/dfsek/terra/InternalAddon.java | 24 ++--------- .../dfsek/terra/config/GenericLoaders.java | 3 +- .../terra/registry/master/AddonRegistry.java | 4 -- .../terra/addon/BootstrapAddonLoader.java | 7 ++- 10 files changed, 56 insertions(+), 45 deletions(-) diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java index 6a45c2665..7a1f7e12c 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java @@ -5,12 +5,12 @@ import com.dfsek.terra.api.addon.BaseAddon; import java.nio.file.Path; -public interface BootstrapBaseAddon extends BaseAddon { +public interface BootstrapBaseAddon extends BaseAddon { /** * Load all the relevant addons in the specified path. * @param addonsFolder Path containing addons. * @param parent * @return Loaded addons */ - Iterable loadAddons(Path addonsFolder, ClassLoader parent); + Iterable loadAddons(Path addonsFolder, ClassLoader parent); } diff --git a/common/api/core/build.gradle.kts b/common/api/core/build.gradle.kts index dd0447e2c..3dd718a57 100644 --- a/common/api/core/build.gradle.kts +++ b/common/api/core/build.gradle.kts @@ -2,6 +2,7 @@ dependencies { "shadedApi"(project(":common:api:util")) "shadedApi"(project(":common:api:noise")) "shadedApi"(project(":common:api:registry")) + "shadedApi"(project(":common:api:addons")) "shadedApi"("com.dfsek:Paralithic:0.5.0") diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java index a7450b988..0a9804869 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api; import java.io.File; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; @@ -47,7 +48,7 @@ public interface Platform extends LoaderRegistrar { CheckedRegistry getConfigRegistry(); - Registry getAddons(); + Registry getAddons(); ItemHandle getItemHandle(); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java index 023ffde61..0cb3e5ba9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java @@ -11,7 +11,7 @@ import com.dfsek.terra.api.addon.annotations.Version; /** * Represents an entry point for an com.dfsek.terra.addon. Implementations must be annotated with {@link Addon}. */ -public abstract class TerraAddon { +public abstract class TerraAddon implements BaseAddon { /** * Invoked immediately after an com.dfsek.terra.addon is loaded. */ @@ -50,4 +50,9 @@ public abstract class TerraAddon { // .dfsek.terra.addon loader. return addon.value(); } + + @Override + public String getID() { + return getName(); + } } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java index f666b7571..44b838880 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java @@ -1,5 +1,6 @@ package com.dfsek.terra.api.event.functional; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.EventHandler; import com.dfsek.terra.api.event.events.Event; @@ -7,7 +8,7 @@ import com.dfsek.terra.api.util.reflection.TypeKey; public interface FunctionalEventHandler extends EventHandler { - EventContext register(TerraAddon addon, Class clazz); + EventContext register(BaseAddon addon, Class clazz); - EventContext register(TerraAddon addon, TypeKey clazz); + EventContext register(BaseAddon addon, TypeKey clazz); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index f16bae1c2..32007dd67 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -2,8 +2,16 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; +import com.dfsek.terra.addon.BootstrapAddonLoader; import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; + +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.registry.LockedRegistryImpl; +import com.dfsek.terra.registry.OpenRegistryImpl; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.yaml.snakeyaml.Yaml; @@ -40,7 +48,6 @@ import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.event.EventManagerImpl; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.CheckedRegistryImpl; -import com.dfsek.terra.registry.master.AddonRegistry; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.util.logging.DebugLogger; @@ -66,7 +73,9 @@ public abstract class AbstractPlatform implements Platform { private final CommandManager manager = new TerraCommandManager(this); - private final AddonRegistry addonRegistry = new AddonRegistry(this); + private final CheckedRegistry addonRegistry = new CheckedRegistryImpl<>(new OpenRegistryImpl<>()); + + private final Registry lockedAddonRegistry = new LockedRegistryImpl<>(addonRegistry); private final Lazy logger = Lazy.lazy(this::createLogger); private final Lazy debugLogger = Lazy.lazy(() -> new DebugLogger(logger())); @@ -97,8 +106,8 @@ public abstract class AbstractPlatform implements Platform { } @Override - public Registry getAddons() { - return addonRegistry; + public Registry getAddons() { + return lockedAddonRegistry; } @Override @@ -126,7 +135,7 @@ public abstract class AbstractPlatform implements Platform { logger().info("Initializing Terra..."); - getPlatformAddon().ifPresent(addonRegistry::register); + getPlatformAddon().ifPresent(addon -> addonRegistry.register(addon.getID(), addon)); try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { File configFile = new File(getDataFolder(), "config.yml"); @@ -181,11 +190,25 @@ public abstract class AbstractPlatform implements Platform { profiler.start(); } - addonRegistry.register(new InternalAddon(this)); + InternalAddon internalAddon = new InternalAddon(); + + addonRegistry.register(internalAddon.getID(), internalAddon); - if(!addonRegistry.loadAll(getClass().getClassLoader())) { // load all addons - throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); - } + BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(); + + + eventManager + .getHandler(FunctionalEventHandler.class) + .register(internalAddon, PlatformInitializationEvent.class) + .then(event -> { + logger().info("Loading config packs..."); + getRawConfigRegistry().loadAll(this); + logger().info("Loaded packs."); + }) + .global(); + + + logger().info("Loaded addons."); try { @@ -200,7 +223,7 @@ public abstract class AbstractPlatform implements Platform { protected abstract Logger createLogger(); - protected Optional getPlatformAddon() { + protected Optional getPlatformAddon() { return Optional.empty(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java index f8a888c0b..ccd9b0a0b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java +++ b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java @@ -1,5 +1,6 @@ package com.dfsek.terra; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Author; @@ -8,26 +9,9 @@ import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -@Addon("terra") -@Author("Terra") -@Version("1.0.0") -public class InternalAddon extends TerraAddon { - private final AbstractPlatform main; - - public InternalAddon(AbstractPlatform main) { - this.main = main; - } - +public class InternalAddon implements BaseAddon { @Override - public void initialize() { - main.getEventManager() - .getHandler(FunctionalEventHandler.class) - .register(this, PlatformInitializationEvent.class) - .then(event -> { - main.logger().info("Loading config packs..."); - main.getRawConfigRegistry().loadAll(main); - main.logger().info("Loaded packs."); - }) - .global(); + public String getID() { + return "terra"; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 3099119f0..ee670eb33 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.TypeRegistry; import java.util.LinkedHashMap; import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; @@ -33,7 +34,7 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()); if(platform != null) { - registry.registerLoader(TerraAddon.class, platform.getAddons()) + registry.registerLoader(BaseAddon.class, platform.getAddons()) .registerLoader(BlockType.class, (t, object, cf) -> platform.getWorldHandle().createBlockData((String) object).getBlockType()) .registerLoader(BlockState.class, (t, object, cf) -> platform.getWorldHandle().createBlockData((String) object)); diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index ca2aa3e5b..ed593712e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -48,10 +48,6 @@ public class AddonRegistry extends OpenRegistryImpl { return register(addon.getName(), addon); } - public boolean loadAll() { - return loadAll(Platform.class.getClassLoader()); - } - public boolean loadAll(ClassLoader parent) { InjectorImpl pluginInjector = new InjectorImpl<>(platform); pluginInjector.addExplicitTarget(Platform.class); diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index bae341577..7075a5a64 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -1,7 +1,6 @@ package com.dfsek.terra.addon; import com.dfsek.terra.addon.exception.AddonLoadException; -import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; import java.io.IOException; @@ -14,9 +13,9 @@ import java.util.jar.JarFile; import java.util.stream.Collectors; -public class BootstrapAddonLoader implements BootstrapBaseAddon { +public class BootstrapAddonLoader implements BootstrapBaseAddon> { @Override - public Iterable loadAddons(Path addonsFolder, ClassLoader parent) { + public Iterable> loadAddons(Path addonsFolder, ClassLoader parent) { Path bootstrapAddons = addonsFolder.resolve("bootstrap"); try { @@ -33,7 +32,7 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon { if(!(in instanceof BootstrapBaseAddon)) { throw new AddonLoadException(in.getClass() + " does not extend " + BootstrapBaseAddon.class); } - return (BaseAddon) in; + return (BootstrapBaseAddon) in; } catch(InvocationTargetException e) { throw new AddonLoadException("Exception occurred while instantiating addon: ", e); } catch(NoSuchMethodException | IllegalAccessException | InstantiationException e) { From 71b053bee6be69bb6d61f5342d3da5afb2edb863 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 08:35:00 -0700 Subject: [PATCH 68/97] implement addon loading --- common/addons/manifest-addon-loader | 2 +- .../com/dfsek/terra/api/addon/BaseAddon.java | 1 + .../com/dfsek/terra/AbstractPlatform.java | 59 +++++++++++-------- 3 files changed, 36 insertions(+), 26 deletions(-) diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index c7385fc3b..3df70cd54 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit c7385fc3bdb2de4e2783e95d67401c7149142db6 +Subproject commit 3df70cd54fb151c06dcc97d5e92cc12396d35f88 diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java index 5ba13d4cf..6e5ff82d1 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java @@ -4,4 +4,5 @@ import com.dfsek.terra.api.util.StringIdentifiable; public interface BaseAddon extends StringIdentifiable { + default void initialize() {} } diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 32007dd67..853f1200b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -1,17 +1,6 @@ package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; - -import com.dfsek.terra.addon.BootstrapAddonLoader; -import com.dfsek.terra.api.Platform; - -import com.dfsek.terra.api.addon.BaseAddon; - -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; -import com.dfsek.terra.registry.LockedRegistryImpl; -import com.dfsek.terra.registry.OpenRegistryImpl; - import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.yaml.snakeyaml.Yaml; @@ -23,21 +12,27 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; import java.util.List; import java.util.Map; import java.util.Optional; -import com.dfsek.terra.api.util.Logger; -import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.addon.BootstrapAddonLoader; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.exception.MalformedCommandException; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; +import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; +import com.dfsek.terra.api.event.functional.FunctionalEventHandler; +import com.dfsek.terra.api.inject.Injector; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.Logger; import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.api.util.mutable.MutableBoolean; import com.dfsek.terra.commands.CommandUtil; @@ -46,8 +41,11 @@ import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.event.EventManagerImpl; +import com.dfsek.terra.inject.InjectorImpl; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.CheckedRegistryImpl; +import com.dfsek.terra.registry.LockedRegistryImpl; +import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.master.ConfigRegistry; import com.dfsek.terra.util.logging.DebugLogger; @@ -191,24 +189,35 @@ public abstract class AbstractPlatform implements Platform { } InternalAddon internalAddon = new InternalAddon(); - + addonRegistry.register(internalAddon.getID(), internalAddon); BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(); + Path addonsFolder = getDataFolder().toPath().resolve("addons"); + + Injector platformInjector = new InjectorImpl<>(this); + platformInjector.addExplicitTarget(Platform.class); + + bootstrapAddonLoader.loadAddons(addonsFolder, getClass().getClassLoader()) + .forEach(bootstrap -> bootstrap.loadAddons(addonsFolder, getClass().getClassLoader()) + .forEach(addon -> { + platformInjector.inject(addon); + addon.initialize(); + addonRegistry.register(addon.getID(), addon); + })); eventManager - .getHandler(FunctionalEventHandler.class) - .register(internalAddon, PlatformInitializationEvent.class) - .then(event -> { - logger().info("Loading config packs..."); - getRawConfigRegistry().loadAll(this); - logger().info("Loaded packs."); - }) - .global(); - - - + .getHandler(FunctionalEventHandler.class) + .register(internalAddon, PlatformInitializationEvent.class) + .then(event -> { + logger().info("Loading config packs..."); + getRawConfigRegistry().loadAll(this); + logger().info("Loaded packs."); + }) + .global(); + + logger().info("Loaded addons."); try { From 92341751fca335f01cbbebf2b1af784e0ee91786 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 08:38:51 -0700 Subject: [PATCH 69/97] fix TerraAddon -> BaseAddon --- .../main/java/com/dfsek/terra/commands/AddonsCommand.java | 2 +- .../main/java/com/dfsek/terra/event/EventContextImpl.java | 8 +++++--- .../com/dfsek/terra/event/FunctionalEventHandlerImpl.java | 7 ++++--- .../main/java/com/dfsek/terra/fabric/PlatformImpl.java | 4 ---- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java index 306afbf58..61fd6a53b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java @@ -18,6 +18,6 @@ public class AddonsCommand implements CommandTemplate { public void execute(CommandSender sender) { sender.sendMessage("Installed Addons:"); platform.getAddons().forEach( - addon -> sender.sendMessage(" - " + addon.getName() + " v" + addon.getVersion() + " by " + addon.getAuthor())); + addon -> sender.sendMessage(" - " + addon.getID())); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java index 96d31d21b..f2b88c1be 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java @@ -1,5 +1,7 @@ package com.dfsek.terra.event; +import com.dfsek.terra.api.addon.BaseAddon; + import org.jetbrains.annotations.NotNull; import java.lang.reflect.Type; @@ -16,14 +18,14 @@ import com.dfsek.terra.api.util.reflection.ReflectionUtil; public class EventContextImpl implements EventContext, Comparable> { private final List> actions = new ArrayList<>(); - private final TerraAddon addon; + private final BaseAddon addon; private final Type eventType; private final FunctionalEventHandlerImpl parent; private int priority; private boolean failThrough = false; private boolean global = false; - public EventContextImpl(TerraAddon addon, Type eventType, FunctionalEventHandlerImpl parent) { + public EventContextImpl(BaseAddon addon, Type eventType, FunctionalEventHandlerImpl parent) { this.addon = addon; this.eventType = eventType; this.parent = parent; @@ -75,7 +77,7 @@ public class EventContextImpl implements EventContext, Compa return priority; } - public TerraAddon getAddon() { + public BaseAddon getAddon() { return addon; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 10daa2420..6239d361e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.events.FailThroughEvent; @@ -48,20 +49,20 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler { platform.logger().warning("Exception occurred during event handling:"); platform.logger().warning(writer.toString()); platform.logger().warning( - "Report this to the maintainers of " + context.getAddon().getName() + ", " + context.getAddon().getAuthor()); + "Report this to the maintainers of " + context.getAddon().getID()); } }); } @Override - public EventContext register(TerraAddon addon, Class clazz) { + public EventContext register(BaseAddon addon, Class clazz) { EventContextImpl eventContext = new EventContextImpl<>(addon, clazz, this); contextMap.computeIfAbsent(clazz, c -> new ArrayList<>()).add(eventContext); return eventContext; } @Override - public EventContext register(TerraAddon addon, TypeKey clazz) { + public EventContext register(BaseAddon addon, TypeKey clazz) { EventContextImpl eventContext = new EventContextImpl<>(addon, clazz.getType(), this); contextMap.computeIfAbsent(clazz.getType(), c -> new ArrayList<>()).add(eventContext); return eventContext; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index ceaa0eea5..8f20720b8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -112,10 +112,6 @@ public class PlatformImpl extends AbstractPlatform { }; } - @Override - protected Optional getPlatformAddon() { - return Optional.of(new FabricAddon(this)); - } private ProtoBiome parseBiome(String id) throws LoadException { Identifier identifier = Identifier.tryParse(id); From c0bcc40f6a86f9c7ca9b07869e60c41b01663309 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 08:52:23 -0700 Subject: [PATCH 70/97] load bootstrap addons --- .../java/com/dfsek/terra/AbstractPlatform.java | 2 +- .../dfsek/terra/addon/BootstrapAddonLoader.java | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 853f1200b..6823b2291 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -192,7 +192,7 @@ public abstract class AbstractPlatform implements Platform { addonRegistry.register(internalAddon.getID(), internalAddon); - BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(); + BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(this); Path addonsFolder = getDataFolder().toPath().resolve("addons"); diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index 7075a5a64..5c9b10986 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -1,6 +1,7 @@ package com.dfsek.terra.addon; import com.dfsek.terra.addon.exception.AddonLoadException; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; import java.io.IOException; @@ -14,17 +15,27 @@ import java.util.stream.Collectors; public class BootstrapAddonLoader implements BootstrapBaseAddon> { + private final Platform platform; + + public BootstrapAddonLoader(Platform platform) { this.platform = platform; } + @Override public Iterable> loadAddons(Path addonsFolder, ClassLoader parent) { Path bootstrapAddons = addonsFolder.resolve("bootstrap"); - + platform.logger().info("Loading bootstrap addons from " + bootstrapAddons); try { return Files.walk(bootstrapAddons, 1) - .filter(path -> path.toFile().isFile() && path.getFileName().endsWith(".jar")) + .filter(path -> path.toFile().isFile() && path.toString().endsWith(".jar")) .map(path -> { try { + platform.logger().info("Loading bootstrap addon from JAR " + path); JarFile jar = new JarFile(path.toFile()); String entry = jar.getManifest().getMainAttributes().getValue("Bootstrap-Addon-Entry-Point"); + + if(entry == null) { + throw new AddonLoadException("No Bootstrap-Addon-Entry-Point attribute defined in addon manifest."); + } + AddonClassLoader loader = new AddonClassLoader(new URL[] {path.toUri().toURL()}, parent); try { From fb93d417eebf7c5a19491cace27f5b6de67b6cea Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 09:22:45 -0700 Subject: [PATCH 71/97] bootstrap addon dumping --- buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt | 6 ++++-- common/addons/manifest-addon-loader | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt index 9602b51f3..279dcf74a 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/AddonConfig.kt @@ -5,6 +5,7 @@ import java.util.function.Predicate import org.gradle.api.Project import org.gradle.api.Task import org.gradle.jvm.tasks.Jar +import org.gradle.kotlin.dsl.extra import kotlin.streams.asStream @@ -23,7 +24,8 @@ fun Project.addonDir(dir: File, task: Task) { project(":common:addons").subprojects.forEach { addonProject -> val jar = (addonProject.tasks.named("jar").get() as Jar) - val target = File(dir, jar.archiveFileName.get()) + val boot = if (addonProject.project.extra.has("bootstrap") && addonProject.project.extra.get("bootstrap") as Boolean) "bootstrap/" else "" + val target = File(dir, boot + jar.archiveFileName.get()) val base = "${jar.archiveBaseName.get()}-${project.version}" @@ -36,6 +38,6 @@ fun Project.addonDir(dir: File, task: Task) { fun matchingAddons(dir: File, matcher: Predicate): Set { val matching = HashSet() - dir.walk().maxDepth(1).asStream().filter(matcher).forEach(matching::add) + dir.walk().asStream().filter(matcher).forEach(matching::add) return matching } diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 3df70cd54..ffc65330d 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 3df70cd54fb151c06dcc97d5e92cc12396d35f88 +Subproject commit ffc65330dcf0a4b8608e8c35362f2930019dd682 From 2afd8b9b8df0d51c5fb1d2ecb0267dc3f2ee8ddc Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 10:20:06 -0700 Subject: [PATCH 72/97] create addon manifests --- common/addons/biome-provider-image | 2 +- common/addons/biome-provider-pipeline | 2 +- common/addons/biome-provider-single | 2 +- common/addons/chunk-generator-noise-3d | 2 +- common/addons/config-biome | 2 +- common/addons/config-carver | 2 +- common/addons/config-distributors | 2 +- common/addons/config-feature | 2 +- common/addons/config-flora | 2 +- common/addons/config-locators | 2 +- common/addons/config-noise-function | 2 +- common/addons/config-ore | 2 +- common/addons/config-palette | 2 +- common/addons/config-structure | 2 +- common/addons/generation-stage-feature | 2 +- common/addons/generation-stage-structure | 2 +- common/addons/language-yaml | 2 +- common/addons/manifest-addon-loader | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/common/addons/biome-provider-image b/common/addons/biome-provider-image index 7b895aa1d..86caa176b 160000 --- a/common/addons/biome-provider-image +++ b/common/addons/biome-provider-image @@ -1 +1 @@ -Subproject commit 7b895aa1d86d68d7d723c03e0c214828dbd7890d +Subproject commit 86caa176ba338c57b41a9b4ae983c75b0e33f9c2 diff --git a/common/addons/biome-provider-pipeline b/common/addons/biome-provider-pipeline index 7335645c0..aa8147b1b 160000 --- a/common/addons/biome-provider-pipeline +++ b/common/addons/biome-provider-pipeline @@ -1 +1 @@ -Subproject commit 7335645c0c84ae18f2c123785870275807cb630f +Subproject commit aa8147b1bee79013abff0611a267af35f1eabae0 diff --git a/common/addons/biome-provider-single b/common/addons/biome-provider-single index 5a19c54af..8e86ffc6b 160000 --- a/common/addons/biome-provider-single +++ b/common/addons/biome-provider-single @@ -1 +1 @@ -Subproject commit 5a19c54af52a8057d405f42ea89d519355db1ff1 +Subproject commit 8e86ffc6bfe2d2948717c324e8d24bf36bc55c34 diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d index 6ba653342..7088701aa 160000 --- a/common/addons/chunk-generator-noise-3d +++ b/common/addons/chunk-generator-noise-3d @@ -1 +1 @@ -Subproject commit 6ba65334208d5dd10fb8151b0b9993e8ac6eb14f +Subproject commit 7088701aa5edc8e2adf8a6c40f6204972a90e990 diff --git a/common/addons/config-biome b/common/addons/config-biome index 9fa017343..037df6ef4 160000 --- a/common/addons/config-biome +++ b/common/addons/config-biome @@ -1 +1 @@ -Subproject commit 9fa017343a37b948eb5b6c48e98022d853987573 +Subproject commit 037df6ef4a4f8811243fb260b027aaca32a46a78 diff --git a/common/addons/config-carver b/common/addons/config-carver index 84ac29e00..986d4d0d1 160000 --- a/common/addons/config-carver +++ b/common/addons/config-carver @@ -1 +1 @@ -Subproject commit 84ac29e00edd9313c094edd6c65e08990367d5a3 +Subproject commit 986d4d0d172b91d827f2d1e2cd00cf5e297c197b diff --git a/common/addons/config-distributors b/common/addons/config-distributors index aad82e28c..947dd5268 160000 --- a/common/addons/config-distributors +++ b/common/addons/config-distributors @@ -1 +1 @@ -Subproject commit aad82e28c90e9caeabbada6461c17282e741b6ce +Subproject commit 947dd5268a8f7df08cb1bbc9d5a12e54b49152bb diff --git a/common/addons/config-feature b/common/addons/config-feature index ea4b7cdd9..b4c542f18 160000 --- a/common/addons/config-feature +++ b/common/addons/config-feature @@ -1 +1 @@ -Subproject commit ea4b7cdd91e391431d97e75342b58ac404c9a00a +Subproject commit b4c542f18e82f47b5f3fbd5d636f3cb03b94f031 diff --git a/common/addons/config-flora b/common/addons/config-flora index f2f0b4ccf..bbf674b48 160000 --- a/common/addons/config-flora +++ b/common/addons/config-flora @@ -1 +1 @@ -Subproject commit f2f0b4ccf8491af6936cc7cd8ed486434cfa6e9d +Subproject commit bbf674b4876ebf0aaa9faace9480753be563861b diff --git a/common/addons/config-locators b/common/addons/config-locators index 30917cb5c..81f46f340 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit 30917cb5cead14a7327f0045cf36376700bb0e8b +Subproject commit 81f46f340bc8e5db028ae1a6073f6930f263eea8 diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function index 5032f2b9e..102dfea5f 160000 --- a/common/addons/config-noise-function +++ b/common/addons/config-noise-function @@ -1 +1 @@ -Subproject commit 5032f2b9eac7a7dbf79d4a50cf90306efd0fee27 +Subproject commit 102dfea5fd10ed8ae84206039a003d8404a4fcd8 diff --git a/common/addons/config-ore b/common/addons/config-ore index 31f057cba..8f84f66f4 160000 --- a/common/addons/config-ore +++ b/common/addons/config-ore @@ -1 +1 @@ -Subproject commit 31f057cbaddd1a46b1a6d258e344decf0d216992 +Subproject commit 8f84f66f412e4df8cd8753c3045d8ce3b536e171 diff --git a/common/addons/config-palette b/common/addons/config-palette index 1793e729d..1648138af 160000 --- a/common/addons/config-palette +++ b/common/addons/config-palette @@ -1 +1 @@ -Subproject commit 1793e729dd655d1b08ea87aec4881f402d69691c +Subproject commit 1648138afb9ad4332bc5f4c8376fb578bb5602bc diff --git a/common/addons/config-structure b/common/addons/config-structure index a2bf332fb..4e2ed3504 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit a2bf332fb25c0f546fb4180edfd38b5dc81ed4ca +Subproject commit 4e2ed35045d11e647f6cca9dece20c00a959778d diff --git a/common/addons/generation-stage-feature b/common/addons/generation-stage-feature index 398a47743..212c25efe 160000 --- a/common/addons/generation-stage-feature +++ b/common/addons/generation-stage-feature @@ -1 +1 @@ -Subproject commit 398a4774320392e64a025f6495b00d8290981ac9 +Subproject commit 212c25efef918c2ef2cacd2c4b1f37d898c07dcc diff --git a/common/addons/generation-stage-structure b/common/addons/generation-stage-structure index 309c626eb..35dac4d05 160000 --- a/common/addons/generation-stage-structure +++ b/common/addons/generation-stage-structure @@ -1 +1 @@ -Subproject commit 309c626ebee0d4bd15e821ed87419abc2e6ef9a5 +Subproject commit 35dac4d05ce2ff2a831f3ca875a30e17ee25bd53 diff --git a/common/addons/language-yaml b/common/addons/language-yaml index aaa32f988..9a7f9751f 160000 --- a/common/addons/language-yaml +++ b/common/addons/language-yaml @@ -1 +1 @@ -Subproject commit aaa32f988bdc8bcb25a4193bcf002cd46f748a7f +Subproject commit 9a7f9751ff517bf36c139015609f741219cc0da2 diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index ffc65330d..d38edec69 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit ffc65330dcf0a4b8608e8c35362f2930019dd682 +Subproject commit d38edec69c93ea1d4f5800e23e6d424ce01d75ef From b1f69203eb6c23511c7139d04d28beea76282067 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 12:20:18 -0700 Subject: [PATCH 73/97] depend on manifest addons in core addon modules --- common/addons/biome-provider-image | 2 +- common/addons/biome-provider-pipeline | 2 +- common/addons/biome-provider-single | 2 +- common/addons/chunk-generator-noise-3d | 2 +- common/addons/config-biome | 2 +- common/addons/config-carver | 2 +- common/addons/config-distributors | 2 +- common/addons/config-feature | 2 +- common/addons/config-flora | 2 +- common/addons/config-locators | 2 +- common/addons/config-noise-function | 2 +- common/addons/config-ore | 2 +- common/addons/config-palette | 2 +- common/addons/config-structure | 2 +- common/addons/generation-stage-feature | 2 +- common/addons/generation-stage-structure | 2 +- common/addons/language-yaml | 2 +- common/addons/structure-sponge-loader | 2 +- common/addons/structure-terrascript-loader | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/common/addons/biome-provider-image b/common/addons/biome-provider-image index 86caa176b..8767095f3 160000 --- a/common/addons/biome-provider-image +++ b/common/addons/biome-provider-image @@ -1 +1 @@ -Subproject commit 86caa176ba338c57b41a9b4ae983c75b0e33f9c2 +Subproject commit 8767095f3a26d4f0769249c18d1f3edc6eb60b41 diff --git a/common/addons/biome-provider-pipeline b/common/addons/biome-provider-pipeline index aa8147b1b..b9bda308e 160000 --- a/common/addons/biome-provider-pipeline +++ b/common/addons/biome-provider-pipeline @@ -1 +1 @@ -Subproject commit aa8147b1bee79013abff0611a267af35f1eabae0 +Subproject commit b9bda308e74f672a4f8a1f91824748ebc2b5f579 diff --git a/common/addons/biome-provider-single b/common/addons/biome-provider-single index 8e86ffc6b..8b5d7cc08 160000 --- a/common/addons/biome-provider-single +++ b/common/addons/biome-provider-single @@ -1 +1 @@ -Subproject commit 8e86ffc6bfe2d2948717c324e8d24bf36bc55c34 +Subproject commit 8b5d7cc0842655e792d0d28fc38b23eb11c315b3 diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d index 7088701aa..6d8300af6 160000 --- a/common/addons/chunk-generator-noise-3d +++ b/common/addons/chunk-generator-noise-3d @@ -1 +1 @@ -Subproject commit 7088701aa5edc8e2adf8a6c40f6204972a90e990 +Subproject commit 6d8300af694ef136ca64cc78a1f2d19d1cc6219b diff --git a/common/addons/config-biome b/common/addons/config-biome index 037df6ef4..835905624 160000 --- a/common/addons/config-biome +++ b/common/addons/config-biome @@ -1 +1 @@ -Subproject commit 037df6ef4a4f8811243fb260b027aaca32a46a78 +Subproject commit 8359056245d41c25569f7b8b6001e7ff82f1c68e diff --git a/common/addons/config-carver b/common/addons/config-carver index 986d4d0d1..e61fa64bf 160000 --- a/common/addons/config-carver +++ b/common/addons/config-carver @@ -1 +1 @@ -Subproject commit 986d4d0d172b91d827f2d1e2cd00cf5e297c197b +Subproject commit e61fa64bf8e2fa395e47296fb99f1f179b8bf158 diff --git a/common/addons/config-distributors b/common/addons/config-distributors index 947dd5268..242c81ce0 160000 --- a/common/addons/config-distributors +++ b/common/addons/config-distributors @@ -1 +1 @@ -Subproject commit 947dd5268a8f7df08cb1bbc9d5a12e54b49152bb +Subproject commit 242c81ce0e4a89e5e41641ac692fdc029be053e3 diff --git a/common/addons/config-feature b/common/addons/config-feature index b4c542f18..633cb4a45 160000 --- a/common/addons/config-feature +++ b/common/addons/config-feature @@ -1 +1 @@ -Subproject commit b4c542f18e82f47b5f3fbd5d636f3cb03b94f031 +Subproject commit 633cb4a453822223560a5f3d1ec8a7b1bc8c52b7 diff --git a/common/addons/config-flora b/common/addons/config-flora index bbf674b48..8ff54cd33 160000 --- a/common/addons/config-flora +++ b/common/addons/config-flora @@ -1 +1 @@ -Subproject commit bbf674b4876ebf0aaa9faace9480753be563861b +Subproject commit 8ff54cd33f2ce38a06efde542f345d0b63c97316 diff --git a/common/addons/config-locators b/common/addons/config-locators index 81f46f340..5030f11d0 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit 81f46f340bc8e5db028ae1a6073f6930f263eea8 +Subproject commit 5030f11d039bc3bbef471610f4eb84c28fad5e17 diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function index 102dfea5f..356c3c9a6 160000 --- a/common/addons/config-noise-function +++ b/common/addons/config-noise-function @@ -1 +1 @@ -Subproject commit 102dfea5fd10ed8ae84206039a003d8404a4fcd8 +Subproject commit 356c3c9a62e85728fdb31c3f8c3cb7f82292940a diff --git a/common/addons/config-ore b/common/addons/config-ore index 8f84f66f4..65aee39d3 160000 --- a/common/addons/config-ore +++ b/common/addons/config-ore @@ -1 +1 @@ -Subproject commit 8f84f66f412e4df8cd8753c3045d8ce3b536e171 +Subproject commit 65aee39d3fa36e530745f8fb4e8cd3dbd380b965 diff --git a/common/addons/config-palette b/common/addons/config-palette index 1648138af..2a5e33775 160000 --- a/common/addons/config-palette +++ b/common/addons/config-palette @@ -1 +1 @@ -Subproject commit 1648138afb9ad4332bc5f4c8376fb578bb5602bc +Subproject commit 2a5e33775387fc85b5e3a2de74b70130713178b3 diff --git a/common/addons/config-structure b/common/addons/config-structure index 4e2ed3504..5e84896f3 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit 4e2ed35045d11e647f6cca9dece20c00a959778d +Subproject commit 5e84896f337827ddbc83eb1f132e1cd2aca55053 diff --git a/common/addons/generation-stage-feature b/common/addons/generation-stage-feature index 212c25efe..a2ad858b8 160000 --- a/common/addons/generation-stage-feature +++ b/common/addons/generation-stage-feature @@ -1 +1 @@ -Subproject commit 212c25efef918c2ef2cacd2c4b1f37d898c07dcc +Subproject commit a2ad858b83c6a6d3240fedbdc4648048d44cfe84 diff --git a/common/addons/generation-stage-structure b/common/addons/generation-stage-structure index 35dac4d05..8af4c6c60 160000 --- a/common/addons/generation-stage-structure +++ b/common/addons/generation-stage-structure @@ -1 +1 @@ -Subproject commit 35dac4d05ce2ff2a831f3ca875a30e17ee25bd53 +Subproject commit 8af4c6c60f68519ab2be6bae0993ede36222d695 diff --git a/common/addons/language-yaml b/common/addons/language-yaml index 9a7f9751f..511a2815a 160000 --- a/common/addons/language-yaml +++ b/common/addons/language-yaml @@ -1 +1 @@ -Subproject commit 9a7f9751ff517bf36c139015609f741219cc0da2 +Subproject commit 511a2815a605759f2985e0cb5df0bc58b5227cc6 diff --git a/common/addons/structure-sponge-loader b/common/addons/structure-sponge-loader index 5c7455098..73cee6a1f 160000 --- a/common/addons/structure-sponge-loader +++ b/common/addons/structure-sponge-loader @@ -1 +1 @@ -Subproject commit 5c74550980abb3e7c7addc10c8e0c068440cf433 +Subproject commit 73cee6a1f214621d1040755f4904b73d2156e94d diff --git a/common/addons/structure-terrascript-loader b/common/addons/structure-terrascript-loader index 2bf906cce..49234b2a1 160000 --- a/common/addons/structure-terrascript-loader +++ b/common/addons/structure-terrascript-loader @@ -1 +1 @@ -Subproject commit 2bf906cce5f72de80f4471b1f3a8c17115424fd3 +Subproject commit 49234b2a17cacc030b6e67ff8ececd6d6d4b1201 From 217bfb456561ac280dc03bfcd8056896f215f083 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 12:39:24 -0700 Subject: [PATCH 74/97] create addon manifests --- common/addons/biome-provider-image | 2 +- common/addons/biome-provider-pipeline | 2 +- common/addons/biome-provider-single | 2 +- common/addons/manifest-addon-loader | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/addons/biome-provider-image b/common/addons/biome-provider-image index 8767095f3..8df4f9176 160000 --- a/common/addons/biome-provider-image +++ b/common/addons/biome-provider-image @@ -1 +1 @@ -Subproject commit 8767095f3a26d4f0769249c18d1f3edc6eb60b41 +Subproject commit 8df4f9176e4d2c4efc9cde26837067d59e1a4393 diff --git a/common/addons/biome-provider-pipeline b/common/addons/biome-provider-pipeline index b9bda308e..5892c95cc 160000 --- a/common/addons/biome-provider-pipeline +++ b/common/addons/biome-provider-pipeline @@ -1 +1 @@ -Subproject commit b9bda308e74f672a4f8a1f91824748ebc2b5f579 +Subproject commit 5892c95ccbe2885aef95e01fb8e5650f9ad947ca diff --git a/common/addons/biome-provider-single b/common/addons/biome-provider-single index 8b5d7cc08..da104d0a6 160000 --- a/common/addons/biome-provider-single +++ b/common/addons/biome-provider-single @@ -1 +1 @@ -Subproject commit 8b5d7cc0842655e792d0d28fc38b23eb11c315b3 +Subproject commit da104d0a6523fde205b6fb9c82226dd20682603c diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index d38edec69..124324b20 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit d38edec69c93ea1d4f5800e23e6d424ce01d75ef +Subproject commit 124324b20c04a694c91a61284456e1d79d6b9709 From 8eaf0e188079ddd797af34e22b4e0740a4b7e6d5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 12:39:44 -0700 Subject: [PATCH 75/97] api addon bootstrap config --- common/addons/api-addon-loader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader index 960819639..6e250ed49 160000 --- a/common/addons/api-addon-loader +++ b/common/addons/api-addon-loader @@ -1 +1 @@ -Subproject commit 960819639fcda82b4911608b83f1cdc277f63234 +Subproject commit 6e250ed495db23d88d252fb017cf0588f3d9057d From 939b528d11f2a90b80500deb14228e79312a5faa Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 15:22:12 -0700 Subject: [PATCH 76/97] manifest addon loading --- common/addons/chunk-generator-noise-3d | 2 +- common/addons/config-biome | 2 +- common/addons/config-distributors | 2 +- common/addons/config-feature | 2 +- common/addons/config-flora | 2 +- common/addons/config-locators | 2 +- common/addons/config-noise-function | 2 +- common/addons/config-ore | 2 +- common/addons/config-palette | 2 +- common/addons/config-structure | 2 +- common/addons/generation-stage-feature | 2 +- common/addons/language-yaml | 2 +- common/addons/manifest-addon-loader | 2 +- common/addons/structure-sponge-loader | 2 +- common/addons/structure-terrascript-loader | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d index 6d8300af6..0e0652491 160000 --- a/common/addons/chunk-generator-noise-3d +++ b/common/addons/chunk-generator-noise-3d @@ -1 +1 @@ -Subproject commit 6d8300af694ef136ca64cc78a1f2d19d1cc6219b +Subproject commit 0e06524911da594e508262155525bdcfa1ce6fff diff --git a/common/addons/config-biome b/common/addons/config-biome index 835905624..b0256d2f5 160000 --- a/common/addons/config-biome +++ b/common/addons/config-biome @@ -1 +1 @@ -Subproject commit 8359056245d41c25569f7b8b6001e7ff82f1c68e +Subproject commit b0256d2f5f97c22d337683ca13cbc1ffd2260a7a diff --git a/common/addons/config-distributors b/common/addons/config-distributors index 242c81ce0..ad2e4f20e 160000 --- a/common/addons/config-distributors +++ b/common/addons/config-distributors @@ -1 +1 @@ -Subproject commit 242c81ce0e4a89e5e41641ac692fdc029be053e3 +Subproject commit ad2e4f20e809a52befd20f575161d5b593408ecf diff --git a/common/addons/config-feature b/common/addons/config-feature index 633cb4a45..648e8a700 160000 --- a/common/addons/config-feature +++ b/common/addons/config-feature @@ -1 +1 @@ -Subproject commit 633cb4a453822223560a5f3d1ec8a7b1bc8c52b7 +Subproject commit 648e8a70060fed2d84bdcec17a9e9c742039a3f3 diff --git a/common/addons/config-flora b/common/addons/config-flora index 8ff54cd33..b097f3e27 160000 --- a/common/addons/config-flora +++ b/common/addons/config-flora @@ -1 +1 @@ -Subproject commit 8ff54cd33f2ce38a06efde542f345d0b63c97316 +Subproject commit b097f3e270daa93a240ee86a8b0857b69379ac94 diff --git a/common/addons/config-locators b/common/addons/config-locators index 5030f11d0..2249b8cab 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit 5030f11d039bc3bbef471610f4eb84c28fad5e17 +Subproject commit 2249b8cab4ec3063887110efe584d60ca55e5481 diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function index 356c3c9a6..3fd6b1cbd 160000 --- a/common/addons/config-noise-function +++ b/common/addons/config-noise-function @@ -1 +1 @@ -Subproject commit 356c3c9a62e85728fdb31c3f8c3cb7f82292940a +Subproject commit 3fd6b1cbdb7cad9dc68208c9622c5a311be9660d diff --git a/common/addons/config-ore b/common/addons/config-ore index 65aee39d3..56ff75af0 160000 --- a/common/addons/config-ore +++ b/common/addons/config-ore @@ -1 +1 @@ -Subproject commit 65aee39d3fa36e530745f8fb4e8cd3dbd380b965 +Subproject commit 56ff75af0d44c2c49aa770167fb7fd5b65839550 diff --git a/common/addons/config-palette b/common/addons/config-palette index 2a5e33775..51013ccc5 160000 --- a/common/addons/config-palette +++ b/common/addons/config-palette @@ -1 +1 @@ -Subproject commit 2a5e33775387fc85b5e3a2de74b70130713178b3 +Subproject commit 51013ccc555e1f21dca04646e38215c8143674ba diff --git a/common/addons/config-structure b/common/addons/config-structure index 5e84896f3..9059b861e 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit 5e84896f337827ddbc83eb1f132e1cd2aca55053 +Subproject commit 9059b861e7551c6923b5b52a7c2434913302aa7f diff --git a/common/addons/generation-stage-feature b/common/addons/generation-stage-feature index a2ad858b8..3070a11d7 160000 --- a/common/addons/generation-stage-feature +++ b/common/addons/generation-stage-feature @@ -1 +1 @@ -Subproject commit a2ad858b83c6a6d3240fedbdc4648048d44cfe84 +Subproject commit 3070a11d7610adbff4aef8f5f5341f6fadc9e9c4 diff --git a/common/addons/language-yaml b/common/addons/language-yaml index 511a2815a..032c1b45d 160000 --- a/common/addons/language-yaml +++ b/common/addons/language-yaml @@ -1 +1 @@ -Subproject commit 511a2815a605759f2985e0cb5df0bc58b5227cc6 +Subproject commit 032c1b45ddfa6f65c2398b63f7d6e407fbdc7c14 diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 124324b20..40d1b58c4 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 124324b20c04a694c91a61284456e1d79d6b9709 +Subproject commit 40d1b58c41b518bc6f0052c54037630925ad7ae7 diff --git a/common/addons/structure-sponge-loader b/common/addons/structure-sponge-loader index 73cee6a1f..c6f85221c 160000 --- a/common/addons/structure-sponge-loader +++ b/common/addons/structure-sponge-loader @@ -1 +1 @@ -Subproject commit 73cee6a1f214621d1040755f4904b73d2156e94d +Subproject commit c6f85221c06f5311b2cc62d6f0d5eafc660e2544 diff --git a/common/addons/structure-terrascript-loader b/common/addons/structure-terrascript-loader index 49234b2a1..a21413314 160000 --- a/common/addons/structure-terrascript-loader +++ b/common/addons/structure-terrascript-loader @@ -1 +1 @@ -Subproject commit 49234b2a17cacc030b6e67ff8ececd6d6d4b1201 +Subproject commit a21413314abfd94f51e35de445719ca45e84315f From 174b23c8ef2d26c7bd3bcf87de3d9143c120f884 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 15:29:28 -0700 Subject: [PATCH 77/97] add logging --- .../java/com/dfsek/terra/AbstractPlatform.java | 15 +++++++++------ .../dfsek/terra/addon/BootstrapAddonLoader.java | 2 ++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 6823b2291..33fcf30a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -200,12 +200,15 @@ public abstract class AbstractPlatform implements Platform { platformInjector.addExplicitTarget(Platform.class); bootstrapAddonLoader.loadAddons(addonsFolder, getClass().getClassLoader()) - .forEach(bootstrap -> bootstrap.loadAddons(addonsFolder, getClass().getClassLoader()) - .forEach(addon -> { - platformInjector.inject(addon); - addon.initialize(); - addonRegistry.register(addon.getID(), addon); - })); + .forEach(bootstrap -> { + platformInjector.inject(bootstrap); + bootstrap.loadAddons(addonsFolder, getClass().getClassLoader()) + .forEach(addon -> { + platformInjector.inject(addon); + addon.initialize(); + addonRegistry.register(addon.getID(), addon); + }); + }); eventManager .getHandler(FunctionalEventHandler.class) diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index 5c9b10986..5ec665b01 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -3,6 +3,7 @@ package com.dfsek.terra.addon; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; +import com.dfsek.terra.api.inject.Injector; import java.io.IOException; import java.io.UncheckedIOException; @@ -43,6 +44,7 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon) in).getID()); return (BootstrapBaseAddon) in; } catch(InvocationTargetException e) { throw new AddonLoadException("Exception occurred while instantiating addon: ", e); From 172006f2f6dcb987b6f266f6667bf38974116568 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 16:22:14 -0700 Subject: [PATCH 78/97] initialize manifest addons --- common/addons/manifest-addon-loader | 2 +- .../src/main/java/com/dfsek/terra/api/inject/Injector.java | 5 +++++ .../java/com/dfsek/terra/api/inject/impl}/InjectorImpl.java | 2 +- .../src/main/java/com/dfsek/terra/AbstractPlatform.java | 2 +- .../java/com/dfsek/terra/commands/TerraCommandManager.java | 2 +- .../java/com/dfsek/terra/registry/master/AddonRegistry.java | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) rename common/{implementation/src/main/java/com/dfsek/terra/inject => api/inject/src/main/java/com/dfsek/terra/api/inject/impl}/InjectorImpl.java (97%) diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 40d1b58c4..31456bf9c 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 40d1b58c41b518bc6f0052c54037630925ad7ae7 +Subproject commit 31456bf9cd9bffdefbac263a4e62b74c8b58ea21 diff --git a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java index 78ea1b23d..ee915ad1a 100644 --- a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java +++ b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.inject; import com.dfsek.terra.api.inject.annotations.Inject; import com.dfsek.terra.api.inject.exception.InjectionException; +import com.dfsek.terra.api.inject.impl.InjectorImpl; /** @@ -37,4 +38,8 @@ public interface Injector { * */ void inject(Object object) throws InjectionException; + + static Injector get(T1 value) { + return new InjectorImpl<>(value); + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/impl/InjectorImpl.java similarity index 97% rename from common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java rename to common/api/inject/src/main/java/com/dfsek/terra/api/inject/impl/InjectorImpl.java index f6ccb6e07..7c511f7e6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/inject/InjectorImpl.java +++ b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/impl/InjectorImpl.java @@ -1,4 +1,4 @@ -package com.dfsek.terra.inject; +package com.dfsek.terra.api.inject.impl; import java.lang.reflect.Field; import java.lang.reflect.Modifier; diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 33fcf30a5..2ce1433ae 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -41,7 +41,7 @@ import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.event.EventManagerImpl; -import com.dfsek.terra.inject.InjectorImpl; +import com.dfsek.terra.api.inject.impl.InjectorImpl; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index e12518106..5b294d1fc 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -36,7 +36,7 @@ import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.inject.exception.InjectionException; import com.dfsek.terra.api.util.reflection.ReflectionUtil; -import com.dfsek.terra.inject.InjectorImpl; +import com.dfsek.terra.api.inject.impl.InjectorImpl; public class TerraCommandManager implements CommandManager { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index ed593712e..f5ea6ab06 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -15,7 +15,7 @@ import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.inject.exception.InjectionException; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.inject.InjectorImpl; +import com.dfsek.terra.api.inject.impl.InjectorImpl; import com.dfsek.terra.registry.OpenRegistryImpl; From 3737e3510dd2c818f60a39ad16d8f6a5acc72471 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 16:28:40 -0700 Subject: [PATCH 79/97] format --- .../com/dfsek/terra/api/addon/BaseAddon.java | 2 +- .../addon/bootstrap/BootstrapBaseAddon.java | 6 +- .../java/com/dfsek/terra/api/Platform.java | 1 - .../dfsek/terra/api/addon/AddonLoader.java | 1 + .../state/properties/base/EnumProperty.java | 6 +- .../dfsek/terra/api/config/ConfigPack.java | 2 +- .../dfsek/terra/api/config/WorldConfig.java | 2 +- .../functional/FunctionalEventHandler.java | 1 - .../dfsek/terra/api/structure/Structure.java | 2 +- .../buffer/buffers/StructureBuffer.java | 3 +- .../configured/ConfiguredStructure.java | 2 +- .../api/structure/feature/Distributor.java | 16 +++--- .../dfsek/terra/api/util/RotationUtil.java | 4 +- .../com/dfsek/terra/api/world/Column.java | 4 +- .../api/world/generator/ChunkGenerator.java | 2 +- .../api/world/generator/SamplerCache.java | 1 + .../com/dfsek/terra/api/inject/Injector.java | 8 +-- .../com/dfsek/terra/AbstractPlatform.java | 2 +- .../java/com/dfsek/terra/InternalAddon.java | 6 -- .../dfsek/terra/commands/PacksCommand.java | 3 +- .../terra/commands/TerraCommandManager.java | 5 +- .../dfsek/terra/config/GenericLoaders.java | 1 - .../dfsek/terra/config/PluginConfigImpl.java | 2 +- .../com/dfsek/terra/config/lang/LangUtil.java | 2 +- .../config/pack/ConfigPackAddonsTemplate.java | 1 + .../terra/config/pack/ConfigPackImpl.java | 18 +++--- .../dfsek/terra/event/EventContextImpl.java | 4 +- .../event/FunctionalEventHandlerImpl.java | 1 - .../terra/registry/OpenRegistryImpl.java | 7 ++- .../terra/registry/master/AddonRegistry.java | 2 +- .../dfsek/terra/world/SamplerCacheImpl.java | 5 +- .../src/test/java/profiler/ProfilerTest.java | 56 +++++++++---------- .../src/test/java/registry/RegistryTest.java | 9 ++- .../terra/addon/BootstrapAddonLoader.java | 19 +++---- .../com/dfsek/terra/bukkit/PlatformImpl.java | 9 +-- .../bukkit/listeners/CommonListener.java | 3 +- .../terra/bukkit/listeners/PaperListener.java | 4 +- .../bukkit/listeners/SpigotListener.java | 4 +- .../bukkit/population/PopulationManager.java | 3 +- .../dfsek/terra/bukkit/world/BukkitTree.java | 3 +- .../com/dfsek/terra/fabric/PlatformImpl.java | 19 +++---- .../FabricChunkGeneratorWrapper.java | 19 +++---- .../fabric/generation/TerraBiomeSource.java | 8 +-- .../lifecycle/server/ServerMainMixin.java | 3 +- .../com/dfsek/terra/platform/DirectWorld.java | 2 +- .../com/dfsek/terra/sponge/PlatformImpl.java | 2 +- 46 files changed, 133 insertions(+), 152 deletions(-) diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java index 6e5ff82d1..3a131be7b 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java @@ -4,5 +4,5 @@ import com.dfsek.terra.api.util.StringIdentifiable; public interface BaseAddon extends StringIdentifiable { - default void initialize() {} + default void initialize() { } } diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java index 7a1f7e12c..54a4de636 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java @@ -1,15 +1,17 @@ package com.dfsek.terra.api.addon.bootstrap; -import com.dfsek.terra.api.addon.BaseAddon; - import java.nio.file.Path; +import com.dfsek.terra.api.addon.BaseAddon; + public interface BootstrapBaseAddon extends BaseAddon { /** * Load all the relevant addons in the specified path. + * * @param addonsFolder Path containing addons. * @param parent + * * @return Loaded addons */ Iterable loadAddons(Path addonsFolder, ClassLoader parent); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java index 0a9804869..19a8f66d8 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java @@ -3,7 +3,6 @@ package com.dfsek.terra.api; import java.io.File; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.PluginConfig; import com.dfsek.terra.api.event.EventManager; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java index 8d6f0c5f1..988ae520f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java @@ -7,6 +7,7 @@ import com.dfsek.terra.api.registry.CheckedRegistry; public interface AddonLoader { /** * Load all addons. + * * @param platform TerraPlugin instance. */ void load(Platform platform, CheckedRegistry addons); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java index 2e7770b4f..475dd8a01 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java @@ -11,17 +11,17 @@ public interface EnumProperty> extends Property { static > EnumProperty of(String name, Class clazz) { return new EnumProperty<>() { private final Lazy> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants())); - + @Override public Collection values() { return constants.value(); } - + @Override public Class getType() { return clazz; } - + @Override public String getName() { return name; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index 63dd322ac..7a3412c81 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -5,13 +5,13 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.registry.meta.RegistryHolder; import com.dfsek.terra.api.tectonic.LoaderHolder; import com.dfsek.terra.api.tectonic.LoaderRegistrar; +import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.util.reflection.TypeKey; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index 9750c6940..a13e8f501 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -2,8 +2,8 @@ package com.dfsek.terra.api.config; import java.util.Map; -import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.registry.Registry; +import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.SamplerCache; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java index 44b838880..a6c0012f0 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java @@ -1,7 +1,6 @@ package com.dfsek.terra.api.event.functional; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.EventHandler; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.util.reflection.TypeKey; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java index 18df500bd..c7da619a1 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -2,9 +2,9 @@ package com.dfsek.terra.api.structure; import java.util.Random; -import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.rotation.Rotation; +import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java index 0bc5277b3..5857429c7 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java @@ -1,7 +1,5 @@ package com.dfsek.terra.api.structure.buffer.buffers; -import com.dfsek.terra.api.structure.buffer.items.Cell; - import net.jafama.FastMath; import java.util.LinkedHashMap; @@ -9,6 +7,7 @@ import java.util.Map; import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.BufferedItem; +import com.dfsek.terra.api.structure.buffer.items.Cell; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java index 28ecbd83c..a7ae04779 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java @@ -1,9 +1,9 @@ package com.dfsek.terra.api.structure.configured; -import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.structure.StructureSpawn; import com.dfsek.terra.api.util.Range; +import com.dfsek.terra.api.util.StringIdentifiable; import com.dfsek.terra.api.util.collection.ProbabilityCollection; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java index 82629f469..84d1e7743 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java @@ -1,6 +1,14 @@ package com.dfsek.terra.api.structure.feature; public interface Distributor { + static Distributor yes() { + return (x, z, seed) -> true; + } + + static Distributor no() { + return (x, z, seed) -> false; + } + boolean matches(int x, int z, long seed); default Distributor and(Distributor other) { @@ -10,12 +18,4 @@ 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; - } } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 9c107e571..40bbe0e7c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -16,8 +16,10 @@ public final class RotationUtil { /** * Rotate and mirror a coordinate pair. - * @param orig Vector to rotate. + * + * @param orig Vector to rotate. * @param r Rotation + * * @return */ public static Vector2 rotateVector(Vector2 orig, Rotation r) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java index 49a54e93f..b01896516 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java @@ -1,10 +1,10 @@ package com.dfsek.terra.api.world; +import java.util.function.IntConsumer; + import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.structure.feature.BinaryColumn; -import java.util.function.IntConsumer; - /** * A single vertical column of a world. diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java index a4788a986..65dc552b9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.world.generator; -import com.dfsek.terra.api.util.math.Sampler; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -9,6 +8,7 @@ import java.util.Random; 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.math.Sampler; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.World; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java index d8ab56f85..c8c302712 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java @@ -2,6 +2,7 @@ package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.util.math.Sampler; + public interface SamplerCache { Sampler get(int x, int z); diff --git a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java index ee915ad1a..e9a66d810 100644 --- a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java +++ b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java @@ -13,6 +13,10 @@ import com.dfsek.terra.api.inject.impl.InjectorImpl; * @param Type of object to inject. */ public interface Injector { + static Injector get(T1 value) { + return new InjectorImpl<>(value); + } + /** * Add an explicit class as a target. Useful for applications where subclasses may cause issues with DI. * @@ -38,8 +42,4 @@ public interface Injector { * */ void inject(Object object) throws InjectionException; - - static Injector get(T1 value) { - return new InjectorImpl<>(value); - } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 2ce1433ae..1c20ea0ec 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -28,6 +28,7 @@ import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; import com.dfsek.terra.api.event.functional.FunctionalEventHandler; import com.dfsek.terra.api.inject.Injector; +import com.dfsek.terra.api.inject.impl.InjectorImpl; import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.registry.CheckedRegistry; @@ -41,7 +42,6 @@ import com.dfsek.terra.config.GenericLoaders; import com.dfsek.terra.config.PluginConfigImpl; import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.event.EventManagerImpl; -import com.dfsek.terra.api.inject.impl.InjectorImpl; import com.dfsek.terra.profiler.ProfilerImpl; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java index ccd9b0a0b..6e6ee04d0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java +++ b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java @@ -1,12 +1,6 @@ package com.dfsek.terra; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; -import com.dfsek.terra.api.event.events.platform.PlatformInitializationEvent; -import com.dfsek.terra.api.event.functional.FunctionalEventHandler; public class InternalAddon implements BaseAddon { diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java index 5403ba14f..b5d668848 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java @@ -27,6 +27,7 @@ public class PacksCommand implements CommandTemplate { } LangUtil.send("command.packs.main", sender); - registry.entries().forEach(entry -> LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion())); + registry.entries().forEach( + entry -> LangUtil.send("command.packs.pack", sender, entry.getID(), entry.getAuthor(), entry.getVersion())); } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index 5b294d1fc..e900d129e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -1,7 +1,5 @@ package com.dfsek.terra.commands; -import com.dfsek.terra.api.Platform; - import net.jafama.FastMath; import java.lang.reflect.Field; @@ -14,6 +12,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.command.CommandManager; import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.annotation.Argument; @@ -35,8 +34,8 @@ import com.dfsek.terra.api.command.tab.TabCompleter; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.inject.exception.InjectionException; -import com.dfsek.terra.api.util.reflection.ReflectionUtil; import com.dfsek.terra.api.inject.impl.InjectorImpl; +import com.dfsek.terra.api.util.reflection.ReflectionUtil; public class TerraCommandManager implements CommandManager { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index ee670eb33..9f3237ccd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -6,7 +6,6 @@ import java.util.LinkedHashMap; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.tectonic.LoaderRegistrar; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index f9ce0043a..c76583e78 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -13,8 +13,8 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.time.Duration; -import com.dfsek.terra.api.util.Logger; import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.util.Logger; @SuppressWarnings("FieldMayBeFinal") diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 4fca9b9b9..8206d4325 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -3,10 +3,10 @@ package com.dfsek.terra.config.lang; import java.io.File; import java.io.IOException; -import com.dfsek.terra.api.util.Logger; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.lang.Language; +import com.dfsek.terra.api.util.Logger; public final class LangUtil { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java index 976ade247..9d38317dd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java @@ -10,6 +10,7 @@ import java.util.Set; import com.dfsek.terra.api.addon.TerraAddon; +@SuppressWarnings("FieldMayBeFinal") public class ConfigPackAddonsTemplate implements ConfigTemplate { @Value("addons") @Default diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index c906b3aeb..afd14ce4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -123,7 +123,8 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.load(addonsTemplate, configuration); this.addons = addonsTemplate.getAddons(); - platform.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); + platform.getEventManager().callEvent( + new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); selfLoader.load(template, configuration); @@ -173,7 +174,8 @@ public class ConfigPackImpl implements ConfigPack { selfLoader.load(addonsTemplate, configuration); this.addons = addonsTemplate.getAddons(); - platform.getEventManager().callEvent(new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); + platform.getEventManager().callEvent( + new ConfigPackPreLoadEvent(this, template -> selfLoader.load(template, configuration))); selfLoader.load(template, configuration); @@ -364,11 +366,13 @@ public class ConfigPackImpl implements ConfigPack { private void checkDeadEntries(Platform platform) { registryMap.forEach((clazz, pair) -> ((OpenRegistryImpl) pair.getLeft()).getDeadEntries() .forEach((id, value) -> platform.getDebugLogger() - .warning("Dead entry in '" + - ReflectionUtil.typeToString( - clazz) + - "' registry: '" + - id + "'"))); + .warning( + "Dead entry in" + + " '" + + ReflectionUtil.typeToString( + clazz) + + "' registry: '" + + id + "'"))); } @SuppressWarnings({ "unchecked", "rawtypes" }) diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java index f2b88c1be..549444f97 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java @@ -1,7 +1,5 @@ package com.dfsek.terra.event; -import com.dfsek.terra.api.addon.BaseAddon; - import org.jetbrains.annotations.NotNull; import java.lang.reflect.Type; @@ -9,7 +7,7 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; -import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.functional.EventContext; diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 6239d361e..e7b6abea6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -12,7 +12,6 @@ import java.util.Map; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index 5bf886b31..fa00cc369 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -25,9 +25,8 @@ import com.dfsek.terra.api.registry.exception.DuplicateEntryException; */ public class OpenRegistryImpl implements OpenRegistry { private static final Entry NULL = new Entry<>(null); - private final Map> objects; - private static final Pattern ID_PATTERN = Pattern.compile("^[a-zA-Z0-9_-]*$"); + private final Map> objects; public OpenRegistryImpl() { objects = new HashMap<>(); @@ -69,7 +68,9 @@ public class OpenRegistryImpl implements OpenRegistry { public boolean register(String identifier, Entry value) { if(!ID_PATTERN.matcher(identifier).matches()) - throw new IllegalArgumentException("Registry ID must only contain alphanumeric characters, hyphens, and underscores. \"" + identifier + "\" is not a valid ID."); + throw new IllegalArgumentException( + "Registry ID must only contain alphanumeric characters, hyphens, and underscores. \"" + identifier + + "\" is not a valid ID."); boolean exists = objects.containsKey(identifier); objects.put(identifier, value); return exists; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index f5ea6ab06..ad3e8b9c5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -14,8 +14,8 @@ import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.inject.exception.InjectionException; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.inject.impl.InjectorImpl; +import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.registry.OpenRegistryImpl; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index 824ab6f90..74acaf9c3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -1,16 +1,15 @@ package com.dfsek.terra.world; -import com.dfsek.terra.api.Platform; - import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import net.jafama.FastMath; import org.jetbrains.annotations.NotNull; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.util.MathUtil; -import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.util.math.Sampler; +import com.dfsek.terra.api.world.World; public class SamplerCacheImpl implements com.dfsek.terra.api.world.generator.SamplerCache { diff --git a/common/implementation/src/test/java/profiler/ProfilerTest.java b/common/implementation/src/test/java/profiler/ProfilerTest.java index a3665cc7b..8b35c7ab2 100644 --- a/common/implementation/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/src/test/java/profiler/ProfilerTest.java @@ -1,40 +1,14 @@ package profiler; +import org.junit.jupiter.api.Test; + import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.profiler.ProfilerImpl; -import org.junit.jupiter.api.Test; - public class ProfilerTest { private static final Profiler PROFILER = new ProfilerImpl(); - @Test - public void testProfiler() throws InterruptedException { - //PROFILER.start(); - for(int i = 0; i < 100; i++) { - doThing(); - } - - for(int i = 0; i < 100; i++) { - doThirdOtherThing(); - } - - for(int i = 0; i < 100; i++) { - doOtherThing(); - } - PROFILER.stop(); - PROFILER.push("thing"); - PROFILER.push("thing2"); - PROFILER.start(); - PROFILER.pop("thing2"); - PROFILER.pop("thing"); - PROFILER.push("thing4"); - PROFILER.pop("thing4"); - - PROFILER.getTimings().forEach((id, timings) -> System.out.println(id + ": " + timings.toString())); - } - private static void doThing() throws InterruptedException { PROFILER.push("thing"); Thread.sleep(1); @@ -62,4 +36,30 @@ public class ProfilerTest { Thread.sleep(2); PROFILER.pop("thing4"); } + + @Test + public void testProfiler() throws InterruptedException { + //PROFILER.start(); + for(int i = 0; i < 100; i++) { + doThing(); + } + + for(int i = 0; i < 100; i++) { + doThirdOtherThing(); + } + + for(int i = 0; i < 100; i++) { + doOtherThing(); + } + PROFILER.stop(); + PROFILER.push("thing"); + PROFILER.push("thing2"); + PROFILER.start(); + PROFILER.pop("thing2"); + PROFILER.pop("thing"); + PROFILER.push("thing4"); + PROFILER.pop("thing4"); + + PROFILER.getTimings().forEach((id, timings) -> System.out.println(id + ": " + timings.toString())); + } } diff --git a/common/implementation/src/test/java/registry/RegistryTest.java b/common/implementation/src/test/java/registry/RegistryTest.java index dbebb3c98..4efeee9b9 100644 --- a/common/implementation/src/test/java/registry/RegistryTest.java +++ b/common/implementation/src/test/java/registry/RegistryTest.java @@ -1,14 +1,13 @@ package registry; +import org.junit.jupiter.api.Test; + import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.OpenRegistry; - import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.registry.CheckedRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; @@ -25,7 +24,7 @@ public class RegistryTest { @Test public void openRegistryChecked() { OpenRegistry test = new OpenRegistryImpl<>(); - + test.registerChecked("test", "bazinga"); try { @@ -41,7 +40,7 @@ public class RegistryTest { CheckedRegistry test = new CheckedRegistryImpl<>(new OpenRegistryImpl<>()); test.register("test", "bazinga"); - + assertEquals(test.get("test"), "bazinga"); try { diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index 5ec665b01..35af2be96 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -1,10 +1,5 @@ package com.dfsek.terra.addon; -import com.dfsek.terra.addon.exception.AddonLoadException; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; -import com.dfsek.terra.api.inject.Injector; - import java.io.IOException; import java.io.UncheckedIOException; import java.lang.reflect.InvocationTargetException; @@ -14,6 +9,10 @@ import java.nio.file.Path; import java.util.jar.JarFile; import java.util.stream.Collectors; +import com.dfsek.terra.addon.exception.AddonLoadException; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; + public class BootstrapAddonLoader implements BootstrapBaseAddon> { private final Platform platform; @@ -32,13 +31,13 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon getPlatformAddon() { - return Optional.of(new BukkitAddon(this)); - } - private BukkitBiome parseBiome(String id) throws LoadException { if(!id.startsWith("minecraft:")) throw new LoadException("Invalid biome identifier " + id); return new BukkitBiome(org.bukkit.block.Biome.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 5561d6e8f..b38b78c39 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -1,7 +1,5 @@ package com.dfsek.terra.bukkit.listeners; -import com.dfsek.terra.api.Platform; - import org.bukkit.Material; import org.bukkit.TreeType; import org.bukkit.block.Block; @@ -11,6 +9,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.world.StructureGrowEvent; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.config.WorldConfig; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.world.Tree; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 8e224d110..623ca73a9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -1,11 +1,11 @@ package com.dfsek.terra.bukkit.listeners; -import com.dfsek.terra.api.Platform; - import io.papermc.paper.event.world.StructureLocateEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import com.dfsek.terra.api.Platform; + public class PaperListener implements Listener { private final Platform platform; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 86558b508..6a515fc3b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,7 +1,5 @@ package com.dfsek.terra.bukkit.listeners; -import com.dfsek.terra.api.Platform; - import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -10,6 +8,8 @@ import org.bukkit.event.entity.EntitySpawnEvent; import org.bukkit.event.entity.VillagerAcquireTradeEvent; import org.bukkit.event.entity.VillagerCareerChangeEvent; +import com.dfsek.terra.api.Platform; + /** * Listener to load on Spigot servers, contains Villager crash prevention and hacky ender eye redirection. diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index c14e0c0ce..06c5f17e4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -1,7 +1,5 @@ package com.dfsek.terra.bukkit.population; -import com.dfsek.terra.api.Platform; - import org.bukkit.generator.BlockPopulator; import org.jetbrains.annotations.NotNull; @@ -10,6 +8,7 @@ import java.io.IOException; import java.util.HashSet; import java.util.Random; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.World; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java index 65e4758dc..6fb53556e 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java @@ -1,12 +1,11 @@ package com.dfsek.terra.bukkit.world; -import com.dfsek.terra.api.Platform; - import org.bukkit.TreeType; import java.util.Locale; import java.util.Random; +import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.util.collection.MaterialSet; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index 8f20720b8..228394db7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -2,10 +2,6 @@ package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; - -import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.fabric.util.FabricUtil; - import net.fabricmc.loader.api.FabricLoader; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; @@ -14,16 +10,15 @@ import org.apache.logging.log4j.LogManager; import java.io.File; import java.util.HashSet; -import java.util.Optional; import java.util.Set; import com.dfsek.terra.AbstractPlatform; -import com.dfsek.terra.api.util.Logger; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.util.Logger; import com.dfsek.terra.api.util.generic.Lazy; import com.dfsek.terra.config.lang.LangUtil; +import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.handle.FabricItemHandle; import com.dfsek.terra.fabric.handle.FabricWorldHandle; import com.dfsek.terra.fabric.util.ProtoBiome; @@ -37,20 +32,20 @@ public class PlatformImpl extends AbstractPlatform { private final Set worlds = new HashSet<>(); - public void addWorld(ServerWorld world) { - worlds.add(world); - } - public PlatformImpl() { load(); } + public void addWorld(ServerWorld world) { + worlds.add(world); + } + @Override public boolean reload() { getTerraConfig().load(this); LangUtil.load(getTerraConfig().getLanguage(), this); // Load language. boolean succeed = getRawConfigRegistry().loadAll(this); - + worlds.forEach(world -> { FabricChunkGeneratorWrapper chunkGeneratorWrapper = ((FabricChunkGeneratorWrapper) world.getChunkManager().getChunkGenerator()); chunkGeneratorWrapper.setPack(getConfigRegistry().get(chunkGeneratorWrapper.getPack().getID())); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index ebae50251..d763b7afb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -60,9 +60,8 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C ); private final long seed; - private ChunkGenerator delegate; private final TerraBiomeSource biomeSource; - + private ChunkGenerator delegate; private ConfigPack pack; private ServerWorld world; @@ -77,14 +76,6 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C this.seed = seed; } - public void setPack(ConfigPack pack) { - this.pack = pack; - this.delegate = pack.getGeneratorProvider().newInstance(pack); - biomeSource.setPack(pack); - - delegate.getPlatform().logger().info("Loading world with config pack " + pack.getID()); - } - @Override protected Codec getCodec() { return CODEC; @@ -235,6 +226,14 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C return pack; } + public void setPack(ConfigPack pack) { + this.pack = pack; + this.delegate = pack.getGeneratorProvider().newInstance(pack); + biomeSource.setPack(pack); + + delegate.getPlatform().logger().info("Loading world with config pack " + pack.getID()); + } + public void setWorld(ServerWorld world) { this.world = world; } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 0ca50b7d0..3d2ad5bdf 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -36,10 +36,6 @@ public class TerraBiomeSource extends BiomeSource { private final long seed; private ConfigPack pack; - public void setPack(ConfigPack pack) { - this.pack = pack; - } - public TerraBiomeSource(Registry biomes, long seed, ConfigPack pack) { super(biomes.stream() .filter(biome -> Objects.requireNonNull(biomes.getId(biome)) @@ -51,6 +47,10 @@ public class TerraBiomeSource extends BiomeSource { this.pack = pack; } + public void setPack(ConfigPack pack) { + this.pack = pack; + } + @Override protected Codec getCodec() { return CODEC; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java index e5836d657..a17ccdba8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java @@ -18,6 +18,7 @@ public class ServerMainMixin { "Lnet/minecraft/util/registry/DynamicRegistryManager$Impl;")) private static void injectConstructor(String[] args, CallbackInfo ci) { FabricEntryPoint.getPlatform().getEventManager().callEvent( - new PlatformInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks and stuff + new PlatformInitializationEvent()); // Load during MinecraftServer construction, after other mods have registered blocks + // and stuff } } diff --git a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java index e89eaee51..932874e02 100644 --- a/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java +++ b/platforms/region/src/main/java/com/dfsek/terra/platform/DirectWorld.java @@ -59,7 +59,7 @@ public class DirectWorld implements World { @Override public void setBlockData(int x, int y, int z, BlockState data, boolean physics) { - + } @Override diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java index 6e436d02c..8b19f381f 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java @@ -5,9 +5,9 @@ import org.spongepowered.api.Sponge; import java.io.File; import com.dfsek.terra.AbstractPlatform; -import com.dfsek.terra.api.util.Logger; import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.WorldHandle; +import com.dfsek.terra.api.util.Logger; import com.dfsek.terra.sponge.handle.SpongeWorldHandle; From 208cbbd8e0f916b8652efb295fb13055d9c50114 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 17:22:29 -0700 Subject: [PATCH 80/97] addon initialization --- common/addons/api-addon-loader | 2 +- common/addons/biome-provider-image | 2 +- common/addons/biome-provider-pipeline | 2 +- common/addons/biome-provider-single | 2 +- common/addons/chunk-generator-noise-3d | 2 +- common/addons/config-biome | 2 +- common/addons/config-carver | 2 +- common/addons/config-distributors | 2 +- common/addons/config-flora | 2 +- common/addons/config-locators | 2 +- common/addons/config-noise-function | 2 +- common/addons/config-ore | 2 +- common/addons/config-palette | 2 +- common/addons/config-structure | 2 +- common/addons/generation-stage-feature | 2 +- common/addons/language-yaml | 2 +- common/addons/manifest-addon-loader | 2 +- common/addons/structure-sponge-loader | 2 +- common/addons/structure-terrascript-loader | 2 +- .../dfsek/terra/api/config/ConfigPack.java | 5 ++++- .../dfsek/terra/config/GenericLoaders.java | 3 +++ .../config/loaders/VersionRangeLoader.java | 22 +++++++++++++++++++ .../config/pack/ConfigPackAddonsTemplate.java | 10 +++++---- .../terra/config/pack/ConfigPackImpl.java | 7 +++--- .../event/FunctionalEventHandlerImpl.java | 2 +- 25 files changed, 59 insertions(+), 28 deletions(-) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader index 6e250ed49..bcea245c2 160000 --- a/common/addons/api-addon-loader +++ b/common/addons/api-addon-loader @@ -1 +1 @@ -Subproject commit 6e250ed495db23d88d252fb017cf0588f3d9057d +Subproject commit bcea245c217dead342bb927b81cc4cb6c8e27e5d diff --git a/common/addons/biome-provider-image b/common/addons/biome-provider-image index 8df4f9176..9e0444d5c 160000 --- a/common/addons/biome-provider-image +++ b/common/addons/biome-provider-image @@ -1 +1 @@ -Subproject commit 8df4f9176e4d2c4efc9cde26837067d59e1a4393 +Subproject commit 9e0444d5c46fa7c96eb80685e8782fbcf3c63897 diff --git a/common/addons/biome-provider-pipeline b/common/addons/biome-provider-pipeline index 5892c95cc..21316418d 160000 --- a/common/addons/biome-provider-pipeline +++ b/common/addons/biome-provider-pipeline @@ -1 +1 @@ -Subproject commit 5892c95ccbe2885aef95e01fb8e5650f9ad947ca +Subproject commit 21316418dafd46de2035d5f16e72f3312eeb0c8c diff --git a/common/addons/biome-provider-single b/common/addons/biome-provider-single index da104d0a6..fe5a6f5ec 160000 --- a/common/addons/biome-provider-single +++ b/common/addons/biome-provider-single @@ -1 +1 @@ -Subproject commit da104d0a6523fde205b6fb9c82226dd20682603c +Subproject commit fe5a6f5ec0707515316debafda010c1aaa302259 diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d index 0e0652491..6dd30020d 160000 --- a/common/addons/chunk-generator-noise-3d +++ b/common/addons/chunk-generator-noise-3d @@ -1 +1 @@ -Subproject commit 0e06524911da594e508262155525bdcfa1ce6fff +Subproject commit 6dd30020de9c82fd374272d514a09687ab1bae4c diff --git a/common/addons/config-biome b/common/addons/config-biome index b0256d2f5..86742e212 160000 --- a/common/addons/config-biome +++ b/common/addons/config-biome @@ -1 +1 @@ -Subproject commit b0256d2f5f97c22d337683ca13cbc1ffd2260a7a +Subproject commit 86742e212c9d2df393ce80716824ef7ffa847608 diff --git a/common/addons/config-carver b/common/addons/config-carver index e61fa64bf..5e7d8084d 160000 --- a/common/addons/config-carver +++ b/common/addons/config-carver @@ -1 +1 @@ -Subproject commit e61fa64bf8e2fa395e47296fb99f1f179b8bf158 +Subproject commit 5e7d8084de003664be0e08b924d98c4c598ef585 diff --git a/common/addons/config-distributors b/common/addons/config-distributors index ad2e4f20e..63f907860 160000 --- a/common/addons/config-distributors +++ b/common/addons/config-distributors @@ -1 +1 @@ -Subproject commit ad2e4f20e809a52befd20f575161d5b593408ecf +Subproject commit 63f9078601657ce79cfd7a94c926ccbb63eed73a diff --git a/common/addons/config-flora b/common/addons/config-flora index b097f3e27..0fe48c6d7 160000 --- a/common/addons/config-flora +++ b/common/addons/config-flora @@ -1 +1 @@ -Subproject commit b097f3e270daa93a240ee86a8b0857b69379ac94 +Subproject commit 0fe48c6d7bd03dffc9ca5d7ef35baa9b29ca53fa diff --git a/common/addons/config-locators b/common/addons/config-locators index 2249b8cab..9aca4dad9 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit 2249b8cab4ec3063887110efe584d60ca55e5481 +Subproject commit 9aca4dad904dc1e0b4a4e2e8cb89683e68890aa7 diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function index 3fd6b1cbd..2d8de2687 160000 --- a/common/addons/config-noise-function +++ b/common/addons/config-noise-function @@ -1 +1 @@ -Subproject commit 3fd6b1cbdb7cad9dc68208c9622c5a311be9660d +Subproject commit 2d8de2687e4521363b911be961b3a8ea154f5e69 diff --git a/common/addons/config-ore b/common/addons/config-ore index 56ff75af0..0b6991033 160000 --- a/common/addons/config-ore +++ b/common/addons/config-ore @@ -1 +1 @@ -Subproject commit 56ff75af0d44c2c49aa770167fb7fd5b65839550 +Subproject commit 0b6991033d2e8c762536b9861419964bf7440bbb diff --git a/common/addons/config-palette b/common/addons/config-palette index 51013ccc5..46fd70e97 160000 --- a/common/addons/config-palette +++ b/common/addons/config-palette @@ -1 +1 @@ -Subproject commit 51013ccc555e1f21dca04646e38215c8143674ba +Subproject commit 46fd70e9715ca832ca915c8da6e73f4aa8e854f9 diff --git a/common/addons/config-structure b/common/addons/config-structure index 9059b861e..0ca3c86b4 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit 9059b861e7551c6923b5b52a7c2434913302aa7f +Subproject commit 0ca3c86b4d0b16870ecb96f6533f7bcd53458e05 diff --git a/common/addons/generation-stage-feature b/common/addons/generation-stage-feature index 3070a11d7..0d359ca0a 160000 --- a/common/addons/generation-stage-feature +++ b/common/addons/generation-stage-feature @@ -1 +1 @@ -Subproject commit 3070a11d7610adbff4aef8f5f5341f6fadc9e9c4 +Subproject commit 0d359ca0af30b2bf2a8b383ecba0976ad7f00e71 diff --git a/common/addons/language-yaml b/common/addons/language-yaml index 032c1b45d..1a34bf0bc 160000 --- a/common/addons/language-yaml +++ b/common/addons/language-yaml @@ -1 +1 @@ -Subproject commit 032c1b45ddfa6f65c2398b63f7d6e407fbdc7c14 +Subproject commit 1a34bf0bcbdc1b032437baa5e4fdf93e7dbba60c diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 31456bf9c..7ef78d5d7 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 31456bf9cd9bffdefbac263a4e62b74c8b58ea21 +Subproject commit 7ef78d5d79ea03c86d6fa47730ad3473447389a1 diff --git a/common/addons/structure-sponge-loader b/common/addons/structure-sponge-loader index c6f85221c..0058c9420 160000 --- a/common/addons/structure-sponge-loader +++ b/common/addons/structure-sponge-loader @@ -1 +1 @@ -Subproject commit c6f85221c06f5311b2cc62d6f0d5eafc660e2544 +Subproject commit 0058c94206906bdb023ac711f0936ee53d1725d3 diff --git a/common/addons/structure-terrascript-loader b/common/addons/structure-terrascript-loader index a21413314..4561fffc2 160000 --- a/common/addons/structure-terrascript-loader +++ b/common/addons/structure-terrascript-loader @@ -1 +1 @@ -Subproject commit a21413314abfd94f51e35de445719ca45e84315f +Subproject commit 4561fffc278a01263d01daf26e37a7ba143aa99b diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index 7a3412c81..e170c76c3 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -5,6 +5,9 @@ import java.util.List; import java.util.Map; import java.util.Set; +import ca.solostudios.strata.version.VersionRange; + +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.meta.RegistryFactory; @@ -24,7 +27,7 @@ public interface ConfigPack extends LoaderRegistrar, LoaderHolder, RegistryHolde void registerConfigType(ConfigType type, String id, int priority); - Set addons(); + Map addons(); boolean vanillaMobs(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index 9f3237ccd..e5f652a7d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -1,5 +1,6 @@ package com.dfsek.terra.config; +import ca.solostudios.strata.version.VersionRange; import com.dfsek.tectonic.loading.TypeRegistry; import java.util.LinkedHashMap; @@ -16,6 +17,7 @@ import com.dfsek.terra.config.loaders.LinkedHashMapLoader; import com.dfsek.terra.config.loaders.MaterialSetLoader; import com.dfsek.terra.config.loaders.ProbabilityCollectionLoader; import com.dfsek.terra.config.loaders.RangeLoader; +import com.dfsek.terra.config.loaders.VersionRangeLoader; public class GenericLoaders implements LoaderRegistrar { @@ -30,6 +32,7 @@ public class GenericLoaders implements LoaderRegistrar { registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) .registerLoader(Range.class, new RangeLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) + .registerLoader(VersionRange.class, new VersionRangeLoader()) .registerLoader(LinkedHashMap.class, new LinkedHashMapLoader()); if(platform != null) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java new file mode 100644 index 000000000..f7243134d --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.config.loaders; + +import ca.solostudios.strata.Versions; +import ca.solostudios.strata.parser.tokenizer.ParseException; +import ca.solostudios.strata.version.VersionRange; +import com.dfsek.tectonic.exception.LoadException; +import com.dfsek.tectonic.loading.ConfigLoader; +import com.dfsek.tectonic.loading.TypeLoader; + +import java.lang.reflect.AnnotatedType; + + +public class VersionRangeLoader implements TypeLoader { + @Override + public VersionRange load(AnnotatedType t, Object c, ConfigLoader loader) throws LoadException { + try { + return Versions.parseVersionRange((String) c); + } catch(ParseException e) { + throw new LoadException("Failed to parse version range: ", e); + } + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java index 9d38317dd..e6f813211 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java @@ -1,23 +1,25 @@ package com.dfsek.terra.config.pack; +import ca.solostudios.strata.version.VersionRange; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.ConfigTemplate; +import java.util.HashMap; import java.util.HashSet; -import java.util.Set; +import java.util.Map; -import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.BaseAddon; @SuppressWarnings("FieldMayBeFinal") public class ConfigPackAddonsTemplate implements ConfigTemplate { @Value("addons") @Default - private Set addons = new HashSet<>(); + private Map addons = new HashMap<>(); - public Set getAddons() { + public Map getAddons() { return addons; } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index afd14ce4e..e793d377d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -1,5 +1,6 @@ package com.dfsek.terra.config.pack; +import ca.solostudios.strata.version.VersionRange; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.tectonic.abstraction.AbstractConfigLoader; import com.dfsek.tectonic.abstraction.AbstractConfiguration; @@ -34,7 +35,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; +import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigType; @@ -90,7 +91,7 @@ public class ConfigPackImpl implements ConfigPack { private final Configuration configuration; - private final Set addons; + private final Map addons; private final BiomeProvider seededBiomeProvider; @@ -237,7 +238,7 @@ public class ConfigPackImpl implements ConfigPack { } @Override - public Set addons() { + public Map addons() { return addons; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index e7b6abea6..2143c10e4 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -35,7 +35,7 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler { contextMap.getOrDefault(event.getClass(), Collections.emptyList()).forEach(context -> { try { if(event instanceof PackEvent) { - if((context.isGlobal() || ((PackEvent) event).getPack().addons().contains(context.getAddon()))) { + if((context.isGlobal() || ((PackEvent) event).getPack().addons().containsKey(context.getAddon()))) { ((EventContextImpl) context).handle(event); } } else { From 8fc3977236dbbbf665ac3fce17291b0f49cb3a41 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 17:23:27 -0700 Subject: [PATCH 81/97] remove AddonRegistry --- .../terra/registry/master/AddonRegistry.java | 114 ------------------ 1 file changed, 114 deletions(-) delete mode 100644 common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java deleted file mode 100644 index ad3e8b9c5..000000000 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.dfsek.terra.registry.master; - -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.logging.LogManager; -import java.util.logging.Logger; - -import com.dfsek.terra.addon.AddonClassLoader; -import com.dfsek.terra.addon.AddonPool; -import com.dfsek.terra.addon.PreLoadAddon; -import com.dfsek.terra.addon.exception.AddonLoadException; -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.inject.exception.InjectionException; -import com.dfsek.terra.api.inject.impl.InjectorImpl; -import com.dfsek.terra.api.registry.exception.DuplicateEntryException; -import com.dfsek.terra.registry.OpenRegistryImpl; - - -public class AddonRegistry extends OpenRegistryImpl { - private final Platform platform; - - public AddonRegistry(Platform platform) { - this.platform = platform; - } - - public AddonRegistry(TerraAddon addon, Platform platform) { - this.platform = platform; - register(addon); - } - - @Override - public boolean register(String identifier, TerraAddon addon) { - if(contains(identifier)) throw new IllegalArgumentException("Addon " + identifier + " is already registered."); - addon.initialize(); - platform.logger().info("Loaded addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); - return super.register(identifier, addon); - } - - @Override - public void clear() { - throw new UnsupportedOperationException(); - } - - public boolean register(TerraAddon addon) { - return register(addon.getName(), addon); - } - - public boolean loadAll(ClassLoader parent) { - InjectorImpl pluginInjector = new InjectorImpl<>(platform); - pluginInjector.addExplicitTarget(Platform.class); - - boolean valid = true; - File addonsFolder = new File(platform.getDataFolder(), "addons"); - addonsFolder.mkdirs(); - - AddonPool pool = new AddonPool(); - - try { - for(File jar : addonsFolder.listFiles(file -> file.getName().endsWith(".jar"))) { - platform.logger().info("Loading Addon(s) from: " + jar.getName()); - for(Class addonClass : AddonClassLoader.fetchAddonClasses(jar, parent)) { - pool.add(new PreLoadAddon(addonClass, jar)); - } - } - - pool.buildAll(); - - for(PreLoadAddon addon : pool.getAddons()) { - Class addonClass = addon.getAddonClass(); - Constructor constructor; - - String logPrefix = "Terra:" + addon.getId(); - Logger addonLogger = Logger.getLogger(logPrefix); - - if(!LogManager.getLogManager().addLogger(addonLogger)) { - addonLogger = LogManager.getLogManager().getLogger(logPrefix); - } - - InjectorImpl loggerInjector = new InjectorImpl<>(addonLogger); - loggerInjector.addExplicitTarget(Logger.class); - - try { - constructor = addonClass.getConstructor(); - } catch(NoSuchMethodException e) { - throw new AddonLoadException("Addon class has no valid constructor: " + addonClass.getCanonicalName(), e); - } - TerraAddon loadedAddon; - try { - loadedAddon = constructor.newInstance(); - pluginInjector.inject(loadedAddon); - loggerInjector.inject(loadedAddon); - } catch(InstantiationException | IllegalAccessException | InvocationTargetException | InjectionException e) { - throw new AddonLoadException("Failed to load com.dfsek.terra.addon \" + " + addon.getId() + "\": ", e); - } - try { - registerChecked(loadedAddon.getName(), loadedAddon); - } catch(DuplicateEntryException e) { - valid = false; - platform.logger().severe("Duplicate addon ID; addon with ID " + loadedAddon.getName() + " is already loaded."); - platform.logger().severe("Existing addon class: " + get(loadedAddon.getName()).getClass().getCanonicalName()); - platform.logger().severe("Duplicate addon class: " + addonClass.getCanonicalName()); - } - } - } catch(AddonLoadException | IOException e) { - e.printStackTrace(); - valid = false; - } - - return valid; - } -} From 46b918f9be98f21b1395f8dd0ee0ab77d5fc65c5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 18:00:23 -0700 Subject: [PATCH 82/97] load platform addons --- .../main/java/com/dfsek/terra/AbstractPlatform.java | 9 +++++++++ .../java/com/dfsek/terra/fabric/FabricAddon.java | 13 +++++++++---- .../java/com/dfsek/terra/fabric/PlatformImpl.java | 9 +++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 1c20ea0ec..8fb9c6810 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -118,6 +118,10 @@ public abstract class AbstractPlatform implements Platform { return eventManager; } + protected Optional platformAddon() { + return Optional.empty(); + } + @Override public Profiler getProfiler() { return profiler; @@ -192,6 +196,11 @@ public abstract class AbstractPlatform implements Platform { addonRegistry.register(internalAddon.getID(), internalAddon); + platformAddon().ifPresent(baseAddon -> { + baseAddon.initialize(); + addonRegistry.register(baseAddon.getID(), baseAddon); + }); + BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(this); Path addonsFolder = getDataFolder().toPath().resolve("addons"); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java index bcdf9bb5f..b634354e9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -1,6 +1,9 @@ package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.ConfigException; + +import com.dfsek.terra.api.addon.BaseAddon; + import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; @@ -29,10 +32,7 @@ import com.dfsek.terra.fabric.event.BiomeRegistrationEvent; import com.dfsek.terra.fabric.util.FabricUtil; -@Addon("terra-fabric") -@Author("Terra") -@Version("1.0.0") -public final class FabricAddon extends TerraAddon { +public final class FabricAddon implements BaseAddon { private final PlatformImpl terraFabricPlugin; private final Map> templates = new HashMap<>(); @@ -118,4 +118,9 @@ public final class FabricAddon extends TerraAddon { public Map> getTemplates() { return templates; } + + @Override + public String getID() { + return "terra-fabric"; + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index 228394db7..014ca644b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -2,6 +2,9 @@ package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.TypeRegistry; + +import com.dfsek.terra.api.addon.BaseAddon; + import net.fabricmc.loader.api.FabricLoader; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; @@ -10,6 +13,7 @@ import org.apache.logging.log4j.LogManager; import java.io.File; import java.util.HashSet; +import java.util.Optional; import java.util.Set; import com.dfsek.terra.AbstractPlatform; @@ -54,6 +58,11 @@ public class PlatformImpl extends AbstractPlatform { return succeed; } + @Override + protected Optional platformAddon() { + return Optional.of(new FabricAddon(this)); + } + @Override public String platformName() { return "Fabric"; From ceeb59301e1f3810c4a19618bdcf956d4c5e86f0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Nov 2021 19:22:27 -0700 Subject: [PATCH 83/97] remove unused gradle enterprise stuff --- settings.gradle.kts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 91b4388dc..bf354a7d4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,15 +27,3 @@ pluginManagement { gradlePluginPortal() } } - -plugins { - id("com.gradle.enterprise") version "3.4.1" -} - -gradleEnterprise { - buildScan { - termsOfServiceUrl = "https://gradle.com/terms-of-service" - termsOfServiceAgree = "yes" -// publishAlwaysIf(true) - } -} From c53aa123772a84909fbe92ceff9033adb27af640 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 18 Nov 2021 21:13:33 -0700 Subject: [PATCH 84/97] addon dependency sorting --- common/api/addons/build.gradle.kts | 1 + .../com/dfsek/terra/api/addon/BaseAddon.java | 12 +++ .../com/dfsek/terra/api/addon/TerraAddon.java | 7 +- .../com/dfsek/terra/AbstractPlatform.java | 26 ++++--- .../java/com/dfsek/terra/InternalAddon.java | 9 +++ .../dfsek/terra/addon/DependencySorter.java | 73 +++++++++++++++++++ .../CircularDependencyException.java | 11 +++ .../addon/dependency/DependencyException.java | 13 ++++ .../DependencyVersionException.java | 11 +++ .../terra/addon/BootstrapAddonLoader.java | 10 +++ .../com/dfsek/terra/fabric/FabricAddon.java | 9 ++- 11 files changed, 170 insertions(+), 12 deletions(-) create mode 100644 common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java create mode 100644 common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java diff --git a/common/api/addons/build.gradle.kts b/common/api/addons/build.gradle.kts index 4936c5616..7c41547a4 100644 --- a/common/api/addons/build.gradle.kts +++ b/common/api/addons/build.gradle.kts @@ -1,3 +1,4 @@ dependencies { "shadedApi"(project(":common:api:util")) + "shadedApi"("ca.solo-studios:strata:1.0.0") } diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java index 3a131be7b..cf29931f6 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java @@ -1,8 +1,20 @@ package com.dfsek.terra.api.addon; +import ca.solostudios.strata.version.Version; +import ca.solostudios.strata.version.VersionRange; + import com.dfsek.terra.api.util.StringIdentifiable; +import java.util.Collections; +import java.util.Map; + public interface BaseAddon extends StringIdentifiable { default void initialize() { } + + default Map getDependencies() { + return Collections.emptyMap(); + } + + Version getVersion(); } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java index 0cb3e5ba9..92fe2a7a3 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java @@ -1,6 +1,7 @@ package com.dfsek.terra.api.addon; +import ca.solostudios.strata.Versions; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.addon.annotations.Addon; @@ -11,6 +12,8 @@ import com.dfsek.terra.api.addon.annotations.Version; /** * Represents an entry point for an com.dfsek.terra.addon. Implementations must be annotated with {@link Addon}. */ + +//todo delete this public abstract class TerraAddon implements BaseAddon { /** * Invoked immediately after an com.dfsek.terra.addon is loaded. @@ -22,9 +25,9 @@ public abstract class TerraAddon implements BaseAddon { * * @return Addon version. */ - public final @NotNull String getVersion() { + public final @NotNull ca.solostudios.strata.version.Version getVersion() { Version version = getClass().getAnnotation(Version.class); - return version == null ? "0.1.0" : version.value(); + return Versions.getVersion(1, 2, 3); } /** diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 8fb9c6810..9497e3d45 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -13,11 +13,13 @@ import java.io.OutputStream; import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; import com.dfsek.terra.addon.BootstrapAddonLoader; +import com.dfsek.terra.addon.DependencySorter; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.BaseAddon; import com.dfsek.terra.api.command.CommandManager; @@ -137,8 +139,6 @@ public abstract class AbstractPlatform implements Platform { logger().info("Initializing Terra..."); - getPlatformAddon().ifPresent(addon -> addonRegistry.register(addon.getID(), addon)); - try(InputStream stream = getClass().getResourceAsStream("/config.yml")) { File configFile = new File(getDataFolder(), "config.yml"); if(!configFile.exists()) { @@ -192,13 +192,17 @@ public abstract class AbstractPlatform implements Platform { profiler.start(); } + List addonList = new ArrayList<>(); + InternalAddon internalAddon = new InternalAddon(); - addonRegistry.register(internalAddon.getID(), internalAddon); + addonList.add(internalAddon); + + getPlatformAddon().ifPresent(addonList::add); platformAddon().ifPresent(baseAddon -> { baseAddon.initialize(); - addonRegistry.register(baseAddon.getID(), baseAddon); + addonList.add(baseAddon); }); BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(this); @@ -212,13 +216,17 @@ public abstract class AbstractPlatform implements Platform { .forEach(bootstrap -> { platformInjector.inject(bootstrap); bootstrap.loadAddons(addonsFolder, getClass().getClassLoader()) - .forEach(addon -> { - platformInjector.inject(addon); - addon.initialize(); - addonRegistry.register(addon.getID(), addon); - }); + .forEach(addonList::add); }); + DependencySorter sorter = new DependencySorter(); + addonList.forEach(sorter::add); + sorter.sort().forEach(addon -> { + platformInjector.inject(addon); + addon.initialize(); + addonRegistry.register(addon.getID(), addon); + }); + eventManager .getHandler(FunctionalEventHandler.class) .register(internalAddon, PlatformInitializationEvent.class) diff --git a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java index 6e6ee04d0..3b8e9567d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java +++ b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java @@ -1,11 +1,20 @@ package com.dfsek.terra; +import ca.solostudios.strata.Versions; +import ca.solostudios.strata.version.Version; + import com.dfsek.terra.api.addon.BaseAddon; public class InternalAddon implements BaseAddon { + private static final Version VERSION = Versions.getVersion(1, 0, 0); @Override public String getID() { return "terra"; } + + @Override + public Version getVersion() { + return VERSION; + } } diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java new file mode 100644 index 000000000..b343e41f8 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java @@ -0,0 +1,73 @@ +package com.dfsek.terra.addon; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.dfsek.terra.addon.dependency.CircularDependencyException; +import com.dfsek.terra.addon.dependency.DependencyException; +import com.dfsek.terra.addon.dependency.DependencyVersionException; +import com.dfsek.terra.api.addon.BaseAddon; + + +public class DependencySorter { + private final Map addons = new HashMap<>(); + private final Map visited = new HashMap<>(); + + private final List addonList = new ArrayList<>(); + + public void add(BaseAddon addon) { + addons.put(addon.getID(), addon); + visited.put(addon, false); + addonList.add(addon); + } + + private void sortDependencies(BaseAddon addon, List sort) { + addon.getDependencies().forEach((id, range) -> { + if(!addons.containsKey(id)) { + throw new DependencyException("Addon " + addon.getID() + " specifies dependency on " + id + ", versions " + range + ", but no such addon is installed."); + } + + BaseAddon dependency = addons.get(id); + + if(!range.isSatisfiedBy(dependency.getVersion())) { + throw new DependencyVersionException("Addon " + addon.getID() + " specifies dependency on " + id + ", versions " + range + ", but non-matching version " + dependency.getVersion() + " is installed.."); + } + + if(!visited.get(dependency)) { // if we've not visited it yet + visited.put(dependency, true); // we've visited it now + + if(!dependency.getDependencies().isEmpty()) { // if this addon has dependencies... + sortDependencies(dependency, sort); // sort them first. + } + + if(sort.contains(dependency)) { + throw new CircularDependencyException("Addon " + addon.getID() + " has circular dependency beginning with " + dependency.getID()); + } + + sort.add(dependency); // add it to the list. + } + }); + } + + public List sort() { + List sorted = new ArrayList<>(); + + for(int i = addonList.size() - 1; i >= 0; i--) { + BaseAddon addon = addonList.get(i); + addonList.remove(i); + + if(!visited.get(addon)) { // if we've not visited it yet + visited.put(addon, true); // we've visited it now + if(!addon.getDependencies().isEmpty()) { // if this addon has dependencies... + sortDependencies(addon, sorted); + } + } + + sorted.add(addon); + } + + return sorted; + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java new file mode 100644 index 000000000..65cd138d7 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addon.dependency; + +public class CircularDependencyException extends DependencyException{ + public CircularDependencyException(String message) { + super(message); + } + + public CircularDependencyException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java new file mode 100644 index 000000000..7b1f1034b --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java @@ -0,0 +1,13 @@ +package com.dfsek.terra.addon.dependency; + + + +public class DependencyException extends RuntimeException { + public DependencyException(String message) { + super(message); + } + + public DependencyException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java new file mode 100644 index 000000000..0ea0f8c88 --- /dev/null +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java @@ -0,0 +1,11 @@ +package com.dfsek.terra.addon.dependency; + +public class DependencyVersionException extends DependencyException{ + public DependencyVersionException(String message) { + super(message); + } + + public DependencyVersionException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index 35af2be96..97f4e2d85 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -9,6 +9,9 @@ import java.nio.file.Path; import java.util.jar.JarFile; import java.util.stream.Collectors; +import ca.solostudios.strata.Versions; +import ca.solostudios.strata.version.Version; + import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; @@ -17,6 +20,8 @@ import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; public class BootstrapAddonLoader implements BootstrapBaseAddon> { private final Platform platform; + private static final Version VERSION = Versions.getVersion(1, 0, 0); + public BootstrapAddonLoader(Platform platform) { this.platform = platform; } @Override @@ -66,4 +71,9 @@ public class BootstrapAddonLoader implements BootstrapBaseAddon> templates = new HashMap<>(); @@ -107,6 +109,11 @@ public final class FabricAddon implements BaseAddon { .global(); } + @Override + public Version getVersion() { + return VERSION; + } + private void injectTree(CheckedRegistry registry, String id, ConfiguredFeature tree) { try { From 84537e2f99b52596c282d596316cd5d9961b4d60 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 18 Nov 2021 21:38:33 -0700 Subject: [PATCH 85/97] fix dependency sorting --- common/addons/api-addon-loader | 2 +- common/addons/manifest-addon-loader | 2 +- .../dfsek/terra/addon/DependencySorter.java | 39 ++++++++++--------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader index bcea245c2..d9d89e15c 160000 --- a/common/addons/api-addon-loader +++ b/common/addons/api-addon-loader @@ -1 +1 @@ -Subproject commit bcea245c217dead342bb927b81cc4cb6c8e27e5d +Subproject commit d9d89e15cbd5d09c8275ae1e58236606c52bc9c1 diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 7ef78d5d7..46518ce4a 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 7ef78d5d79ea03c86d6fa47730ad3473447389a1 +Subproject commit 46518ce4a19218c8ed04f33789c3142f25ed4ab1 diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java index b343e41f8..fd8646804 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java @@ -13,39 +13,41 @@ import com.dfsek.terra.api.addon.BaseAddon; public class DependencySorter { private final Map addons = new HashMap<>(); - private final Map visited = new HashMap<>(); + private final Map visited = new HashMap<>(); private final List addonList = new ArrayList<>(); public void add(BaseAddon addon) { addons.put(addon.getID(), addon); - visited.put(addon, false); + visited.put(addon.getID(), false); addonList.add(addon); } private void sortDependencies(BaseAddon addon, List sort) { addon.getDependencies().forEach((id, range) -> { if(!addons.containsKey(id)) { - throw new DependencyException("Addon " + addon.getID() + " specifies dependency on " + id + ", versions " + range + ", but no such addon is installed."); + throw new DependencyException("Addon " + addon.getID() + " specifies dependency on " + id + ", versions " + range + + ", but no such addon is installed."); } BaseAddon dependency = addons.get(id); if(!range.isSatisfiedBy(dependency.getVersion())) { - throw new DependencyVersionException("Addon " + addon.getID() + " specifies dependency on " + id + ", versions " + range + ", but non-matching version " + dependency.getVersion() + " is installed.."); + throw new DependencyVersionException("Addon " + addon.getID() + " specifies dependency on " + id + ", versions " + range + + ", but non-matching version " + dependency.getVersion() + " is installed.."); } - if(!visited.get(dependency)) { // if we've not visited it yet - visited.put(dependency, true); // we've visited it now + if(!visited.get(dependency.getID())) { // if we've not visited it yet + visited.put(dependency.getID(), true); // we've visited it now - if(!dependency.getDependencies().isEmpty()) { // if this addon has dependencies... - sortDependencies(dependency, sort); // sort them first. - } + sortDependencies(dependency, sort); if(sort.contains(dependency)) { - throw new CircularDependencyException("Addon " + addon.getID() + " has circular dependency beginning with " + dependency.getID()); + throw new CircularDependencyException( + "Addon " + addon.getID() + " has circular dependency beginning with " + dependency.getID()); } + sort.add(dependency); // add it to the list. } }); @@ -57,15 +59,16 @@ public class DependencySorter { for(int i = addonList.size() - 1; i >= 0; i--) { BaseAddon addon = addonList.get(i); addonList.remove(i); - - if(!visited.get(addon)) { // if we've not visited it yet - visited.put(addon, true); // we've visited it now - if(!addon.getDependencies().isEmpty()) { // if this addon has dependencies... - sortDependencies(addon, sorted); - } + + System.out.println(addon.getID() + ": " + visited.get(addon.getID())); + if(!visited.get(addon.getID())) { + sortDependencies(addon, sorted); + } + + if(!visited.get(addon.getID())) { + sorted.add(addon); + visited.put(addon.getID(), true); } - - sorted.add(addon); } return sorted; From 7bf1ba13c88ae7934d080dfcd76491aeff5677e8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 18 Nov 2021 21:45:12 -0700 Subject: [PATCH 86/97] fix circular dependency checking --- common/addons/config-distributors | 2 +- common/addons/config-feature | 2 +- common/addons/config-locators | 2 +- .../dfsek/terra/addon/DependencySorter.java | 22 ++++++++++++------- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/common/addons/config-distributors b/common/addons/config-distributors index 63f907860..56bac9279 160000 --- a/common/addons/config-distributors +++ b/common/addons/config-distributors @@ -1 +1 @@ -Subproject commit 63f9078601657ce79cfd7a94c926ccbb63eed73a +Subproject commit 56bac927999a4a82f36ab2696885f2b35e1fc008 diff --git a/common/addons/config-feature b/common/addons/config-feature index 648e8a700..d2cd833fc 160000 --- a/common/addons/config-feature +++ b/common/addons/config-feature @@ -1 +1 @@ -Subproject commit 648e8a70060fed2d84bdcec17a9e9c742039a3f3 +Subproject commit d2cd833fcfc06f5785bf74ac9fb0b104908604c3 diff --git a/common/addons/config-locators b/common/addons/config-locators index 9aca4dad9..bf177a6c9 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit 9aca4dad904dc1e0b4a4e2e8cb89683e68890aa7 +Subproject commit bf177a6c93a3757954a699ce0ef4aeb9e766bc8e diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java index fd8646804..a02d9aeea 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java @@ -42,25 +42,31 @@ public class DependencySorter { sortDependencies(dependency, sort); - if(sort.contains(dependency)) { - throw new CircularDependencyException( - "Addon " + addon.getID() + " has circular dependency beginning with " + dependency.getID()); - } - - sort.add(dependency); // add it to the list. } }); } + private void checkDependencies(BaseAddon base, BaseAddon current) { + current.getDependencies().forEach((id, range) -> { + BaseAddon dependency = addons.get(id); + if(dependency.getID().equals(base.getID())) { + throw new CircularDependencyException( + "Addon " + base.getID() + " has circular dependency beginning with " + dependency.getID()); + } + checkDependencies(base, dependency); + }); + } public List sort() { List sorted = new ArrayList<>(); for(int i = addonList.size() - 1; i >= 0; i--) { BaseAddon addon = addonList.get(i); + + checkDependencies(addon, addon); + addonList.remove(i); - - System.out.println(addon.getID() + ": " + visited.get(addon.getID())); + if(!visited.get(addon.getID())) { sortDependencies(addon, sorted); } From 1028ed09892621260eea31961af43c6eaeafe262 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 18 Nov 2021 21:50:41 -0700 Subject: [PATCH 87/97] delete old addon system --- .../com/dfsek/terra/api/addon/TerraAddon.java | 61 ------------------- .../terra/api/addon/annotations/Addon.java | 21 ------- .../terra/api/addon/annotations/Author.java | 21 ------- .../terra/api/addon/annotations/Depends.java | 21 ------- .../terra/api/addon/annotations/Version.java | 21 ------- .../dfsek/terra/api/config/ConfigPack.java | 2 - .../dfsek/terra/addon/AddonClassLoader.java | 44 ------------- .../java/com/dfsek/terra/addon/AddonPool.java | 43 ------------- .../com/dfsek/terra/addon/PreLoadAddon.java | 61 ------------------- .../com/dfsek/terra/bukkit/BukkitAddon.java | 24 -------- .../com/dfsek/terra/fabric/FabricAddon.java | 3 - 11 files changed, 322 deletions(-) delete mode 100644 common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java delete mode 100644 common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java delete mode 100644 common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java delete mode 100644 common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java delete mode 100644 common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java delete mode 100644 common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java delete mode 100644 common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java delete mode 100644 platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java deleted file mode 100644 index 92fe2a7a3..000000000 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.dfsek.terra.api.addon; - - -import ca.solostudios.strata.Versions; -import org.jetbrains.annotations.NotNull; - -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; - - -/** - * Represents an entry point for an com.dfsek.terra.addon. Implementations must be annotated with {@link Addon}. - */ - -//todo delete this -public abstract class TerraAddon implements BaseAddon { - /** - * Invoked immediately after an com.dfsek.terra.addon is loaded. - */ - public abstract void initialize(); - - /** - * Gets the version of this com.dfsek.terra.addon. - * - * @return Addon version. - */ - public final @NotNull ca.solostudios.strata.version.Version getVersion() { - Version version = getClass().getAnnotation(Version.class); - return Versions.getVersion(1, 2, 3); - } - - /** - * Gets the author of this com.dfsek.terra.addon. - * - * @return Addon author. - */ - public final @NotNull String getAuthor() { - Author author = getClass().getAnnotation(Author.class); - return author == null ? "Anon Y. Mous" : author.value(); - } - - /** - * Gets the name (ID) of this com.dfsek.terra.addon. - * - * @return Addon ID. - */ - public final @NotNull String getName() { - Addon addon = getClass().getAnnotation(Addon.class); - if(addon == null) - throw new IllegalStateException( - "Addon annotation not present"); // This should never happen; the presence of this annotation is checked by the com - // .dfsek.terra.addon loader. - return addon.value(); - } - - @Override - public String getID() { - return getName(); - } -} diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java deleted file mode 100644 index a10b0bd50..000000000 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.api.addon.annotations; - -import org.jetbrains.annotations.NotNull; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Specifies that the annotated class is an entry point for a Terra com.dfsek.terra.addon. - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -public @interface Addon { - /** - * @return The ID of the com.dfsek.terra.addon. - */ - @NotNull String value(); -} diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java deleted file mode 100644 index 879e57553..000000000 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.api.addon.annotations; - -import org.jetbrains.annotations.NotNull; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Optional annotation that specifies the author of an com.dfsek.terra.addon. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface Author { - /** - * @return Name of the com.dfsek.terra.addon author. - */ - @NotNull String value(); -} diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java deleted file mode 100644 index 73c6bcb94..000000000 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.api.addon.annotations; - -import org.jetbrains.annotations.NotNull; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Optional annotation that specifies dependencies of an com.dfsek.terra.addon. - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -public @interface Depends { - /** - * @return All addons this com.dfsek.terra.addon is dependent upon. - */ - @NotNull String[] value(); -} diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java deleted file mode 100644 index b52c027ff..000000000 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dfsek.terra.api.addon.annotations; - -import org.jetbrains.annotations.NotNull; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - - -/** - * Optional annotation that specifies the version of an com.dfsek.terra.addon. - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -public @interface Version { - /** - * @return Version of the com.dfsek.terra.addon. - */ - @NotNull String value(); -} diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index e170c76c3..9f95c064a 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -3,12 +3,10 @@ package com.dfsek.terra.api.config; import java.lang.reflect.Type; import java.util.List; import java.util.Map; -import java.util.Set; import ca.solostudios.strata.version.VersionRange; import com.dfsek.terra.api.addon.BaseAddon; -import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.meta.RegistryFactory; import com.dfsek.terra.api.registry.meta.RegistryHolder; diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java index ff072ad12..e7ec26117 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java @@ -1,17 +1,7 @@ package com.dfsek.terra.addon; -import java.io.File; -import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Set; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; - -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; public class AddonClassLoader extends URLClassLoader { @@ -22,38 +12,4 @@ public class AddonClassLoader extends URLClassLoader { public AddonClassLoader(URL[] urls, ClassLoader parent) { super(urls, parent); } - - @SuppressWarnings("unchecked") - public static Set> fetchAddonClasses(File file, ClassLoader parent) throws IOException { - JarFile jarFile = new JarFile(file); - Enumeration entries = jarFile.entries(); - - try(AddonClassLoader loader = new AddonClassLoader(new URL[]{ file.toURI().toURL() }, parent)) { - - Set> set = new HashSet<>(); - while(entries.hasMoreElements()) { - JarEntry entry = entries.nextElement(); - - if(entry.isDirectory() || !entry.getName().endsWith(".class")) continue; - String className = entry.getName().substring(0, entry.getName().length() - 6).replace('/', '.'); - - try { - Class clazz = loader.loadClass(className); - - Addon addon = clazz.getAnnotation(Addon.class); - - if(addon == null) continue; - - if(!TerraAddon.class.isAssignableFrom(clazz)) - throw new IllegalArgumentException("Addon class \"" + clazz + "\" must extend TerraAddon."); - - set.add((Class) clazz); - } catch(ClassNotFoundException e) { - throw new IllegalStateException(e); // this should literally never happen, if it does something is very wrong - } - } - - return set; - } - } } diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java deleted file mode 100644 index 35faba3e0..000000000 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dfsek.terra.addon; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import com.dfsek.terra.addon.exception.AddonLoadException; - - -public class AddonPool { - private final Map pool = new HashMap<>(); - - public void add(PreLoadAddon addon) throws AddonLoadException { - if(pool.containsKey(addon.getId())) { - String message = "Duplicate com.dfsek.terra.addon ID: " + - addon.getId() + "; original ID from file: " + - pool.get(addon.getId()).getFile().getAbsolutePath() + - ", class: " + - pool.get(addon.getId()).getAddonClass().getCanonicalName() + - "Duplicate ID from file: " + - addon.getFile().getAbsolutePath() + - ", class: " + - addon.getAddonClass().getCanonicalName(); - throw new AddonLoadException(message); - } - pool.put(addon.getId(), addon); - } - - public PreLoadAddon get(String id) { - return pool.get(id); - } - - public void buildAll() throws AddonLoadException { - for(PreLoadAddon value : pool.values()) { - value.rebuildDependencies(this, value, true); - } - } - - public Set getAddons() { - return new HashSet<>(pool.values()); - } -} diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java deleted file mode 100644 index 09648bda9..000000000 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.dfsek.terra.addon; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.dfsek.terra.addon.exception.AddonLoadException; -import com.dfsek.terra.addon.exception.CircularDependencyException; -import com.dfsek.terra.addon.exception.DependencyMissingException; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Depends; - - -public class PreLoadAddon { - private final List depends = new ArrayList<>(); - private final Class addonClass; - private final String id; - private final String[] dependencies; - private final File file; - - public PreLoadAddon(Class addonClass, File file) { - this.addonClass = addonClass; - this.id = addonClass.getAnnotation(Addon.class).value(); - this.file = file; - Depends depends = addonClass.getAnnotation(Depends.class); - this.dependencies = depends == null ? new String[]{ } : depends.value(); - } - - public void rebuildDependencies(AddonPool pool, PreLoadAddon origin, boolean levelG1) throws AddonLoadException { - if(this.equals(origin) && !levelG1) - throw new CircularDependencyException( - "Detected circular dependency in addon \"" + id + "\", dependencies: " + Arrays.toString(dependencies)); - - for(String dependency : dependencies) { - PreLoadAddon preLoadAddon = pool.get(dependency); - if(preLoadAddon == null) - throw new DependencyMissingException( - "Dependency " + dependency + " was not found. Please install " + dependency + " to use " + id + "."); - depends.add(preLoadAddon); - preLoadAddon.rebuildDependencies(pool, origin, false); - } - } - - public List getDepends() { - return depends; - } - - public String getId() { - return id; - } - - public Class getAddonClass() { - return addonClass; - } - - public File getFile() { - return file; - } -} diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java deleted file mode 100644 index d032b11e3..000000000 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitAddon.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.dfsek.terra.bukkit; - -import com.dfsek.terra.api.Platform; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; -import com.dfsek.terra.api.addon.annotations.Version; - - -@Addon("Terra-Bukkit") -@Version("1.0.0") -@Author("Terra") -final class BukkitAddon extends TerraAddon { - private final Platform platform; - - public BukkitAddon(Platform platform) { - this.platform = platform; - } - - @Override - public void initialize() { - - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java index d772b2f4b..44d1a7b93 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -15,9 +15,6 @@ import net.minecraft.world.gen.feature.ConfiguredFeature; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.addon.annotations.Addon; -import com.dfsek.terra.api.addon.annotations.Author; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPostLoadEvent; import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; From 03e58f48a983c7e34224c91a285c3d9a1fcb8a63 Mon Sep 17 00:00:00 2001 From: dfsek Date: Thu, 18 Nov 2021 22:03:38 -0700 Subject: [PATCH 88/97] update README --- README.md | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 16c972468..0254fb952 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,31 @@ + +Terra Logo + # Terra -Terra is an incredibly powerful free & open-source data-driven, -platform-agnostic world generator. It allows you to create a world exactly to -your specifications, with no knowledge of Java required. +Terra is a modern world generation modding platform, primarily for Minecraft. +Terra allows complete customization of world generation with an advanced API, +tightly integrated with a powerful configuration system. + +Terra consists of several parts: + +* A voxel world generation API with emphasis on configuration and extensibility +* Several platform implementations, the layer between the API and the platform + it's running on. +* An addon loader, which allows interfacing with the Terra API in a + platform-agnostic setting +* Several "core addons," which implement the "default" configurations of Terra. + These addons can be thought of as the config "standard library" + +Terra currently officially supports the Fabric mod loader and the Bukkit API +(Paper and friends). We welcome Pull Requests implementing additional platforms! ## Downloads: -* Paper+ servers (Paper, Tuinity, Purpur, - etc): [SpigotMC](https://www.spigotmc.org/resources/85151/) * Fabric: [Modrinth](https://modrinth.com/mod/terra) / [CurseForge](https://www.curseforge.com/minecraft/mc-mods/terra-world-generator) +* Paper+ servers (Paper, Tuinity, Purpur, + etc): [SpigotMC](https://www.spigotmc.org/resources/85151/) ## Building and Running Terra From c52d8b3804b8f59bb51ecc63bf304f1817941ec8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 19 Nov 2021 08:47:17 -0700 Subject: [PATCH 89/97] relicense addons under MIT license --- common/addons/api-addon-loader | 2 +- common/addons/biome-provider-image | 2 +- common/addons/biome-provider-pipeline | 2 +- common/addons/biome-provider-single | 2 +- common/addons/chunk-generator-noise-3d | 2 +- common/addons/config-biome | 2 +- common/addons/config-carver | 2 +- common/addons/config-distributors | 2 +- common/addons/config-feature | 2 +- common/addons/config-flora | 2 +- common/addons/config-locators | 2 +- common/addons/config-noise-function | 2 +- common/addons/config-ore | 2 +- common/addons/config-palette | 2 +- common/addons/config-structure | 2 +- common/addons/generation-stage-feature | 2 +- common/addons/generation-stage-structure | 2 +- common/addons/language-yaml | 2 +- common/addons/manifest-addon-loader | 2 +- common/addons/structure-sponge-loader | 2 +- common/addons/structure-terrascript-loader | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader index d9d89e15c..32fd71661 160000 --- a/common/addons/api-addon-loader +++ b/common/addons/api-addon-loader @@ -1 +1 @@ -Subproject commit d9d89e15cbd5d09c8275ae1e58236606c52bc9c1 +Subproject commit 32fd716610600e528e2c90e7b0c069b2ddc52417 diff --git a/common/addons/biome-provider-image b/common/addons/biome-provider-image index 9e0444d5c..56984f6c0 160000 --- a/common/addons/biome-provider-image +++ b/common/addons/biome-provider-image @@ -1 +1 @@ -Subproject commit 9e0444d5c46fa7c96eb80685e8782fbcf3c63897 +Subproject commit 56984f6c08294351039a6fa675ed38482a6a8502 diff --git a/common/addons/biome-provider-pipeline b/common/addons/biome-provider-pipeline index 21316418d..9535ec13d 160000 --- a/common/addons/biome-provider-pipeline +++ b/common/addons/biome-provider-pipeline @@ -1 +1 @@ -Subproject commit 21316418dafd46de2035d5f16e72f3312eeb0c8c +Subproject commit 9535ec13d56cdd4b4120b604d91dcf5bd10c8e9f diff --git a/common/addons/biome-provider-single b/common/addons/biome-provider-single index fe5a6f5ec..8a9ea7a41 160000 --- a/common/addons/biome-provider-single +++ b/common/addons/biome-provider-single @@ -1 +1 @@ -Subproject commit fe5a6f5ec0707515316debafda010c1aaa302259 +Subproject commit 8a9ea7a4183bb1bb84347b431a786fcf6f2f87a6 diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d index 6dd30020d..37c351519 160000 --- a/common/addons/chunk-generator-noise-3d +++ b/common/addons/chunk-generator-noise-3d @@ -1 +1 @@ -Subproject commit 6dd30020de9c82fd374272d514a09687ab1bae4c +Subproject commit 37c3515197e71a9da5cbbee1a3da45c218a18b9f diff --git a/common/addons/config-biome b/common/addons/config-biome index 86742e212..c4a5807b6 160000 --- a/common/addons/config-biome +++ b/common/addons/config-biome @@ -1 +1 @@ -Subproject commit 86742e212c9d2df393ce80716824ef7ffa847608 +Subproject commit c4a5807b62beda3fdd00af48250f1b5721efe82b diff --git a/common/addons/config-carver b/common/addons/config-carver index 5e7d8084d..2c4ec246c 160000 --- a/common/addons/config-carver +++ b/common/addons/config-carver @@ -1 +1 @@ -Subproject commit 5e7d8084de003664be0e08b924d98c4c598ef585 +Subproject commit 2c4ec246c30c0b9ce31d54c81a8d5163efbf0576 diff --git a/common/addons/config-distributors b/common/addons/config-distributors index 56bac9279..25b4c79e0 160000 --- a/common/addons/config-distributors +++ b/common/addons/config-distributors @@ -1 +1 @@ -Subproject commit 56bac927999a4a82f36ab2696885f2b35e1fc008 +Subproject commit 25b4c79e0961c9a91dbf34d14f24d3bc2a7ecc73 diff --git a/common/addons/config-feature b/common/addons/config-feature index d2cd833fc..fefbeb0e9 160000 --- a/common/addons/config-feature +++ b/common/addons/config-feature @@ -1 +1 @@ -Subproject commit d2cd833fcfc06f5785bf74ac9fb0b104908604c3 +Subproject commit fefbeb0e939cfc2ffc1e33fe4e5ce40b6f3233cc diff --git a/common/addons/config-flora b/common/addons/config-flora index 0fe48c6d7..fdeec468b 160000 --- a/common/addons/config-flora +++ b/common/addons/config-flora @@ -1 +1 @@ -Subproject commit 0fe48c6d7bd03dffc9ca5d7ef35baa9b29ca53fa +Subproject commit fdeec468b16cfab39762596af1060e196abf62bd diff --git a/common/addons/config-locators b/common/addons/config-locators index bf177a6c9..c8ed23e87 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit bf177a6c93a3757954a699ce0ef4aeb9e766bc8e +Subproject commit c8ed23e87191b6cb468cdc5364d70fcf945d3fba diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function index 2d8de2687..f61efc496 160000 --- a/common/addons/config-noise-function +++ b/common/addons/config-noise-function @@ -1 +1 @@ -Subproject commit 2d8de2687e4521363b911be961b3a8ea154f5e69 +Subproject commit f61efc4965ced99c5323c834f73bbf31c3825500 diff --git a/common/addons/config-ore b/common/addons/config-ore index 0b6991033..012f51251 160000 --- a/common/addons/config-ore +++ b/common/addons/config-ore @@ -1 +1 @@ -Subproject commit 0b6991033d2e8c762536b9861419964bf7440bbb +Subproject commit 012f51251597860e3693ed03ac8a11673d3ce395 diff --git a/common/addons/config-palette b/common/addons/config-palette index 46fd70e97..60135c3ff 160000 --- a/common/addons/config-palette +++ b/common/addons/config-palette @@ -1 +1 @@ -Subproject commit 46fd70e9715ca832ca915c8da6e73f4aa8e854f9 +Subproject commit 60135c3ffd0423acdc0fc528408f30986d1c4425 diff --git a/common/addons/config-structure b/common/addons/config-structure index 0ca3c86b4..e5f233a71 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit 0ca3c86b4d0b16870ecb96f6533f7bcd53458e05 +Subproject commit e5f233a71ea1974a5a7220e21f72c9d9e74127b6 diff --git a/common/addons/generation-stage-feature b/common/addons/generation-stage-feature index 0d359ca0a..2875dd8b9 160000 --- a/common/addons/generation-stage-feature +++ b/common/addons/generation-stage-feature @@ -1 +1 @@ -Subproject commit 0d359ca0af30b2bf2a8b383ecba0976ad7f00e71 +Subproject commit 2875dd8b9bf36ddb34dbdacd6bc942c917586bb4 diff --git a/common/addons/generation-stage-structure b/common/addons/generation-stage-structure index 8af4c6c60..7cea496c0 160000 --- a/common/addons/generation-stage-structure +++ b/common/addons/generation-stage-structure @@ -1 +1 @@ -Subproject commit 8af4c6c60f68519ab2be6bae0993ede36222d695 +Subproject commit 7cea496c01fafa5f233b2e983c002b640d463b1c diff --git a/common/addons/language-yaml b/common/addons/language-yaml index 1a34bf0bc..b0e1dc7cd 160000 --- a/common/addons/language-yaml +++ b/common/addons/language-yaml @@ -1 +1 @@ -Subproject commit 1a34bf0bcbdc1b032437baa5e4fdf93e7dbba60c +Subproject commit b0e1dc7cda60c5a487ba60ea1f36fc388e352cbf diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 46518ce4a..87fb98d7a 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 46518ce4a19218c8ed04f33789c3142f25ed4ab1 +Subproject commit 87fb98d7ae97ea80cee08015a14d181b5f9111b2 diff --git a/common/addons/structure-sponge-loader b/common/addons/structure-sponge-loader index 0058c9420..0e246e395 160000 --- a/common/addons/structure-sponge-loader +++ b/common/addons/structure-sponge-loader @@ -1 +1 @@ -Subproject commit 0058c94206906bdb023ac711f0936ee53d1725d3 +Subproject commit 0e246e3958fdd88a2920e306ef2272e034aa958c diff --git a/common/addons/structure-terrascript-loader b/common/addons/structure-terrascript-loader index 4561fffc2..85a1d3ca2 160000 --- a/common/addons/structure-terrascript-loader +++ b/common/addons/structure-terrascript-loader @@ -1 +1 @@ -Subproject commit 4561fffc278a01263d01daf26e37a7ba143aa99b +Subproject commit 85a1d3ca2b6a4bd570ed31d2bdbc1da0d1ec232b From 5d3afcc82cb467f85cbabfbd654ba20d3d4f1177 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 19 Nov 2021 15:42:26 -0700 Subject: [PATCH 90/97] add license headers --- common/addons/api-addon-loader | 2 +- common/addons/biome-provider-image | 2 +- common/addons/biome-provider-pipeline | 2 +- common/addons/biome-provider-single | 2 +- common/addons/chunk-generator-noise-3d | 2 +- common/addons/config-biome | 2 +- common/addons/config-carver | 2 +- common/addons/config-distributors | 2 +- common/addons/config-feature | 2 +- common/addons/config-flora | 2 +- common/addons/config-locators | 2 +- common/addons/config-noise-function | 2 +- common/addons/config-ore | 2 +- common/addons/config-palette | 2 +- common/addons/config-structure | 2 +- common/addons/generation-stage-feature | 2 +- common/addons/language-yaml | 2 +- common/addons/manifest-addon-loader | 2 +- common/addons/structure-sponge-loader | 2 +- common/addons/structure-terrascript-loader | 2 +- .../com/dfsek/terra/api/addon/BaseAddon.java | 7 ++ .../addon/bootstrap/BootstrapBaseAddon.java | 9 +- .../main/java/com/dfsek/terra/api/Handle.java | 7 ++ .../java/com/dfsek/terra/api/Platform.java | 7 ++ .../java/com/dfsek/terra/api/addon/Addon.java | 7 ++ .../dfsek/terra/api/addon/AddonLoader.java | 7 ++ .../com/dfsek/terra/api/block/BlockType.java | 7 ++ .../terra/api/block/entity/BlockEntity.java | 7 ++ .../terra/api/block/entity/Container.java | 7 ++ .../terra/api/block/entity/MobSpawner.java | 7 ++ .../terra/api/block/entity/SerialState.java | 7 ++ .../dfsek/terra/api/block/entity/Sign.java | 7 ++ .../terra/api/block/state/BlockState.java | 7 ++ .../api/block/state/properties/Property.java | 7 ++ .../properties/base/BooleanProperty.java | 7 ++ .../state/properties/base/EnumProperty.java | 7 ++ .../state/properties/base/IntProperty.java | 7 ++ .../state/properties/base/Properties.java | 7 ++ .../block/state/properties/enums/Axis.java | 7 ++ .../state/properties/enums/Direction.java | 7 ++ .../block/state/properties/enums/Half.java | 7 ++ .../state/properties/enums/RailShape.java | 7 ++ .../properties/enums/RedstoneConnection.java | 7 ++ .../state/properties/enums/WallHeight.java | 7 ++ .../terra/api/command/CommandManager.java | 7 ++ .../terra/api/command/CommandTemplate.java | 7 ++ .../api/command/annotation/Argument.java | 7 ++ .../terra/api/command/annotation/Command.java | 7 ++ .../api/command/annotation/Subcommand.java | 7 ++ .../terra/api/command/annotation/Switch.java | 7 ++ .../annotation/inject/ArgumentTarget.java | 7 ++ .../annotation/inject/SwitchTarget.java | 7 ++ .../command/annotation/type/DebugCommand.java | 7 ++ .../annotation/type/PlayerCommand.java | 7 ++ .../command/annotation/type/WorldCommand.java | 7 ++ .../terra/api/command/arg/ArgumentParser.java | 7 ++ .../api/command/arg/DoubleArgumentParser.java | 7 ++ .../command/arg/IntegerArgumentParser.java | 7 ++ .../api/command/arg/StringArgumentParser.java | 7 ++ .../command/exception/CommandException.java | 11 +++ .../command/exception/ExecutionException.java | 11 +++ .../exception/InvalidArgumentsException.java | 11 +++ .../exception/MalformedCommandException.java | 11 +++ .../exception/SwitchFormatException.java | 11 +++ .../api/command/tab/NothingCompleter.java | 7 ++ .../terra/api/command/tab/TabCompleter.java | 7 ++ .../api/config/AbstractableTemplate.java | 7 ++ .../dfsek/terra/api/config/ConfigFactory.java | 7 ++ .../dfsek/terra/api/config/ConfigPack.java | 7 ++ .../dfsek/terra/api/config/ConfigType.java | 7 ++ .../com/dfsek/terra/api/config/Loader.java | 9 +- .../dfsek/terra/api/config/PluginConfig.java | 7 ++ .../dfsek/terra/api/config/WorldConfig.java | 7 ++ .../com/dfsek/terra/api/config/meta/Meta.java | 7 ++ .../dfsek/terra/api/entity/CommandSender.java | 7 ++ .../com/dfsek/terra/api/entity/Entity.java | 7 ++ .../dfsek/terra/api/entity/EntityType.java | 7 ++ .../com/dfsek/terra/api/entity/Player.java | 7 ++ .../dfsek/terra/api/event/EventHandler.java | 7 ++ .../dfsek/terra/api/event/EventManager.java | 7 ++ .../api/event/events/AbstractCancellable.java | 7 ++ .../terra/api/event/events/Cancellable.java | 7 ++ .../dfsek/terra/api/event/events/Event.java | 7 ++ .../api/event/events/FailThroughEvent.java | 7 ++ .../terra/api/event/events/PackEvent.java | 7 ++ .../config/ConfigurationDiscoveryEvent.java | 7 ++ .../events/config/ConfigurationLoadEvent.java | 7 ++ .../config/pack/ConfigPackLoadEvent.java | 7 ++ .../config/pack/ConfigPackPostLoadEvent.java | 7 ++ .../config/pack/ConfigPackPreLoadEvent.java | 7 ++ .../config/type/ConfigTypeLoadEvent.java | 7 ++ .../config/type/ConfigTypePostLoadEvent.java | 7 ++ .../config/type/ConfigTypePreLoadEvent.java | 7 ++ .../platform/PlatformInitializationEvent.java | 7 ++ .../world/generation/EntitySpawnEvent.java | 7 ++ .../world/generation/LootPopulateEvent.java | 7 ++ .../api/event/functional/EventContext.java | 7 ++ .../functional/FunctionalEventHandler.java | 7 ++ .../dfsek/terra/api/handle/ItemHandle.java | 7 ++ .../dfsek/terra/api/handle/WorldHandle.java | 7 ++ .../api/inventory/BlockInventoryHolder.java | 7 ++ .../dfsek/terra/api/inventory/Inventory.java | 7 ++ .../terra/api/inventory/InventoryHolder.java | 7 ++ .../com/dfsek/terra/api/inventory/Item.java | 7 ++ .../dfsek/terra/api/inventory/ItemStack.java | 7 ++ .../terra/api/inventory/item/Damageable.java | 7 ++ .../terra/api/inventory/item/Enchantment.java | 7 ++ .../terra/api/inventory/item/ItemMeta.java | 7 ++ .../com/dfsek/terra/api/lang/Language.java | 8 +- .../com/dfsek/terra/api/lang/Message.java | 7 ++ .../terra/api/profiler/ProfileFrame.java | 7 ++ .../dfsek/terra/api/profiler/Profiler.java | 7 ++ .../com/dfsek/terra/api/profiler/Timings.java | 7 ++ .../dfsek/terra/api/properties/Context.java | 7 ++ .../terra/api/properties/Properties.java | 7 ++ .../terra/api/properties/PropertyHolder.java | 7 ++ .../api/properties/annotations/Linked.java | 7 ++ .../dfsek/terra/api/structure/LootTable.java | 7 ++ .../dfsek/terra/api/structure/Structure.java | 7 ++ .../terra/api/structure/StructureSpawn.java | 7 ++ .../terra/api/structure/buffer/Buffer.java | 7 ++ .../api/structure/buffer/BufferedItem.java | 7 ++ .../buffer/buffers/DirectBuffer.java | 7 ++ .../buffer/buffers/StructureBuffer.java | 7 ++ .../structure/buffer/items/BufferedBlock.java | 7 ++ .../api/structure/buffer/items/Cell.java | 7 ++ .../configured/ConfiguredStructure.java | 7 ++ .../api/structure/feature/BinaryColumn.java | 7 ++ .../api/structure/feature/Distributor.java | 7 ++ .../terra/api/structure/feature/Feature.java | 7 ++ .../terra/api/structure/feature/Locator.java | 7 ++ .../api/structure/rotation/Rotation.java | 7 ++ .../terra/api/tectonic/LoaderHolder.java | 7 ++ .../terra/api/tectonic/LoaderRegistrar.java | 7 ++ .../dfsek/terra/api/transform/Transform.java | 7 ++ .../terra/api/transform/Transformer.java | 7 ++ .../dfsek/terra/api/transform/Validator.java | 7 ++ .../exception/AttemptsFailedException.java | 9 ++ .../exception/TransformException.java | 11 +++ .../dfsek/terra/api/util/ConstantRange.java | 7 ++ .../dfsek/terra/api/util/PopulationUtil.java | 7 ++ .../java/com/dfsek/terra/api/util/Range.java | 7 ++ .../dfsek/terra/api/util/RotationUtil.java | 90 ++++++++++--------- .../api/util/collection/MaterialSet.java | 7 ++ .../collection/ProbabilityCollection.java | 9 +- .../com/dfsek/terra/api/world/BiomeGrid.java | 7 ++ .../com/dfsek/terra/api/world/Carver.java | 7 ++ .../java/com/dfsek/terra/api/world/Chunk.java | 13 ++- .../dfsek/terra/api/world/ChunkAccess.java | 7 ++ .../com/dfsek/terra/api/world/Column.java | 7 ++ .../java/com/dfsek/terra/api/world/Flora.java | 7 ++ .../java/com/dfsek/terra/api/world/Tree.java | 7 ++ .../java/com/dfsek/terra/api/world/World.java | 7 ++ .../dfsek/terra/api/world/biome/Biome.java | 7 ++ .../api/world/biome/GenerationSettings.java | 7 ++ .../api/world/biome/PaletteSettings.java | 7 ++ .../terra/api/world/biome/TerraBiome.java | 7 ++ .../world/biome/generation/BiomeProvider.java | 7 ++ .../terra/api/world/generator/ChunkData.java | 7 ++ .../api/world/generator/ChunkGenerator.java | 7 ++ .../generator/ChunkGeneratorProvider.java | 7 ++ .../world/generator/ChunkInterpolator.java | 7 ++ .../terra/api/world/generator/Chunkified.java | 7 ++ .../api/world/generator/GenerationStage.java | 7 ++ .../generator/GenerationStageProvider.java | 7 ++ .../api/world/generator/GeneratorWrapper.java | 7 ++ .../terra/api/world/generator/Palette.java | 7 ++ .../api/world/generator/SamplerCache.java | 7 ++ .../com/dfsek/terra/api/inject/Injector.java | 7 ++ .../terra/api/inject/annotations/Inject.java | 7 ++ .../inject/exception/InjectionException.java | 10 +++ .../terra/api/inject/impl/InjectorImpl.java | 7 ++ .../dfsek/terra/api/noise/NoiseSampler.java | 7 ++ .../terra/api/registry/CheckedRegistry.java | 7 ++ .../terra/api/registry/OpenRegistry.java | 7 ++ .../dfsek/terra/api/registry/Registry.java | 7 ++ .../exception/DuplicateEntryException.java | 11 +++ .../api/registry/meta/RegistryFactory.java | 7 ++ .../api/registry/meta/RegistryHolder.java | 7 ++ .../java/com/dfsek/terra/api/util/Logger.java | 7 ++ .../com/dfsek/terra/api/util/MathUtil.java | 11 ++- .../terra/api/util/StringIdentifiable.java | 7 ++ .../com/dfsek/terra/api/util/StringUtil.java | 7 ++ .../terra/api/util/generic/Construct.java | 7 ++ .../dfsek/terra/api/util/generic/Lazy.java | 7 ++ .../terra/api/util/generic/either/Either.java | 7 ++ .../api/util/generic/pair/ImmutablePair.java | 7 ++ .../terra/api/util/generic/pair/Pair.java | 7 ++ .../dfsek/terra/api/util/math/Sampler.java | 7 ++ .../api/util/mutable/MutableBoolean.java | 7 ++ .../terra/api/util/mutable/MutableDouble.java | 10 +++ .../api/util/mutable/MutableInteger.java | 10 +++ .../terra/api/util/mutable/MutableNumber.java | 11 +++ .../api/util/mutable/MutablePrimitive.java | 7 ++ .../terra/api/util/mutable/package-info.java | 7 ++ .../api/util/reflection/ReflectionUtil.java | 7 ++ .../terra/api/util/reflection/TypeKey.java | 7 ++ .../dfsek/terra/api/util/vector/Vector2.java | 7 ++ .../dfsek/terra/api/util/vector/Vector3.java | 7 ++ .../com/dfsek/terra/AbstractPlatform.java | 17 ++++ .../java/com/dfsek/terra/InternalAddon.java | 17 ++++ .../dfsek/terra/addon/DependencySorter.java | 17 ++++ .../CircularDependencyException.java | 23 +++++ .../addon/dependency/DependencyException.java | 22 +++++ .../DependencyVersionException.java | 23 +++++ .../dfsek/terra/commands/AddonsCommand.java | 17 ++++ .../com/dfsek/terra/commands/CommandUtil.java | 17 ++++ .../dfsek/terra/commands/ExecutionState.java | 23 ++++- .../dfsek/terra/commands/GetBlockCommand.java | 17 ++++ .../dfsek/terra/commands/PacksCommand.java | 17 ++++ .../dfsek/terra/commands/ReloadCommand.java | 17 ++++ .../terra/commands/TerraCommandManager.java | 17 ++++ .../dfsek/terra/commands/VersionCommand.java | 17 ++++ .../commands/profiler/ProfileCommand.java | 17 ++++ .../profiler/ProfileQueryCommand.java | 17 ++++ .../profiler/ProfileResetCommand.java | 17 ++++ .../profiler/ProfileStartCommand.java | 17 ++++ .../commands/profiler/ProfileStopCommand.java | 17 ++++ .../dfsek/terra/config/GenericLoaders.java | 17 ++++ .../dfsek/terra/config/PluginConfigImpl.java | 17 ++++ .../dfsek/terra/config/dummy/DummyWorld.java | 17 ++++ .../config/fileloaders/FolderLoader.java | 17 ++++ .../terra/config/fileloaders/LoaderImpl.java | 19 +++- .../terra/config/fileloaders/ZIPLoader.java | 17 ++++ .../com/dfsek/terra/config/lang/LangUtil.java | 17 ++++ .../dfsek/terra/config/lang/LanguageImpl.java | 17 ++++ .../terra/config/lang/MultiLineMessage.java | 17 ++++ .../terra/config/lang/SingleLineMessage.java | 17 ++++ .../GenericTemplateSupplierLoader.java | 17 ++++ .../config/loaders/LinkedHashMapLoader.java | 17 ++++ .../config/loaders/MaterialSetLoader.java | 17 ++++ .../loaders/ProbabilityCollectionLoader.java | 17 ++++ .../terra/config/loaders/RangeLoader.java | 17 ++++ .../config/loaders/VersionRangeLoader.java | 17 ++++ .../loaders/config/BufferedImageLoader.java | 17 ++++ .../loaders/config/GridSpawnLoader.java | 17 ++++ .../config/pack/ConfigPackAddonsTemplate.java | 17 ++++ .../terra/config/pack/ConfigPackImpl.java | 17 ++++ .../config/pack/ConfigPackPostTemplate.java | 17 ++++ .../terra/config/pack/ConfigPackTemplate.java | 17 ++++ .../terra/config/pack/WorldConfigImpl.java | 17 ++++ .../MetaListLikePreprocessor.java | 17 ++++ .../preprocessor/MetaMapPreprocessor.java | 17 ++++ .../preprocessor/MetaNumberPreprocessor.java | 17 ++++ .../config/preprocessor/MetaPreprocessor.java | 17 ++++ .../preprocessor/MetaStringPreprocessor.java | 17 ++++ .../preprocessor/MetaValuePreprocessor.java | 17 ++++ .../terra/config/prototype/ProtoConfig.java | 17 ++++ .../dfsek/terra/event/EventContextImpl.java | 17 ++++ .../dfsek/terra/event/EventManagerImpl.java | 17 ++++ .../event/FunctionalEventHandlerImpl.java | 17 ++++ .../java/com/dfsek/terra/math/GridSpawn.java | 17 ++++ .../java/com/dfsek/terra/profiler/Frame.java | 17 ++++ .../dfsek/terra/profiler/ProfilerImpl.java | 17 ++++ .../exception/MalformedStackException.java | 21 +++++ .../profiler/exception/ProfilerException.java | 21 +++++ .../terra/registry/CheckedRegistryImpl.java | 17 ++++ .../terra/registry/LockedRegistryImpl.java | 17 ++++ .../terra/registry/OpenRegistryImpl.java | 17 ++++ .../terra/registry/RegistryFactoryImpl.java | 17 ++++ .../registry/config/ConfigTypeRegistry.java | 17 ++++ .../terra/registry/master/ConfigRegistry.java | 17 ++++ .../dfsek/terra/transform/MapTransform.java | 17 ++++ .../terra/transform/TransformerImpl.java | 17 ++++ .../java/com/dfsek/terra/util/FastRandom.java | 19 ++++ .../dfsek/terra/util/logging/DebugLogger.java | 17 ++++ .../dfsek/terra/util/logging/JavaLogger.java | 17 ++++ .../dfsek/terra/world/SamplerCacheImpl.java | 17 ++++ .../src/test/java/command/CommandTest.java | 17 ++++ .../src/test/java/profiler/ProfilerTest.java | 17 ++++ .../src/test/java/registry/RegistryTest.java | 17 ++++ .../dfsek/terra/addon/AddonClassLoader.java | 17 ++++ .../terra/addon/BootstrapAddonLoader.java | 17 ++++ .../addon/exception/AddonLoadException.java | 21 +++++ .../CircularDependencyException.java | 21 +++++ .../exception/DependencyMissingException.java | 21 +++++ .../terra/bukkit/BukkitCommandSender.java | 17 ++++ .../com/dfsek/terra/bukkit/BukkitEntity.java | 17 ++++ .../com/dfsek/terra/bukkit/BukkitPlayer.java | 17 ++++ .../com/dfsek/terra/bukkit/PlatformImpl.java | 17 ++++ .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 17 ++++ .../bukkit/command/BukkitCommandAdapter.java | 17 ++++ .../terra/bukkit/command/FixChunkCommand.java | 17 ++++ .../terra/bukkit/command/SaveDataCommand.java | 17 ++++ .../bukkit/generator/BukkitChunkData.java | 17 ++++ .../BukkitChunkGeneratorWrapper.java | 17 ++++ .../generator/BukkitPopulatorWrapper.java | 17 ++++ .../bukkit/handles/BukkitItemHandle.java | 17 ++++ .../bukkit/handles/BukkitWorldHandle.java | 17 ++++ .../bukkit/listeners/CommonListener.java | 17 ++++ .../terra/bukkit/listeners/PaperListener.java | 17 ++++ .../bukkit/listeners/SpigotListener.java | 17 ++++ .../bukkit/population/ChunkCoordinate.java | 17 ++++ .../bukkit/population/PopulationManager.java | 17 ++++ .../bukkit/population/SerializationUtil.java | 17 ++++ .../structure/WorldEditNotFoundException.java | 21 +++++ .../terra/bukkit/structure/WorldEditUtil.java | 17 ++++ .../terra/bukkit/util/MinecraftUtils.java | 17 ++++ .../dfsek/terra/bukkit/util/PaperUtil.java | 17 ++++ .../terra/bukkit/world/BukkitAdapter.java | 17 ++++ .../dfsek/terra/bukkit/world/BukkitBiome.java | 17 ++++ .../terra/bukkit/world/BukkitBiomeGrid.java | 17 ++++ .../dfsek/terra/bukkit/world/BukkitChunk.java | 17 ++++ .../dfsek/terra/bukkit/world/BukkitTree.java | 17 ++++ .../dfsek/terra/bukkit/world/BukkitWorld.java | 17 ++++ .../world/block/BukkitBlockTypeAndItem.java | 17 ++++ .../world/block/data/BukkitBlockState.java | 17 ++++ .../world/block/state/BukkitBlockEntity.java | 17 ++++ .../world/block/state/BukkitContainer.java | 17 ++++ .../world/block/state/BukkitMobSpawner.java | 17 ++++ .../bukkit/world/block/state/BukkitSign.java | 17 ++++ .../bukkit/world/entity/BukkitEntityType.java | 17 ++++ .../world/inventory/BukkitInventory.java | 17 ++++ .../world/inventory/BukkitItemMeta.java | 17 ++++ .../world/inventory/BukkitItemStack.java | 17 ++++ .../inventory/meta/BukkitDamageable.java | 17 ++++ .../inventory/meta/BukkitEnchantment.java | 17 ++++ .../com/dfsek/terra/fabric/FabricAddon.java | 17 ++++ .../dfsek/terra/fabric/FabricEntryPoint.java | 17 ++++ .../com/dfsek/terra/fabric/PlatformImpl.java | 17 ++++ .../terra/fabric/block/FabricBlockState.java | 17 ++++ .../config/PostLoadCompatibilityOptions.java | 17 ++++ .../config/PreLoadCompatibilityOptions.java | 17 ++++ .../fabric/event/BiomeRegistrationEvent.java | 17 ++++ .../FabricChunkGeneratorWrapper.java | 17 ++++ .../fabric/generation/PopulatorFeature.java | 17 ++++ .../fabric/generation/TerraBiomeSource.java | 17 ++++ .../fabric/generation/TerraGeneratorType.java | 17 ++++ .../terra/fabric/handle/FabricItemHandle.java | 17 ++++ .../fabric/handle/FabricWorldHandle.java | 17 ++++ .../fabric/mixin/CommandManagerMixin.java | 17 ++++ .../terra/fabric/mixin/ServerWorldMixin.java | 17 ++++ .../mixin/StructureAccessorAccessor.java | 17 ++++ .../mixin/access/BiomeEffectsAccessor.java | 17 ++++ .../mixin/access/GeneratorTypeAccessor.java | 17 ++++ .../mixin/access/MobSpawnerLogicAccessor.java | 17 ++++ .../fabric/mixin/access/StateAccessor.java | 17 ++++ .../mixin/implementations/BiomeMixin.java | 17 ++++ .../ConfiguredFeatureMixin.java | 17 ++++ .../block/BlockEntityMixin.java | 17 ++++ .../implementations/block/BlockMixin.java | 17 ++++ .../LootableContainerBlockEntityMixin.java | 17 ++++ .../state/MobSpawnerBlockEntityMixin.java | 17 ++++ .../block/state/SignBlockEntityMixin.java | 17 ++++ .../chunk/ChunkRegionMixin.java | 17 ++++ .../chunk/WorldChunkMixin.java | 17 ++++ .../chunk/data/ProtoChunkMixin.java | 17 ++++ .../implementations/entity/EntityMixin.java | 17 ++++ .../entity/EntityTypeMixin.java | 17 ++++ .../entity/PlayerEntityMixin.java | 17 ++++ .../entity/ServerCommandSourceMixin.java | 17 ++++ .../LockableContainerBlockEntityMixin.java | 17 ++++ .../inventory/item/ItemMixin.java | 17 ++++ .../inventory/item/ItemStackMixin.java | 17 ++++ .../inventory/meta/EnchantmentMixin.java | 17 ++++ .../meta/ItemStackDamageableMixin.java | 17 ++++ .../inventory/meta/ItemStackMetaMixin.java | 17 ++++ .../mixin/implementations/package-info.java | 17 ++++ .../world/ChunkRegionMixin.java | 17 ++++ .../world/ServerWorldMixin.java | 17 ++++ .../client/MinecraftClientMixin.java | 17 ++++ .../fabric/mixin/lifecycle/package-info.java | 17 ++++ .../server/GeneratorOptionsMixin.java | 17 ++++ .../lifecycle/server/ServerMainMixin.java | 17 ++++ .../terra/fabric/util/FabricAdapter.java | 17 ++++ .../dfsek/terra/fabric/util/FabricUtil.java | 17 ++++ .../dfsek/terra/fabric/util/ProtoBiome.java | 17 ++++ .../terra/fabric/util/WorldEditUtil.java | 17 ++++ .../com/dfsek/terra/sponge/PlatformImpl.java | 17 ++++ .../dfsek/terra/sponge/SpongeListener.java | 17 ++++ .../dfsek/terra/sponge/TerraSpongePlugin.java | 21 ++++- .../terra/sponge/block/SpongeBlockState.java | 17 ++++ .../terra/sponge/block/SpongeBlockType.java | 17 ++++ .../sponge/handle/SpongeWorldHandle.java | 17 ++++ 374 files changed, 4389 insertions(+), 77 deletions(-) diff --git a/common/addons/api-addon-loader b/common/addons/api-addon-loader index 32fd71661..ae2901876 160000 --- a/common/addons/api-addon-loader +++ b/common/addons/api-addon-loader @@ -1 +1 @@ -Subproject commit 32fd716610600e528e2c90e7b0c069b2ddc52417 +Subproject commit ae2901876b15f03846eabea3830d964b8bb30867 diff --git a/common/addons/biome-provider-image b/common/addons/biome-provider-image index 56984f6c0..c678f200a 160000 --- a/common/addons/biome-provider-image +++ b/common/addons/biome-provider-image @@ -1 +1 @@ -Subproject commit 56984f6c08294351039a6fa675ed38482a6a8502 +Subproject commit c678f200a73927094d8039a864296f301d26c63a diff --git a/common/addons/biome-provider-pipeline b/common/addons/biome-provider-pipeline index 9535ec13d..daac9d4bb 160000 --- a/common/addons/biome-provider-pipeline +++ b/common/addons/biome-provider-pipeline @@ -1 +1 @@ -Subproject commit 9535ec13d56cdd4b4120b604d91dcf5bd10c8e9f +Subproject commit daac9d4bb643c6bffa1a8afdf68b133461ced708 diff --git a/common/addons/biome-provider-single b/common/addons/biome-provider-single index 8a9ea7a41..2b561634c 160000 --- a/common/addons/biome-provider-single +++ b/common/addons/biome-provider-single @@ -1 +1 @@ -Subproject commit 8a9ea7a4183bb1bb84347b431a786fcf6f2f87a6 +Subproject commit 2b561634c499ef93f735f5093a3a26c20fdea69b diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d index 37c351519..0a14a4095 160000 --- a/common/addons/chunk-generator-noise-3d +++ b/common/addons/chunk-generator-noise-3d @@ -1 +1 @@ -Subproject commit 37c3515197e71a9da5cbbee1a3da45c218a18b9f +Subproject commit 0a14a40952f94648e3900515f85e095c6f174b87 diff --git a/common/addons/config-biome b/common/addons/config-biome index c4a5807b6..e8f0144a0 160000 --- a/common/addons/config-biome +++ b/common/addons/config-biome @@ -1 +1 @@ -Subproject commit c4a5807b62beda3fdd00af48250f1b5721efe82b +Subproject commit e8f0144a0c1782bfccda40ed8fe49749fd7f8801 diff --git a/common/addons/config-carver b/common/addons/config-carver index 2c4ec246c..2e9f54dd2 160000 --- a/common/addons/config-carver +++ b/common/addons/config-carver @@ -1 +1 @@ -Subproject commit 2c4ec246c30c0b9ce31d54c81a8d5163efbf0576 +Subproject commit 2e9f54dd24b3500bdbd98b1605df857d0cec5112 diff --git a/common/addons/config-distributors b/common/addons/config-distributors index 25b4c79e0..030e75f4e 160000 --- a/common/addons/config-distributors +++ b/common/addons/config-distributors @@ -1 +1 @@ -Subproject commit 25b4c79e0961c9a91dbf34d14f24d3bc2a7ecc73 +Subproject commit 030e75f4e6b356ed8e520bfe33801953575f8f92 diff --git a/common/addons/config-feature b/common/addons/config-feature index fefbeb0e9..44674dfc3 160000 --- a/common/addons/config-feature +++ b/common/addons/config-feature @@ -1 +1 @@ -Subproject commit fefbeb0e939cfc2ffc1e33fe4e5ce40b6f3233cc +Subproject commit 44674dfc39e70e81c00fe3cf408054fe03844e58 diff --git a/common/addons/config-flora b/common/addons/config-flora index fdeec468b..ae234cbe9 160000 --- a/common/addons/config-flora +++ b/common/addons/config-flora @@ -1 +1 @@ -Subproject commit fdeec468b16cfab39762596af1060e196abf62bd +Subproject commit ae234cbe99b92f417abbe016fff087e7977eef5b diff --git a/common/addons/config-locators b/common/addons/config-locators index c8ed23e87..f978a07da 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit c8ed23e87191b6cb468cdc5364d70fcf945d3fba +Subproject commit f978a07daf74b6ae0f0c810ae6eba75e8b0387b7 diff --git a/common/addons/config-noise-function b/common/addons/config-noise-function index f61efc496..495d835fc 160000 --- a/common/addons/config-noise-function +++ b/common/addons/config-noise-function @@ -1 +1 @@ -Subproject commit f61efc4965ced99c5323c834f73bbf31c3825500 +Subproject commit 495d835fce3d541349d1ec1164d7dab128a3265f diff --git a/common/addons/config-ore b/common/addons/config-ore index 012f51251..5856844c2 160000 --- a/common/addons/config-ore +++ b/common/addons/config-ore @@ -1 +1 @@ -Subproject commit 012f51251597860e3693ed03ac8a11673d3ce395 +Subproject commit 5856844c23b5a8a9839fa4a39def57c0bfc04917 diff --git a/common/addons/config-palette b/common/addons/config-palette index 60135c3ff..a3111c969 160000 --- a/common/addons/config-palette +++ b/common/addons/config-palette @@ -1 +1 @@ -Subproject commit 60135c3ffd0423acdc0fc528408f30986d1c4425 +Subproject commit a3111c969df9dffc757facce1f756f743b55f0d8 diff --git a/common/addons/config-structure b/common/addons/config-structure index e5f233a71..a352e4fcb 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit e5f233a71ea1974a5a7220e21f72c9d9e74127b6 +Subproject commit a352e4fcbb4e31bebfabb56780832bd970ed3ca2 diff --git a/common/addons/generation-stage-feature b/common/addons/generation-stage-feature index 2875dd8b9..bd02f5528 160000 --- a/common/addons/generation-stage-feature +++ b/common/addons/generation-stage-feature @@ -1 +1 @@ -Subproject commit 2875dd8b9bf36ddb34dbdacd6bc942c917586bb4 +Subproject commit bd02f5528879e88f52a50621854cb9bf2ecaf081 diff --git a/common/addons/language-yaml b/common/addons/language-yaml index b0e1dc7cd..b9f98da05 160000 --- a/common/addons/language-yaml +++ b/common/addons/language-yaml @@ -1 +1 @@ -Subproject commit b0e1dc7cda60c5a487ba60ea1f36fc388e352cbf +Subproject commit b9f98da059b4daa9513c09151170f5239fd76d71 diff --git a/common/addons/manifest-addon-loader b/common/addons/manifest-addon-loader index 87fb98d7a..c5db2fcd2 160000 --- a/common/addons/manifest-addon-loader +++ b/common/addons/manifest-addon-loader @@ -1 +1 @@ -Subproject commit 87fb98d7ae97ea80cee08015a14d181b5f9111b2 +Subproject commit c5db2fcd23c8cd16b1ad836fbb9ae7dac7c356bb diff --git a/common/addons/structure-sponge-loader b/common/addons/structure-sponge-loader index 0e246e395..7523eba64 160000 --- a/common/addons/structure-sponge-loader +++ b/common/addons/structure-sponge-loader @@ -1 +1 @@ -Subproject commit 0e246e3958fdd88a2920e306ef2272e034aa958c +Subproject commit 7523eba64d69ec18963296f83b83e3424892e43c diff --git a/common/addons/structure-terrascript-loader b/common/addons/structure-terrascript-loader index 85a1d3ca2..355e02402 160000 --- a/common/addons/structure-terrascript-loader +++ b/common/addons/structure-terrascript-loader @@ -1 +1 @@ -Subproject commit 85a1d3ca2b6a4bd570ed31d2bdbc1da0d1ec232b +Subproject commit 355e024025e9906f76c2c1c4332081549b597c6c diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java index cf29931f6..458e58630 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/BaseAddon.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.addon; import ca.solostudios.strata.version.Version; diff --git a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java index 54a4de636..02ace514d 100644 --- a/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java +++ b/common/api/addons/src/main/java/com/dfsek/terra/api/addon/bootstrap/BootstrapBaseAddon.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.addon.bootstrap; import java.nio.file.Path; @@ -10,7 +17,7 @@ public interface BootstrapBaseAddon extends BaseAddon { * Load all the relevant addons in the specified path. * * @param addonsFolder Path containing addons. - * @param parent + * @param parent parent class loader * * @return Loaded addons */ diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/Handle.java b/common/api/core/src/main/java/com/dfsek/terra/api/Handle.java index 44c62c87d..293e53ce7 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/Handle.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/Handle.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api; /** diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java index 19a8f66d8..07829d3af 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/Platform.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api; import java.io.File; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/Addon.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/Addon.java index 2d807e73c..7ecb32588 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/Addon.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/addon/Addon.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.addon; public interface Addon { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java b/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java index 988ae520f..edc010882 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/addon/AddonLoader.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.addon; import com.dfsek.terra.api.Platform; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/BlockType.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/BlockType.java index 39b91cf12..707002023 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/BlockType.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/BlockType.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java index 78dede271..7ecb6c07e 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/BlockEntity.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.entity; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Container.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Container.java index 6266f4e79..3b2a8588a 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Container.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Container.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.entity; import com.dfsek.terra.api.inventory.BlockInventoryHolder; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java index c0497c562..b64e7ed5c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/MobSpawner.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.entity; import org.jetbrains.annotations.NotNull; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java index f3bef5e3e..17af01361 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/SerialState.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.entity; import java.util.HashMap; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Sign.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Sign.java index f8c148303..4f48c2b99 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Sign.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/entity/Sign.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.entity; import org.jetbrains.annotations.NotNull; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/BlockState.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/BlockState.java index 08798ad44..56e5d18d2 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/BlockState.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/BlockState.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state; import java.util.function.Consumer; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java index 839f78287..6384e30f8 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/Property.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties; import java.util.Collection; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java index 511d9278a..21da000cc 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/BooleanProperty.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.base; import java.util.Arrays; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java index 475dd8a01..b09bd1215 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/EnumProperty.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.base; import java.util.Arrays; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java index eb5a22ea7..9a56b5690 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/IntProperty.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.base; import java.util.ArrayList; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java index f1c8ba0f3..e7623ad68 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/base/Properties.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.base; import com.dfsek.terra.api.block.state.properties.enums.Axis; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java index 9d0156929..f57362ef1 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Axis.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.enums; public enum Axis { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java index 091416781..7f2222fe7 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Direction.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.enums; import com.dfsek.terra.api.structure.rotation.Rotation; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java index 50d32bef7..160710629 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/Half.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.enums; public enum Half { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RailShape.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RailShape.java index 47d537bc5..6030b699c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RailShape.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RailShape.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.enums; public enum RailShape { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java index 08a01a163..12b5899c8 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/RedstoneConnection.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.enums; public enum RedstoneConnection { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java index eda29ef85..e9940eace 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/block/state/properties/enums/WallHeight.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.block.state.properties.enums; public enum WallHeight { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandManager.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandManager.java index 1ebe09b91..fa39179f5 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandManager.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandManager.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command; import java.util.List; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java index 21e30b2cc..73035186c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/CommandTemplate.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java index ddcf7b7e4..5da404473 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Argument.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Command.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Command.java index 021babec4..a27d6bd01 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Command.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Command.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java index 7140b7db6..b4a10172f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Subcommand.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java index 1abd9b121..3bdf4e6f6 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/Switch.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java index edd6f82a6..899cded10 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/ArgumentTarget.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation.inject; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java index 7d3f327df..e67cb51cf 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/inject/SwitchTarget.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation.inject; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java index 280eaa9c2..3f5ccedca 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/DebugCommand.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation.type; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java index b7922c6a7..cf8f5cf81 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/PlayerCommand.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation.type; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java index 1d3dd722b..12c46d0dd 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/annotation/type/WorldCommand.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.annotation.type; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java index abb169575..84c1f8afe 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/ArgumentParser.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java index 4eadb86b8..026940730 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/DoubleArgumentParser.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java index 2f5313583..146a8c1f8 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/IntegerArgumentParser.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java index c7d22ea39..1bbe9b7d1 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/arg/StringArgumentParser.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.arg; import com.dfsek.terra.api.entity.CommandSender; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java index 2af650a0e..03c0c6c12 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/CommandException.java @@ -1,6 +1,17 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.exception; +import java.io.Serial; + + public abstract class CommandException extends Exception { + @Serial private static final long serialVersionUID = -2955328495045879822L; public CommandException(String message) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java index ac23ac64c..261deb376 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/ExecutionException.java @@ -1,6 +1,17 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.exception; +import java.io.Serial; + + public class ExecutionException extends CommandException { + @Serial private static final long serialVersionUID = -6345523475880607959L; public ExecutionException(String message) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java index 8302d3118..ac77b05cc 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/InvalidArgumentsException.java @@ -1,6 +1,17 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.exception; +import java.io.Serial; + + public class InvalidArgumentsException extends CommandException { + @Serial private static final long serialVersionUID = 7563619667472569824L; public InvalidArgumentsException(String message) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java index f728c707e..3f4ec8eac 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/MalformedCommandException.java @@ -1,9 +1,20 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.exception; +import java.io.Serial; + + /** * Thrown when command is incorrectly defined. */ public class MalformedCommandException extends CommandException { + @Serial private static final long serialVersionUID = -5417760860407895496L; public MalformedCommandException(String message) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java index 944e2b4a0..afb885314 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/exception/SwitchFormatException.java @@ -1,6 +1,17 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.exception; +import java.io.Serial; + + public class SwitchFormatException extends CommandException { + @Serial private static final long serialVersionUID = -965858989317844628L; public SwitchFormatException(String message) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java index f4d7e2fa4..82fe14aa0 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/NothingCompleter.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.tab; import java.util.Collections; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java b/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java index f0836bd1e..3f6762010 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/command/tab/TabCompleter.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.command.tab; import java.util.List; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java index 62a276527..be4155fcb 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/AbstractableTemplate.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java index 533121bcf..79518b3d9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigFactory.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config; import com.dfsek.tectonic.config.ConfigTemplate; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java index 9f95c064a..f5c209655 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigPack.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config; import java.lang.reflect.Type; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 6598cb01f..7802e2a50 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config; import java.util.function.Supplier; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/Loader.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/Loader.java index f09b91491..11b065999 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/Loader.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/Loader.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config; import com.dfsek.tectonic.exception.ConfigException; @@ -29,7 +36,7 @@ public interface Loader { * Open a subdirectory. * * @param directory Directory to open - * @param extension + * @param extension File extension */ Loader open(String directory, String extension); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java index f661650e1..a1df1bc09 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/PluginConfig.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config; import com.dfsek.terra.api.Platform; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java index a13e8f501..49b6ae5c2 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/WorldConfig.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config; import java.util.Map; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/meta/Meta.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/meta/Meta.java index 33e7fb6bc..874b9900a 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/meta/Meta.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/meta/Meta.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.config.meta; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/entity/CommandSender.java b/common/api/core/src/main/java/com/dfsek/terra/api/entity/CommandSender.java index 953809a97..ad9a25030 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/entity/CommandSender.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/entity/CommandSender.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.entity; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/entity/Entity.java b/common/api/core/src/main/java/com/dfsek/terra/api/entity/Entity.java index 7d20ba2ae..6eec4b072 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/entity/Entity.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/entity/Entity.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.entity; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/entity/EntityType.java b/common/api/core/src/main/java/com/dfsek/terra/api/entity/EntityType.java index 79e3c1043..b873e69f4 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/entity/EntityType.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/entity/EntityType.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.entity; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/entity/Player.java b/common/api/core/src/main/java/com/dfsek/terra/api/entity/Player.java index d8cbc30e3..972d7e265 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/entity/Player.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/entity/Player.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.entity; public interface Player extends Entity { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/EventHandler.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/EventHandler.java index 4e8692552..6c9c71fd6 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/EventHandler.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/EventHandler.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event; import com.dfsek.terra.api.event.events.Event; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/EventManager.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/EventManager.java index 1645376f5..994bcd6f5 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/EventManager.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/EventManager.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event; import com.dfsek.terra.api.event.events.Event; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java index 6b0f70b98..188f078c9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/AbstractCancellable.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events; import com.dfsek.terra.api.util.mutable.MutableBoolean; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java index 5c181ac39..4a832b817 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Cancellable.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events; /** diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Event.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Event.java index 67d12a029..3051c744f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Event.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/Event.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events; /** diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java index 6c917c538..0c1f35382 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/FailThroughEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events; /** diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java index aff5d7d94..cb7ebe079 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java index 1fd571cc0..9f1e63991 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationDiscoveryEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.config.Configuration; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java index 7d8499fb1..1a603bced 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/ConfigurationLoadEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config; import com.dfsek.tectonic.abstraction.AbstractConfiguration; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java index 78ffdcb6e..ae1a39362 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackLoadEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java index 39905989a..7373ffaf6 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPostLoadEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java index 192d6b606..7346a7209 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/pack/ConfigPackPreLoadEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config.pack; import com.dfsek.tectonic.config.ConfigTemplate; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java index 13fffacf4..8dd7db191 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypeLoadEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config.type; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java index 0e7fd3110..f3b72ccd2 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePostLoadEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config.type; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java index 13cc1742e..084d68a0a 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/config/type/ConfigTypePreLoadEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.config.type; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java index f43a86f93..d94ee750c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/platform/PlatformInitializationEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.platform; import com.dfsek.terra.api.event.events.Event; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java index 4ed04a634..2efc4ac24 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/EntitySpawnEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.world.generation; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java index e23aae20c..e956c5067 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/events/world/generation/LootPopulateEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.events.world.generation; import org.jetbrains.annotations.NotNull; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java index e4fc6dc8c..54750cc8b 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/EventContext.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.functional; import java.util.function.Consumer; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java index a6c0012f0..9ec9c62c9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/event/functional/FunctionalEventHandler.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.event.functional; import com.dfsek.terra.api.addon.BaseAddon; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java b/common/api/core/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java index af4d09242..2cc69db77 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/handle/ItemHandle.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.handle; import java.util.Set; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 3ae571247..3f66f098b 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.handle; import com.dfsek.terra.api.block.entity.BlockEntity; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java index 76b21f55b..267a1ffec 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/BlockInventoryHolder.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Inventory.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Inventory.java index 29ba5cab1..8f0888ac7 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Inventory.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Inventory.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java index 220360c84..bf62a1c79 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/InventoryHolder.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Item.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Item.java index 9762f7a27..36d27c08d 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Item.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/Item.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/ItemStack.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/ItemStack.java index 26a46e734..0edc53c6e 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/ItemStack.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/ItemStack.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Damageable.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Damageable.java index c81fb3b8f..9f950a3c9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Damageable.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Damageable.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory.item; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Enchantment.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Enchantment.java index 258a027cc..a836bc22b 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Enchantment.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/Enchantment.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory.item; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/ItemMeta.java b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/ItemMeta.java index 157889680..6094ce389 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/ItemMeta.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/inventory/item/ItemMeta.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inventory.item; import java.util.Map; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/lang/Language.java b/common/api/core/src/main/java/com/dfsek/terra/api/lang/Language.java index f4ae7b651..0cfafc4b5 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/lang/Language.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/lang/Language.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.lang; import java.util.logging.Level; @@ -11,6 +18,5 @@ public interface Language { void send(String messageID, CommandSender sender, String... args); - @SuppressWarnings("unchecked") Message getMessage(String id); } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/lang/Message.java b/common/api/core/src/main/java/com/dfsek/terra/api/lang/Message.java index 7aa77196e..5a06ff646 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/lang/Message.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/lang/Message.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.lang; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/profiler/ProfileFrame.java b/common/api/core/src/main/java/com/dfsek/terra/api/profiler/ProfileFrame.java index 2d8775c54..5a910c5b5 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/profiler/ProfileFrame.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/profiler/ProfileFrame.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.profiler; public class ProfileFrame implements AutoCloseable { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Profiler.java b/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Profiler.java index c45b87271..af52b324c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Profiler.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Profiler.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.profiler; import java.util.Map; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Timings.java b/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Timings.java index e37613efa..199d4943f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Timings.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/profiler/Timings.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.profiler; import java.util.ArrayList; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/properties/Context.java b/common/api/core/src/main/java/com/dfsek/terra/api/properties/Context.java index 203b971a0..93e87a807 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/properties/Context.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/properties/Context.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.properties; import java.util.HashMap; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/properties/Properties.java b/common/api/core/src/main/java/com/dfsek/terra/api/properties/Properties.java index 43360d347..162828357 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/properties/Properties.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/properties/Properties.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.properties; public interface Properties { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java b/common/api/core/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java index 7fe882ab7..e48d50bed 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/properties/PropertyHolder.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.properties; public interface PropertyHolder { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java b/common/api/core/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java index f6b197233..230ab1841 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/properties/annotations/Linked.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.properties.annotations; import java.lang.annotation.ElementType; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/LootTable.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/LootTable.java index a65dbb7f9..fcfe9d555 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/LootTable.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/LootTable.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure; import java.util.List; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java index c7da619a1..ae8f52000 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/Structure.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure; import java.util.Random; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java index c9be4cc25..d168e62ec 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/StructureSpawn.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java index f3e8dbd77..ebe36b86f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/Buffer.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.buffer; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java index a833184aa..1cc8d268c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/BufferedItem.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.buffer; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/DirectBuffer.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/DirectBuffer.java index 9c57a9476..3945051f6 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/DirectBuffer.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/DirectBuffer.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.buffer.buffers; import java.util.LinkedHashMap; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java index 5857429c7..ad33b1df4 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/buffers/StructureBuffer.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.buffer.buffers; import net.jafama.FastMath; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/BufferedBlock.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/BufferedBlock.java index cc0f18af5..b1624e3ac 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/BufferedBlock.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/BufferedBlock.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.buffer.items; import com.dfsek.terra.api.Platform; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/Cell.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/Cell.java index 81ab82fc9..8f7ac0647 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/Cell.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/buffer/items/Cell.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.buffer.items; import java.util.ArrayList; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java index a7ae04779..6fef52889 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/configured/ConfiguredStructure.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.configured; import com.dfsek.terra.api.structure.Structure; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java index 1a03649a5..d5ca60afb 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.feature; import java.util.function.IntConsumer; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java index 84d1e7743..321b67e31 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Distributor.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.feature; public interface Distributor { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java index d06180753..d3b7b1968 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Feature.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.feature; import com.dfsek.terra.api.structure.Structure; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java index 3342f2238..f87c4db8d 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/Locator.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.feature; import com.dfsek.terra.api.world.Column; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java index 685c565d2..353f223b9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/rotation/Rotation.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.structure.rotation; import net.jafama.FastMath; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java b/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java index 97cf3d3df..672c1f30a 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderHolder.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.tectonic; import com.dfsek.tectonic.loading.TypeLoader; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java b/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java index ee0d280e1..1a2bbf3ca 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/tectonic/LoaderRegistrar.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.tectonic; import com.dfsek.tectonic.loading.TypeRegistry; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transform.java b/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transform.java index 75cd6e0c7..014747f0f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transform.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transform.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.transform; import com.dfsek.terra.api.transform.exception.TransformException; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transformer.java b/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transformer.java index 3e1194c72..8ca8a904a 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transformer.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/transform/Transformer.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.transform; public interface Transformer { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/transform/Validator.java b/common/api/core/src/main/java/com/dfsek/terra/api/transform/Validator.java index afa343834..9a9aecbdd 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/transform/Validator.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/transform/Validator.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.transform; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java b/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java index ce6474bb0..5f83706f3 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/AttemptsFailedException.java @@ -1,11 +1,20 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.transform.exception; +import java.io.Serial; import java.util.ArrayList; import java.util.List; public class AttemptsFailedException extends RuntimeException { + @Serial private static final long serialVersionUID = -1160459550006067137L; private final List causes; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/TransformException.java b/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/TransformException.java index 051c495a7..ff80b6642 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/TransformException.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/transform/exception/TransformException.java @@ -1,6 +1,17 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.transform.exception; +import java.io.Serial; + + public class TransformException extends Exception { + @Serial private static final long serialVersionUID = -6661338369581162084L; public TransformException() { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/ConstantRange.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/ConstantRange.java index c4d213474..5e2e75641 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/ConstantRange.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/ConstantRange.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; import net.jafama.FastMath; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java index 01da248d1..793c530b2 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/PopulationUtil.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; import java.util.Random; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/Range.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/Range.java index ad3ea7d39..9aa57fde3 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/Range.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/Range.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; import org.jetbrains.annotations.NotNull; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java index 40bbe0e7c..897a9a715 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/RotationUtil.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; import com.dfsek.terra.api.block.state.BlockState; @@ -20,7 +27,7 @@ public final class RotationUtil { * @param orig Vector to rotate. * @param r Rotation * - * @return + * @return Rotated vector */ public static Vector2 rotateVector(Vector2 orig, Rotation r) { Vector2 copy = orig.clone(); @@ -59,48 +66,45 @@ public final class RotationUtil { */ @SuppressWarnings("fallthrough") public static RailShape getRotatedRail(RailShape orig, Rotation r) { - switch(r) { - case CCW_90: - 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: - 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: - 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; + return switch(r) { + case CCW_90 -> 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 -> 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 -> 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; + }; + default -> orig; + }; } public static void rotateBlockData(BlockState data, Rotation r) { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/MaterialSet.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/MaterialSet.java index d8ac4c6e2..6d53c30d3 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/MaterialSet.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/MaterialSet.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.collection; import java.io.Serial; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java b/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java index 36b9a63eb..a89b8acfd 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/util/collection/ProbabilityCollection.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.collection; import org.jetbrains.annotations.NotNull; @@ -102,7 +109,7 @@ public class ProbabilityCollection implements Collection { @SuppressWarnings("SuspiciousToArrayCall") @NotNull @Override - public T @NotNull [] toArray(@NotNull T[] a) { + public T @NotNull [] toArray(@NotNull T @NotNull [] a) { return cont.keySet().toArray(a); } diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java index 7cf47758c..8cd7fb438 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/BiomeGrid.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; import org.jetbrains.annotations.NotNull; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/Carver.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/Carver.java index ec711c6e5..83f6df457 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/Carver.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/Carver.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; public interface Carver { diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/Chunk.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/Chunk.java index 461bc330c..e5db8740e 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/Chunk.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/Chunk.java @@ -1,16 +1,25 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; import com.dfsek.terra.api.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + public interface Chunk extends ChunkAccess { void setBlock(int x, int y, int z, BlockState data, boolean physics); - default void setBlock(int x, int y, int z, BlockState data) { + default void setBlock(int x, int y, int z, @NotNull BlockState data) { setBlock(x, y, z, data, false); } - BlockState getBlock(int x, int y, int z); + @NotNull BlockState getBlock(int x, int y, int z); int getX(); diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java index 3322165ba..96b7dd817 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/ChunkAccess.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; import org.jetbrains.annotations.NotNull; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java index b01896516..7e3396284 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/Column.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; import java.util.function.IntConsumer; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/Flora.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/Flora.java index 525011425..7584884be 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/Flora.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/Flora.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; import java.util.List; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/Tree.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/Tree.java index e3f0cd4b4..78fa34741 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/Tree.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/Tree.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/World.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/World.java index 3e1fc6c44..cb8376339 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/World.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/World.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/Biome.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/Biome.java index 576c8fe19..209bc172e 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/Biome.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/Biome.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/GenerationSettings.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/GenerationSettings.java index ee1b5a723..a5a7880d0 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/GenerationSettings.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/GenerationSettings.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java index bb10d6801..0f72b8c1a 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/PaletteSettings.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.biome; import com.dfsek.terra.api.world.generator.Palette; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java index 5cca26618..93d0a5cd9 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/TerraBiome.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.biome; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index fa55acea6..f5df8ba31 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.biome.generation; import com.dfsek.terra.api.util.vector.Vector2; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkData.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkData.java index af3448e60..c65274e09 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkData.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkData.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.world.ChunkAccess; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java index 65dc552b9..15ea822bc 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGenerator.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import org.jetbrains.annotations.NotNull; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java index f6a8fe04f..c07ccd154 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkGeneratorProvider.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java index 8f6866fa3..50795a1ca 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/ChunkInterpolator.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import java.util.Map; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Chunkified.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Chunkified.java index 7308b3343..1e10e6b1c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Chunkified.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Chunkified.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; /** diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java index 0339154ac..ff1244dee 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStage.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.world.Chunk; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java index 626bdb3ec..76bbe1304 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GenerationStageProvider.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.config.ConfigPack; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java index 9357826dd..0d513898c 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/GeneratorWrapper.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.Handle; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Palette.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Palette.java index fddabfadf..67432e23f 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Palette.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/Palette.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.block.state.BlockState; diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java index c8c302712..2922cde88 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/world/generator/SamplerCache.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.world.generator; import com.dfsek.terra.api.util.math.Sampler; diff --git a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java index e9a66d810..50caaf420 100644 --- a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java +++ b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/Injector.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inject; import com.dfsek.terra.api.inject.annotations.Inject; diff --git a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/annotations/Inject.java b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/annotations/Inject.java index dc9c0a3d3..28936aef2 100644 --- a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/annotations/Inject.java +++ b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/annotations/Inject.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inject.annotations; import java.lang.annotation.ElementType; diff --git a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/exception/InjectionException.java b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/exception/InjectionException.java index ec6f1ed15..0f25b1479 100644 --- a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/exception/InjectionException.java +++ b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/exception/InjectionException.java @@ -1,12 +1,22 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inject.exception; import com.dfsek.terra.api.inject.Injector; +import java.io.Serial; + /** * Thrown when dynamic dependency injection cannot be completed by an {@link Injector}. */ public class InjectionException extends RuntimeException { + @Serial private static final long serialVersionUID = -6929631447064215387L; public InjectionException(String message) { diff --git a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/impl/InjectorImpl.java b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/impl/InjectorImpl.java index 7c511f7e6..9c17501a5 100644 --- a/common/api/inject/src/main/java/com/dfsek/terra/api/inject/impl/InjectorImpl.java +++ b/common/api/inject/src/main/java/com/dfsek/terra/api/inject/impl/InjectorImpl.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.inject.impl; import java.lang.reflect.Field; diff --git a/common/api/noise/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java b/common/api/noise/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java index 974f7a01b..cedda685e 100644 --- a/common/api/noise/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java +++ b/common/api/noise/src/main/java/com/dfsek/terra/api/noise/NoiseSampler.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.noise; diff --git a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index db651f233..ce7f46e9e 100644 --- a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.registry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; diff --git a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java index 4051e0d59..4616ae34a 100644 --- a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java +++ b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.registry; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; diff --git a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/Registry.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/Registry.java index 1b8e6ac03..1b1276417 100644 --- a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/Registry.java +++ b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/Registry.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.registry; import com.dfsek.tectonic.loading.TypeLoader; diff --git a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java index 47c3519aa..123ec2da3 100644 --- a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java +++ b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/exception/DuplicateEntryException.java @@ -1,9 +1,20 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.registry.exception; +import java.io.Serial; + + /** * Thrown when a duplicate entry is found in a registry. */ public class DuplicateEntryException extends RuntimeException { + @Serial private static final long serialVersionUID = -7199021672428288780L; public DuplicateEntryException(String message) { diff --git a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java index 3d885ff4e..e70e2f41f 100644 --- a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java +++ b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryFactory.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.registry.meta; import com.dfsek.tectonic.loading.TypeLoader; diff --git a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java index 8f2c0d982..6b8661281 100644 --- a/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java +++ b/common/api/registry/src/main/java/com/dfsek/terra/api/registry/meta/RegistryHolder.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.registry.meta; import java.lang.reflect.Type; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/Logger.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/Logger.java index ce4938ad6..af62dfb26 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/Logger.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/Logger.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; public interface Logger { diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/MathUtil.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/MathUtil.java index 64b3d8b6b..a73711a0e 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/MathUtil.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/MathUtil.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; import net.jafama.FastMath; @@ -145,7 +152,7 @@ public final class MathUtil { r = FastMath.sqrt(-FastMath.log(r)); if(r <= 5) { - r += -1.6; + r -= 1.6; val = (((((((r * 7.7454501427834140764e-4 + .0227238449892691845833) * r + .24178072517745061177) * r + 1.27045825245236838258) * r + @@ -159,7 +166,7 @@ public final class MathUtil { r + 1.6763848301838038494) * r + 2.05319162663775882187) * r + 1); } else { - r += -5; + r -= 5; val = (((((((r * 2.01033439929228813265e-7 + 2.71155556874348757815e-5) * r + .0012426609473880784386) * r + .026532189526576123093) * diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/StringIdentifiable.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/StringIdentifiable.java index 1d1af1abc..dd46ff924 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/StringIdentifiable.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/StringIdentifiable.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; public interface StringIdentifiable { diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java index 2886c0d19..437043ea0 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/StringUtil.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util; import java.io.File; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Construct.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Construct.java index 795e7ad52..678a98b2d 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Construct.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Construct.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.generic; import java.util.function.Supplier; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java index 65c84ff9e..ca9735d03 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/Lazy.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.generic; import java.util.function.Supplier; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java index 127751fea..9c8c7283b 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/either/Either.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.generic.either; import org.jetbrains.annotations.Contract; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java index 538684162..c61febdaa 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/ImmutablePair.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.generic.pair; import org.jetbrains.annotations.Contract; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java index d94f67551..96819756c 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/generic/pair/Pair.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.generic.pair; import org.jetbrains.annotations.Contract; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/math/Sampler.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/math/Sampler.java index 242c706d4..74999723f 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/math/Sampler.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/math/Sampler.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.math; @FunctionalInterface diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java index 22969ba2b..eb6b07948 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableBoolean.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.mutable; import org.jetbrains.annotations.NotNull; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java index 9ee19e544..c3edfdd20 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableDouble.java @@ -1,9 +1,19 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.mutable; import org.jetbrains.annotations.NotNull; +import java.io.Serial; + public class MutableDouble extends MutableNumber { + @Serial private static final long serialVersionUID = -2218110876763640053L; public MutableDouble(Double value) { diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java index c0b7f971f..ed1abadd9 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableInteger.java @@ -1,9 +1,19 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.mutable; import org.jetbrains.annotations.NotNull; +import java.io.Serial; + public class MutableInteger extends MutableNumber { + @Serial private static final long serialVersionUID = -4427935901819632745L; public MutableInteger(Integer value) { diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java index a9396cf1a..ce9fe2874 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutableNumber.java @@ -1,7 +1,18 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.mutable; +import java.io.Serial; + + public abstract class MutableNumber extends Number implements MutablePrimitive { + @Serial private static final long serialVersionUID = 8619508342781664393L; protected T value; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java index 1146da714..5718aba48 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/MutablePrimitive.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.mutable; public interface MutablePrimitive extends Comparable { diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java index 29a65af63..c45a11ed4 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/mutable/package-info.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + /** * Mutable objects containing primitive types. */ diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java index f4132cc83..5cbf86bc7 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/ReflectionUtil.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.reflection; import org.jetbrains.annotations.NotNull; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java index 17032bfb9..57a35dbe1 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/reflection/TypeKey.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.reflection; import java.lang.reflect.AnnotatedParameterizedType; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java index db1eed6a7..a8f70e71b 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector2.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.vector; import net.jafama.FastMath; diff --git a/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java b/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java index a5a0a53d5..95d595799 100644 --- a/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java +++ b/common/api/util/src/main/java/com/dfsek/terra/api/util/vector/Vector3.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2020-2021 Polyhedral Development + * + * The Terra API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the common/api directory. + */ + package com.dfsek.terra.api.util.vector; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java index 9497e3d45..bdcf041ec 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra; import com.dfsek.tectonic.loading.TypeRegistry; diff --git a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java index 3b8e9567d..b2da42607 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java +++ b/common/implementation/src/main/java/com/dfsek/terra/InternalAddon.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra; import ca.solostudios.strata.Versions; diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java index a02d9aeea..14aaf74aa 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/DependencySorter.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java index 65cd138d7..ad4e22412 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/CircularDependencyException.java @@ -1,6 +1,29 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon.dependency; +import java.io.Serial; + + public class CircularDependencyException extends DependencyException{ + @Serial + private static final long serialVersionUID = -6098780459461482651L; + public CircularDependencyException(String message) { super(message); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java index 7b1f1034b..1b6ded135 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyException.java @@ -1,8 +1,30 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon.dependency; +import java.io.Serial; + public class DependencyException extends RuntimeException { + @Serial + private static final long serialVersionUID = 4864727433635612759L; + public DependencyException(String message) { super(message); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java index 0ea0f8c88..d6bff0b4b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java +++ b/common/implementation/src/main/java/com/dfsek/terra/addon/dependency/DependencyVersionException.java @@ -1,6 +1,29 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon.dependency; +import java.io.Serial; + + public class DependencyVersionException extends DependencyException{ + @Serial + private static final long serialVersionUID = 3564288935278878135L; + public DependencyVersionException(String message) { super(message); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java index 61fd6a53b..32a77a931 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/AddonsCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java index 6b314beb7..a662e6f63 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/CommandUtil.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import com.dfsek.terra.api.command.CommandManager; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/ExecutionState.java b/common/implementation/src/main/java/com/dfsek/terra/commands/ExecutionState.java index ce21a1cbe..52a2393c1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/ExecutionState.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/ExecutionState.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import java.util.HashMap; @@ -13,15 +30,15 @@ public final class ExecutionState { private final Map args = new HashMap<>(); private final CommandSender sender; - protected ExecutionState(CommandSender sender) { + public ExecutionState(CommandSender sender) { this.sender = sender; } - protected void addSwitch(String flag) { + public void addSwitch(String flag) { switches.add(flag); } - protected void addArgument(String arg, String value) { + public void addArgument(String arg, String value) { args.put(arg, value); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java index 2dae44768..a01312ec1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/GetBlockCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java index b5d668848..4fbe738d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/PacksCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java index 526151048..1d053ddf1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/ReloadCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java index e900d129e..009db7a6c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/TerraCommandManager.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import net.jafama.FastMath; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java index 1e213d6f8..eb70b941b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/VersionCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java index eb35eaf43..c3abd208f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands.profiler; import com.dfsek.terra.api.command.CommandTemplate; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java index 344e92492..4c51d63b2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileQueryCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands.profiler; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java index 13653496e..c3f7bb564 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileResetCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands.profiler; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java index 54685095c..7c7498b31 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStartCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands.profiler; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java index 313707ad5..5e8a9ec6e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java +++ b/common/implementation/src/main/java/com/dfsek/terra/commands/profiler/ProfileStopCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.commands.profiler; import com.dfsek.terra.api.Platform; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index e5f652a7d..c52adca10 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config; import ca.solostudios.strata.version.VersionRange; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java index c76583e78..379fc2e25 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/PluginConfigImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config; import com.dfsek.tectonic.annotations.Default; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java index ee589f5fb..692c82f70 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/dummy/DummyWorld.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.dummy; import com.dfsek.terra.api.block.entity.BlockEntity; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java index 37d04b7e2..e3d21903d 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/FolderLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.fileloaders; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java index fd4394c60..301cb6382 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/LoaderImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.fileloaders; import com.dfsek.tectonic.exception.ConfigException; @@ -33,7 +50,7 @@ public abstract class LoaderImpl implements Loader { * Open a subdirectory. * * @param directory Directory to open - * @param extension + * @param extension File extension */ @Override public LoaderImpl open(String directory, String extension) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java index 2633e24d4..b773ff1d2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/fileloaders/ZIPLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.fileloaders; import java.io.IOException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java index 8206d4325..8ad547f3e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LangUtil.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.lang; import java.io.File; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java index b97ac1e87..466ad18f9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/LanguageImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.lang; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java index c50c136d4..3957faa5b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/MultiLineMessage.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.lang; import java.util.Arrays; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java index a9cc98b8d..561bdf474 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/lang/SingleLineMessage.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.lang; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java index 67cd97caf..fca427665 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/GenericTemplateSupplierLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.config.MapConfiguration; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java index 8ee4a2aa0..bda205812 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/LinkedHashMapLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java index 018094013..faae5c9d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/MaterialSetLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index 0c24a50ec..4a958349e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java index d0c2da8ea..84501b78c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/RangeLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java index f7243134d..799eeeea6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/VersionRangeLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders; import ca.solostudios.strata.Versions; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java index 50fc99b76..9f59ebf30 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/BufferedImageLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java index f1e553ae6..29c32a1a2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/GridSpawnLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.loaders.config; import com.dfsek.tectonic.loading.ConfigLoader; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java index e6f813211..680c5359a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackAddonsTemplate.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.pack; import ca.solostudios.strata.version.VersionRange; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index e793d377d..ea5d231ba 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.pack; import ca.solostudios.strata.version.VersionRange; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java index e3b55a662..822caa86f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackPostTemplate.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Value; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java index c143aed93..664a7d3b3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackTemplate.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.pack; import com.dfsek.tectonic.annotations.Default; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java index 6b7de8bc1..48113b890 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/WorldConfigImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.pack; import java.lang.reflect.Type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java index 7e13e499e..dcb5de076 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaListLikePreprocessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.preprocessor; import com.dfsek.tectonic.config.Configuration; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java index ae8a61251..23edbe8f0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaMapPreprocessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.preprocessor; import com.dfsek.tectonic.config.Configuration; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java index 625d390ea..e58dd11a8 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaNumberPreprocessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.preprocessor; import com.dfsek.paralithic.eval.parser.Parser; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java index 8bbd761b6..fdf2e30a6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaPreprocessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.preprocessor; import com.dfsek.tectonic.config.Configuration; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java index 235b6fe24..6b2c6e573 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaStringPreprocessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.preprocessor; import com.dfsek.tectonic.config.Configuration; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java index 6f6d64342..ea65a063c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/preprocessor/MetaValuePreprocessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.preprocessor; import com.dfsek.tectonic.config.Configuration; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java index db8174d9d..16a307203 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/prototype/ProtoConfig.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.config.prototype; import com.dfsek.tectonic.annotations.Value; diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java index 549444f97..891102e2b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.event; import org.jetbrains.annotations.NotNull; diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java index 8c2a3f367..d138e8cf6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventManagerImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.event; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 2143c10e4..9d2a39349 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.event; import java.io.PrintWriter; diff --git a/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java index f1b870b1e..2a197d29f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java +++ b/common/implementation/src/main/java/com/dfsek/terra/math/GridSpawn.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.math; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/Frame.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/Frame.java index 30946f54b..0b4d2dae5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/Frame.java +++ b/common/implementation/src/main/java/com/dfsek/terra/profiler/Frame.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.profiler; public class Frame { diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java index f6d403ef9..ba30b9949 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/profiler/ProfilerImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.profiler; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java index 74ea70998..3578d80e0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java +++ b/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/MalformedStackException.java @@ -1,6 +1,27 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.profiler.exception; +import java.io.Serial; + + public class MalformedStackException extends ProfilerException { + @Serial private static final long serialVersionUID = -3009539681021691054L; public MalformedStackException(String message) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java b/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java index 4083ce08e..8a839249f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java +++ b/common/implementation/src/main/java/com/dfsek/terra/profiler/exception/ProfilerException.java @@ -1,6 +1,27 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.profiler.exception; +import java.io.Serial; + + public class ProfilerException extends RuntimeException { + @Serial private static final long serialVersionUID = 8206737998791649002L; public ProfilerException(String message) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java index a44b0f11a..58bf61a4a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/CheckedRegistryImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java index 7082aa9df..e82d27007 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/LockedRegistryImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java index fa00cc369..04adb953c 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/OpenRegistryImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java index bd76427f7..eebc8f7f6 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/RegistryFactoryImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.registry; import com.dfsek.tectonic.exception.LoadException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java index 1ff7aef57..1d6625a18 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/config/ConfigTypeRegistry.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.registry.config; import java.util.LinkedHashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java index ce48c7087..8db76e545 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/ConfigRegistry.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.registry.master; import com.dfsek.tectonic.exception.ConfigException; diff --git a/common/implementation/src/main/java/com/dfsek/terra/transform/MapTransform.java b/common/implementation/src/main/java/com/dfsek/terra/transform/MapTransform.java index 65203f85f..7bc2ab6d9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/transform/MapTransform.java +++ b/common/implementation/src/main/java/com/dfsek/terra/transform/MapTransform.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.transform; import java.util.HashMap; diff --git a/common/implementation/src/main/java/com/dfsek/terra/transform/TransformerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/transform/TransformerImpl.java index 78d66e3a4..9875a5e65 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/transform/TransformerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/transform/TransformerImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.transform; import java.util.ArrayList; diff --git a/common/implementation/src/main/java/com/dfsek/terra/util/FastRandom.java b/common/implementation/src/main/java/com/dfsek/terra/util/FastRandom.java index 2aff00c0e..ff0776d2a 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/util/FastRandom.java +++ b/common/implementation/src/main/java/com/dfsek/terra/util/FastRandom.java @@ -1,14 +1,33 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.util; import org.apache.commons.rng.core.source64.XoRoShiRo128PlusPlus; +import java.io.Serial; import java.util.Random; import java.util.SplittableRandom; public class FastRandom extends Random { + @Serial private static final long serialVersionUID = 4571946470190183260L; private XoRoShiRo128PlusPlus random; diff --git a/common/implementation/src/main/java/com/dfsek/terra/util/logging/DebugLogger.java b/common/implementation/src/main/java/com/dfsek/terra/util/logging/DebugLogger.java index 7bce332df..98acd5bc1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/util/logging/DebugLogger.java +++ b/common/implementation/src/main/java/com/dfsek/terra/util/logging/DebugLogger.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.util.logging; import com.dfsek.terra.api.util.Logger; diff --git a/common/implementation/src/main/java/com/dfsek/terra/util/logging/JavaLogger.java b/common/implementation/src/main/java/com/dfsek/terra/util/logging/JavaLogger.java index db193d191..6e7b42ca9 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/util/logging/JavaLogger.java +++ b/common/implementation/src/main/java/com/dfsek/terra/util/logging/JavaLogger.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.util.logging; import com.dfsek.terra.api.util.Logger; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java index 74acaf9c3..1c2aa3d0f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/SamplerCacheImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.world; import com.google.common.cache.CacheBuilder; diff --git a/common/implementation/src/test/java/command/CommandTest.java b/common/implementation/src/test/java/command/CommandTest.java index 670f1fbf9..0d2b72109 100644 --- a/common/implementation/src/test/java/command/CommandTest.java +++ b/common/implementation/src/test/java/command/CommandTest.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package command; import org.junit.jupiter.api.Test; diff --git a/common/implementation/src/test/java/profiler/ProfilerTest.java b/common/implementation/src/test/java/profiler/ProfilerTest.java index 8b35c7ab2..faa496421 100644 --- a/common/implementation/src/test/java/profiler/ProfilerTest.java +++ b/common/implementation/src/test/java/profiler/ProfilerTest.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package profiler; import org.junit.jupiter.api.Test; diff --git a/common/implementation/src/test/java/registry/RegistryTest.java b/common/implementation/src/test/java/registry/RegistryTest.java index 4efeee9b9..95f5385ca 100644 --- a/common/implementation/src/test/java/registry/RegistryTest.java +++ b/common/implementation/src/test/java/registry/RegistryTest.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package registry; import org.junit.jupiter.api.Test; diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java index e7ec26117..9dc096dd2 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon; import java.net.URL; diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java index 97f4e2d85..c2e349254 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/BootstrapAddonLoader.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon; import java.io.IOException; diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java index 45feaa36c..8f4eac420 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java @@ -1,6 +1,27 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon.exception; +import java.io.Serial; + + public class AddonLoadException extends RuntimeException { + @Serial private static final long serialVersionUID = -4949084729296580176L; public AddonLoadException(String message) { diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java index 88227e880..dd096b2c1 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java @@ -1,6 +1,27 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon.exception; +import java.io.Serial; + + public class CircularDependencyException extends AddonLoadException { + @Serial private static final long serialVersionUID = 7398510879124125121L; public CircularDependencyException(String message) { diff --git a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java index 422f61c96..21039211c 100644 --- a/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java @@ -1,6 +1,27 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.addon.exception; +import java.io.Serial; + + public class DependencyMissingException extends AddonLoadException { + @Serial private static final long serialVersionUID = -8419489102208521583L; public DependencyMissingException(String message) { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java index bf0bc9523..f7509a41f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitCommandSender.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit; import org.bukkit.ChatColor; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java index 7f2890192..fd8b0ad13 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitEntity.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit; import org.bukkit.Location; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java index 0f516fd20..6a9850282 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/BukkitPlayer.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit; import org.bukkit.Location; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java index a6f4f5846..b6b567c30 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/PlatformImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit; import com.dfsek.tectonic.exception.LoadException; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index deea1b7a0..39e63adb8 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit; import io.papermc.lib.PaperLib; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/BukkitCommandAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/BukkitCommandAdapter.java index 727b0ef57..21fe85c91 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/BukkitCommandAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/BukkitCommandAdapter.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.command; import org.bukkit.command.Command; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java index 64c735cdd..76af71c68 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/FixChunkCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.command; import com.dfsek.terra.api.command.CommandTemplate; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java index dfb2f4722..53789b127 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/command/SaveDataCommand.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.command; import com.dfsek.terra.api.command.CommandTemplate; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java index 729bf389a..27a2e0f75 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkData.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.generator; import org.bukkit.generator.ChunkGenerator; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java index 24afced54..430cbf1cb 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitChunkGeneratorWrapper.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.generator; import org.bukkit.World; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java index e204b9bf7..01355a1c7 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/generator/BukkitPopulatorWrapper.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.generator; import org.bukkit.Chunk; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java index f59dbf735..b4e7bc18c 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitItemHandle.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.handles; import org.bukkit.Material; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index c4c6917e6..d48e14eea 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.handles; import com.dfsek.tectonic.exception.LoadException; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index b38b78c39..730f33ce9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.listeners; import org.bukkit.Material; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java index 623ca73a9..80f80f193 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/PaperListener.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.listeners; import io.papermc.paper.event.world.StructureLocateEvent; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java index 6a515fc3b..fdf3b5cca 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/SpigotListener.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.listeners; import org.bukkit.entity.Villager; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java index 23dbb38b6..b7e32d920 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/ChunkCoordinate.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.population; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java index 06c5f17e4..3a6de00cf 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/PopulationManager.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.population; import org.bukkit.generator.BlockPopulator; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/SerializationUtil.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/SerializationUtil.java index 8f79d0fb1..40eb5e8d9 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/SerializationUtil.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/population/SerializationUtil.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.population; import java.io.File; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditNotFoundException.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditNotFoundException.java index c3f44f6b4..20afdc659 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditNotFoundException.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditNotFoundException.java @@ -1,6 +1,27 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.structure; +import java.io.Serial; + + public class WorldEditNotFoundException extends RuntimeException { + @Serial private static final long serialVersionUID = 3678822468346338227L; public WorldEditNotFoundException() { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditUtil.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditUtil.java index 6975e04c7..d330a02a0 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditUtil.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/structure/WorldEditUtil.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.structure; import com.sk89q.worldedit.IncompleteRegionException; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/MinecraftUtils.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/MinecraftUtils.java index 0c36bc946..98da508b2 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/MinecraftUtils.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/MinecraftUtils.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.util; public final class MinecraftUtils { diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/PaperUtil.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/PaperUtil.java index 52895788e..d7b06b93d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/PaperUtil.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/util/PaperUtil.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.util; import io.papermc.lib.PaperLib; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java index 074503435..1bf81c336 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitAdapter.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java index cbf1f7a66..219edc6d7 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiome.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world; import com.dfsek.terra.api.world.biome.Biome; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java index 532287b1d..5319847db 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitBiomeGrid.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world; import org.bukkit.generator.ChunkGenerator; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java index e9c4e17d1..f23bd0a86 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitChunk.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world; import org.jetbrains.annotations.NotNull; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java index 6fb53556e..5c8bfd57d 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitTree.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world; import org.bukkit.TreeType; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java index 69512869b..03260c0aa 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/BukkitWorld.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world; import java.io.File; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java index 92772fad5..a8db00757 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/BukkitBlockTypeAndItem.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.block; import org.bukkit.Material; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java index 4c08f5965..176e8bf21 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/data/BukkitBlockState.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.block.data; import org.bukkit.Material; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java index 05e7b0c3e..e4a70ee13 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitBlockEntity.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.block.state; import org.bukkit.block.Container; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java index 06abead59..ecde57209 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitContainer.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.block.state; import com.dfsek.terra.api.block.entity.Container; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java index 183e24d01..71485ea13 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitMobSpawner.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.block.state; import org.bukkit.block.CreatureSpawner; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java index ed558f1e0..65c6f303f 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/block/state/BukkitSign.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.block.state; import org.jetbrains.annotations.NotNull; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java index cce58857d..8f8786867 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/entity/BukkitEntityType.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.entity; import com.dfsek.terra.api.entity.EntityType; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java index 0c53b2b88..d4c5039b5 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitInventory.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.inventory; import com.dfsek.terra.api.inventory.Inventory; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java index 3410f5669..3aaa8a382 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemMeta.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.inventory; import org.bukkit.inventory.meta.Damageable; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java index d23d64b22..a3a9557cd 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/BukkitItemStack.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.inventory; import com.dfsek.terra.api.inventory.Item; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java index d433e9004..09e2e167b 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitDamageable.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.inventory.meta; import org.bukkit.inventory.meta.ItemMeta; diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java index ea9fb9b4a..13fc3b690 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/world/inventory/meta/BukkitEnchantment.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.bukkit.world.inventory.meta; import com.dfsek.terra.api.inventory.ItemStack; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java index 44d1a7b93..77509b378 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricAddon.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric; import ca.solostudios.strata.Versions; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java index 9d59c686a..703806cf3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric; import net.fabricmc.api.ModInitializer; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java index 014ca644b..34fdb4e14 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/PlatformImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric; import com.dfsek.tectonic.exception.LoadException; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java index 2acefc0d8..21243bba0 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/block/FabricBlockState.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.block; import net.minecraft.block.Blocks; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java index af0c85755..344cf4bf6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PostLoadCompatibilityOptions.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.config; import com.dfsek.tectonic.annotations.Default; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PreLoadCompatibilityOptions.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PreLoadCompatibilityOptions.java index 5a16254b3..82083a71a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PreLoadCompatibilityOptions.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/config/PreLoadCompatibilityOptions.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.config; import com.dfsek.tectonic.annotations.Default; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/BiomeRegistrationEvent.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/BiomeRegistrationEvent.java index 696817f41..db1f14346 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/BiomeRegistrationEvent.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/event/BiomeRegistrationEvent.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.event; import net.minecraft.util.registry.DynamicRegistryManager; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index d763b7afb..87adf9bc1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.generation; import com.mojang.serialization.Codec; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java index 0c3efdd4b..9596f7dfa 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.generation; import com.mojang.serialization.Codec; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index 3d2ad5bdf..da06264f3 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.generation; import com.mojang.serialization.Codec; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index c16e0b325..736503418 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.generation; import net.fabricmc.api.EnvType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java index 9248f8f4b..6084a68ac 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricItemHandle.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.handle; import com.mojang.brigadier.StringReader; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index 6d84de06c..b7b669003 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.handle; import com.mojang.brigadier.StringReader; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java index 575be7572..bf47617da 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/CommandManagerMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin; import com.mojang.brigadier.CommandDispatcher; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java index 55edfa5c7..faa5b97c9 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/ServerWorldMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin; import net.minecraft.server.MinecraftServer; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java index f9b786d8e..8eb770d19 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin; import net.minecraft.world.WorldAccess; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/BiomeEffectsAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/BiomeEffectsAccessor.java index c2bd74ec9..75f45f284 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/BiomeEffectsAccessor.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/BiomeEffectsAccessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.access; import net.minecraft.world.biome.BiomeEffects; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java index 4e81e3976..402985e00 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.access; import net.minecraft.client.world.GeneratorType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java index 380fe5dfe..34a087283 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.access; import net.minecraft.util.Identifier; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/StateAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/StateAccessor.java index 33c11f93c..1ec51c2dc 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/StateAccessor.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/StateAccessor.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.access; import net.minecraft.state.State; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java index 649d87b1d..3e6fb047f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/BiomeMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations; import net.minecraft.world.biome.Biome; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 79ca8b718..07feaba31 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java index a78e200e5..0d72d23e8 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockEntityMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.block; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java index 5aa2512fb..498ed63d6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/BlockMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.block; import net.minecraft.block.Block; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java index e774dbe6f..9cb8820f5 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/LootableContainerBlockEntityMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.block.state; import net.minecraft.block.entity.LootableContainerBlockEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index d187b0d16..ede48798d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.block.state; import net.minecraft.block.BlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java index 21343de9f..07eeffe49 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/SignBlockEntityMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.block.state; import net.minecraft.block.entity.SignBlockEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index 515539750..d17066626 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.chunk; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index 38dd250fc..62c84011d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.chunk; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java index 4b193430c..ea081aa6d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.chunk.data; import net.minecraft.util.math.BlockPos; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index 865a0802d..45573c0be 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.entity; import net.minecraft.entity.Entity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java index e503ed61f..825c73ece 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityTypeMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.entity; import net.minecraft.entity.EntityType; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java index 409b3e855..aebfd1597 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/PlayerEntityMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.entity; import net.minecraft.entity.player.PlayerEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java index 39de00c56..b887cd04d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/ServerCommandSourceMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.entity; import net.minecraft.server.command.ServerCommandSource; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java index 1b8e819b0..12b7ecd27 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/LockableContainerBlockEntityMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.inventory; import net.minecraft.block.entity.LockableContainerBlockEntity; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java index 203f4e7f6..ff99bf29a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.inventory.item; import net.minecraft.item.Item; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java index ad1f1188d..fd6356461 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.inventory.item; import net.minecraft.item.ItemStack; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java index 2af899aa4..cdda2e32f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/EnchantmentMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.inventory.meta; import net.minecraft.enchantment.Enchantment; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java index d4797d771..a83b86f22 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackDamageableMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.inventory.meta; import net.minecraft.item.ItemStack; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java index e940bb91a..5468dbaf2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/meta/ItemStackMetaMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.inventory.meta; import net.minecraft.item.ItemStack; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/package-info.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/package-info.java index b75181d61..262b1c464 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/package-info.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/package-info.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + /** * Mixins in this package implement Terra * interfaces in Minecraft classes. diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 0a0bf443c..6f01e114d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.world; import net.minecraft.block.FluidBlock; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 5d892e787..2ba20cd4e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.implementations.world; import net.minecraft.server.MinecraftServer; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java index a71ed21dd..f0751eb82 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.lifecycle.client; import net.minecraft.client.MinecraftClient; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/package-info.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/package-info.java index baeed30f7..ad90c31eb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/package-info.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/package-info.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + /** * Mixins that inject behavior into the client/server lifecycle. */ diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index c80ee3ab2..c898932b1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.lifecycle.server; import com.google.common.base.MoreObjects; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java index a17ccdba8..2d66a11da 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/ServerMainMixin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.mixin.lifecycle.server; import net.minecraft.server.Main; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java index b08b8a5e7..e5c9345d0 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricAdapter.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.util; import net.minecraft.block.BlockState; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index 0656691bf..ea35cf7cf 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.util; import com.mojang.serialization.Lifecycle; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java index 3f066a635..558ba12b1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/ProtoBiome.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.util; import net.minecraft.util.Identifier; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java index 770b93f8a..8b9c3603a 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.fabric.util; import com.sk89q.worldedit.IncompleteRegionException; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java index 8b19f381f..979d3da52 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/PlatformImpl.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.sponge; import org.spongepowered.api.Sponge; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java index f75ce253f..e2373308c 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/SpongeListener.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.sponge; import org.spongepowered.api.Server; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java index 4a03284be..109eb4750 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/TerraSpongePlugin.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.sponge; import com.google.inject.Inject; @@ -12,8 +29,8 @@ public class TerraSpongePlugin { private final PlatformImpl terraPlugin; @Inject - public TerraSpongePlugin(PluginContainer plugin, Game game) { - this.plugin = plugin; + public TerraSpongePlugin(Game game) { + this.plugin = null; this.terraPlugin = new PlatformImpl(this); game.eventManager().registerListeners(plugin, new SpongeListener(this)); } diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java index 35df19caa..71915b40a 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockState.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.sponge.block; import org.spongepowered.api.block.BlockTypes; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java index fef78ff61..98c56f1f8 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/block/SpongeBlockType.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.sponge.block; import org.spongepowered.api.block.BlockTypes; diff --git a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java index 19df58535..96b56568d 100644 --- a/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java +++ b/platforms/sponge/src/main/java/com/dfsek/terra/sponge/handle/SpongeWorldHandle.java @@ -1,3 +1,20 @@ +/* + * This file is part of Terra. + * + * Terra is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Terra is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Terra. If not, see . + */ + package com.dfsek.terra.sponge.handle; import org.spongepowered.api.block.BlockTypes; From c79ce49e4d67994d0e804c8ab1f1ea9fc3f6b814 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 20 Nov 2021 12:44:32 -0700 Subject: [PATCH 91/97] structure configtype impl --- common/addons/chunk-generator-noise-3d | 2 +- common/addons/config-feature | 2 +- common/addons/config-flora | 2 +- common/addons/config-ore | 2 +- common/addons/config-structure | 2 +- .../src/main/java/com/dfsek/terra/api/config/ConfigType.java | 4 +++- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d b/common/addons/chunk-generator-noise-3d index 0a14a4095..51b30fb81 160000 --- a/common/addons/chunk-generator-noise-3d +++ b/common/addons/chunk-generator-noise-3d @@ -1 +1 @@ -Subproject commit 0a14a40952f94648e3900515f85e095c6f174b87 +Subproject commit 51b30fb818daa2dd8e6a15308f15cd4ee68e4b5b diff --git a/common/addons/config-feature b/common/addons/config-feature index 44674dfc3..387a15954 160000 --- a/common/addons/config-feature +++ b/common/addons/config-feature @@ -1 +1 @@ -Subproject commit 44674dfc39e70e81c00fe3cf408054fe03844e58 +Subproject commit 387a159541ecd261f1eeda91c56757c842f195f9 diff --git a/common/addons/config-flora b/common/addons/config-flora index ae234cbe9..c39eaab27 160000 --- a/common/addons/config-flora +++ b/common/addons/config-flora @@ -1 +1 @@ -Subproject commit ae234cbe99b92f417abbe016fff087e7977eef5b +Subproject commit c39eaab27e59303044e585b3ab1ef0ca708f5257 diff --git a/common/addons/config-ore b/common/addons/config-ore index 5856844c2..a33315684 160000 --- a/common/addons/config-ore +++ b/common/addons/config-ore @@ -1 +1 @@ -Subproject commit 5856844c23b5a8a9839fa4a39def57c0bfc04917 +Subproject commit a3331568493aec776a36414031eab220367afb38 diff --git a/common/addons/config-structure b/common/addons/config-structure index a352e4fcb..bf76b07e7 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit a352e4fcbb4e31bebfabb56780832bd970ed3ca2 +Subproject commit bf76b07e7c51ad461a795d76f1cf73ca6fc38e9e diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java index 7802e2a50..27235f1c4 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/config/ConfigType.java @@ -15,7 +15,9 @@ import com.dfsek.terra.api.util.reflection.TypeKey; public interface ConfigType { - Supplier> registrySupplier(ConfigPack pack); + default Supplier> registrySupplier(ConfigPack pack) { + return pack.getRegistryFactory()::create; + } T getTemplate(ConfigPack pack, Platform platform); From da4d6b26d84e32337713d0f507f53e7bd42f5dfc Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 20 Nov 2021 17:30:04 -0700 Subject: [PATCH 92/97] pass structure id into TerraStructure --- common/addons/config-structure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/config-structure b/common/addons/config-structure index bf76b07e7..fa0ce93a4 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit bf76b07e7c51ad461a795d76f1cf73ca6fc38e9e +Subproject commit fa0ce93a457d31de3583e66dbc91539b603db070 From 4b944ee2feddc4369b3680e7cbee2a82d8b13b18 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 20 Nov 2021 18:09:40 -0700 Subject: [PATCH 93/97] update tooling for 1.18 --- .../com/dfsek/terra/CompilationConfig.kt | 4 +-- gradle/wrapper/gradle-wrapper.properties | 2 +- platforms/fabric/build.gradle.kts | 25 +++++++++++-------- .../src/main/resources/terra.mixins.json | 2 +- platforms/sponge/build.gradle.kts | 5 ---- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index e38e85ee3..ef4cacbc1 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -21,8 +21,8 @@ fun Project.configureCompilation() { apply(plugin = "idea") configure { - sourceCompatibility = JavaVersion.VERSION_16 - targetCompatibility = JavaVersion.VERSION_16 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } tasks.withType { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ce7429011..51a9f4744 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists org.gradle.jvmargs=-Xmx4096m \ No newline at end of file diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index b602d9ed2..856f615b5 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -1,11 +1,10 @@ import com.dfsek.terra.addonDir import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.modrinth.minotaur.TaskModrinthUpload -import net.fabricmc.loom.LoomGradleExtension import net.fabricmc.loom.task.RemapJarTask plugins { - id("fabric-loom").version("0.8-SNAPSHOT") + id("fabric-loom").version("0.10-SNAPSHOT") id("com.modrinth.minotaur").version("1.1.0") } @@ -17,13 +16,17 @@ tasks.named("shadowJar") { relocate("org.yaml", "com.dfsek.terra.lib.yaml") } +val minecraft = "1.18-pre1" +val yarn = "4:v2" +val fabricLoader = "0.12.5" + dependencies { "shadedApi"(project(":common:implementation")) - "minecraft"("com.mojang:minecraft:1.17.1") - "mappings"("net.fabricmc:yarn:1.17.1+build.1:v2") - "modImplementation"("net.fabricmc:fabric-loader:0.11.3") + "minecraft"("com.mojang:minecraft:$minecraft") + "mappings"("net.fabricmc:yarn:$minecraft+build.$yarn") + "modImplementation"("net.fabricmc:fabric-loader:$fabricLoader") "modCompileOnly"("com.sk89q.worldedit:worldedit-fabric-mc1.16:7.2.0-SNAPSHOT") { exclude(group = "com.google.guava", module = "guava") @@ -34,14 +37,12 @@ dependencies { } } -tasks.named("shadowJar") { - relocate("org.json", "com.dfsek.terra.lib.json") - relocate("org.yaml", "com.dfsek.terra.lib.yaml") +tasks.withType().configureEach { + options.release.set(17) } - -configure { - accessWidener("src/main/resources/terra.accesswidener") +loom { + accessWidener = file("src/main/resources/terra.accesswidener") refmapName = "terra-refmap.json" } @@ -56,6 +57,8 @@ val remapped = tasks.register("remapShadedJar") { } + + tasks.register("publishModrinthFabric") { dependsOn("remapShadedJar") group = "fabric" diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json index b41814596..f7d5d3039 100644 --- a/platforms/fabric/src/main/resources/terra.mixins.json +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "com.dfsek.terra.fabric.mixin", - "compatibilityLevel": "JAVA_16", + "compatibilityLevel": "JAVA_17", "mixins": [ "CommandManagerMixin", "ServerWorldMixin", diff --git a/platforms/sponge/build.gradle.kts b/platforms/sponge/build.gradle.kts index 9377541e6..9d6ca4baf 100644 --- a/platforms/sponge/build.gradle.kts +++ b/platforms/sponge/build.gradle.kts @@ -8,11 +8,6 @@ repositories { } } -java { - sourceCompatibility = JavaVersion.VERSION_16 - targetCompatibility = JavaVersion.VERSION_16 -} - dependencies { "shadedApi"(project(":common:implementation")) "annotationProcessor"("org.spongepowered:spongeapi:9.0.0-SNAPSHOT") From a6edb6aef690ed237625da7c2efcbd6540beb048 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 20 Nov 2021 18:37:33 -0700 Subject: [PATCH 94/97] pre5 --- platforms/fabric/build.gradle.kts | 24 +++++++------------ .../src/main/resources/terra.mixins.json | 2 +- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 856f615b5..87b488c48 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -4,7 +4,7 @@ import com.modrinth.minotaur.TaskModrinthUpload import net.fabricmc.loom.task.RemapJarTask plugins { - id("fabric-loom").version("0.10-SNAPSHOT") + id("fabric-loom").version("0.10.55") id("com.modrinth.minotaur").version("1.1.0") } @@ -16,8 +16,8 @@ tasks.named("shadowJar") { relocate("org.yaml", "com.dfsek.terra.lib.yaml") } -val minecraft = "1.18-pre1" -val yarn = "4:v2" +val minecraft = "1.18-pre5" +val yarn = "4" val fabricLoader = "0.12.5" @@ -25,16 +25,8 @@ dependencies { "shadedApi"(project(":common:implementation")) "minecraft"("com.mojang:minecraft:$minecraft") - "mappings"("net.fabricmc:yarn:$minecraft+build.$yarn") + "mappings"("net.fabricmc:yarn:$minecraft+build.$yarn:v2") "modImplementation"("net.fabricmc:fabric-loader:$fabricLoader") - - "modCompileOnly"("com.sk89q.worldedit:worldedit-fabric-mc1.16:7.2.0-SNAPSHOT") { - exclude(group = "com.google.guava", module = "guava") - exclude(group = "com.google.code.gson", module = "gson") - exclude(group = "it.unimi.dsi", module = "fastutil") - exclude(group = "org.apache.logging.log4j", module = "log4j-api") - exclude(group = "org.apache.logging.log4j", module = "log4j-core") - } } tasks.withType().configureEach { @@ -42,8 +34,10 @@ tasks.withType().configureEach { } loom { - accessWidener = file("src/main/resources/terra.accesswidener") - refmapName = "terra-refmap.json" + accessWidenerPath.set(file("src/main/resources/terra.accesswidener")) + mixin { + defaultRefmapName.set("terra-refmap.json") + } } val remapped = tasks.register("remapShadedJar") { @@ -57,8 +51,6 @@ val remapped = tasks.register("remapShadedJar") { } - - tasks.register("publishModrinthFabric") { dependsOn("remapShadedJar") group = "fabric" diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json index f7d5d3039..b41814596 100644 --- a/platforms/fabric/src/main/resources/terra.mixins.json +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "com.dfsek.terra.fabric.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_16", "mixins": [ "CommandManagerMixin", "ServerWorldMixin", From a447be3c507d6ce24ba3eb6369007ef0c9a14e6f Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 20 Nov 2021 20:56:57 -0700 Subject: [PATCH 95/97] launch on 1.18 --- .../com/dfsek/terra/CompilationConfig.kt | 4 +- common/addons/config-structure | 2 +- .../dfsek/terra/api/handle/WorldHandle.java | 10 -- common/implementation/build.gradle.kts | 2 +- .../bukkit/handles/BukkitWorldHandle.java | 11 +- platforms/fabric/build.gradle.kts | 2 +- .../dfsek/terra/fabric/FabricEntryPoint.java | 5 +- .../FabricChunkGeneratorWrapper.java | 123 +++++++++++------- .../fabric/generation/TerraBiomeSource.java | 4 +- .../fabric/generation/TerraGeneratorType.java | 5 +- .../fabric/handle/FabricWorldHandle.java | 12 -- .../mixin/access/GeneratorTypeAccessor.java | 4 +- .../mixin/access/MobSpawnerLogicAccessor.java | 6 +- .../state/MobSpawnerBlockEntityMixin.java | 4 +- .../chunk/ChunkRegionMixin.java | 13 +- .../chunk/WorldChunkMixin.java | 6 +- .../chunk/data/ProtoChunkMixin.java | 2 +- .../inventory/item/ItemStackMixin.java | 4 +- .../world/ChunkRegionMixin.java | 9 +- .../client/MinecraftClientMixin.java | 2 +- .../server/GeneratorOptionsMixin.java | 4 +- .../dfsek/terra/fabric/util/FabricUtil.java | 6 +- .../terra/fabric/util/WorldEditUtil.java | 48 ------- .../fabric/src/main/resources/fabric.mod.json | 2 +- .../src/main/resources/terra.mixins.json | 16 +-- 25 files changed, 126 insertions(+), 180 deletions(-) delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java diff --git a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt index ef4cacbc1..e38e85ee3 100644 --- a/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt +++ b/buildSrc/src/main/kotlin/com/dfsek/terra/CompilationConfig.kt @@ -21,8 +21,8 @@ fun Project.configureCompilation() { apply(plugin = "idea") configure { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_16 + targetCompatibility = JavaVersion.VERSION_16 } tasks.withType { diff --git a/common/addons/config-structure b/common/addons/config-structure index fa0ce93a4..04865538b 160000 --- a/common/addons/config-structure +++ b/common/addons/config-structure @@ -1 +1 @@ -Subproject commit fa0ce93a457d31de3583e66dbc91539b603db070 +Subproject commit 04865538bfa596f361c7364c607b492bbe754451 diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java b/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java index 3f66f098b..6d6b6f317 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/handle/WorldHandle.java @@ -27,14 +27,4 @@ public interface WorldHandle { EntityType getEntity(String id); - /** - * Get the locations selected by a player. (Usually via WorldEdit) - * - * @param player Player to get locations for - * - * @return Pair of locations. - */ - default Pair getSelectedLocation(Player player) { - throw new UnsupportedOperationException("Cannot get selection on this platform."); - } } diff --git a/common/implementation/build.gradle.kts b/common/implementation/build.gradle.kts index f815b8c68..9094d60d4 100644 --- a/common/implementation/build.gradle.kts +++ b/common/implementation/build.gradle.kts @@ -9,5 +9,5 @@ dependencies { "shadedImplementation"("com.dfsek.tectonic:yaml:2.1.2") "shadedImplementation"("org.yaml:snakeyaml:1.27") - "shadedImplementation"("org.ow2.asm:asm:9.0") + "shadedImplementation"("org.ow2.asm:asm:9.2") } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java index d48e14eea..d1b4f9613 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/handles/BukkitWorldHandle.java @@ -26,12 +26,8 @@ import java.util.Locale; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.vector.Vector3; -import com.dfsek.terra.bukkit.structure.WorldEditUtil; -import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.block.data.BukkitBlockState; import com.dfsek.terra.bukkit.world.entity.BukkitEntityType; @@ -64,10 +60,5 @@ public class BukkitWorldHandle implements WorldHandle { if(!id.startsWith("minecraft:")) throw new LoadException("Invalid entity identifier " + id); return new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(id.toUpperCase(Locale.ROOT).substring(10))); } - - @Override - public Pair getSelectedLocation(Player player) { - org.bukkit.Location[] locations = WorldEditUtil.getSelectionLocations(BukkitAdapter.adapt(player)); - return Pair.of(BukkitAdapter.adapt(locations[0]), BukkitAdapter.adapt(locations[1])); - } + } diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 87b488c48..6481d86bb 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -16,7 +16,7 @@ tasks.named("shadowJar") { relocate("org.yaml", "com.dfsek.terra.lib.yaml") } -val minecraft = "1.18-pre5" +val minecraft = "1.18-pre1" val yarn = "4" val fabricLoader = "0.12.5" diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java index 703806cf3..918c181aa 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -22,8 +22,6 @@ import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.gen.decorator.Decorator; -import net.minecraft.world.gen.decorator.NopeDecoratorConfig; import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.FeatureConfig; @@ -35,8 +33,7 @@ import com.dfsek.terra.fabric.generation.TerraBiomeSource; public class FabricEntryPoint implements ModInitializer { public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(DefaultFeatureConfig.CODEC); - public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT).decorate( - Decorator.NOPE.configure(NopeDecoratorConfig.INSTANCE)); + public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT); private static final PlatformImpl TERRA_PLUGIN = new PlatformImpl(); public static PlatformImpl getPlatform() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index 87adf9bc1..71681ccba 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -17,9 +17,21 @@ package com.dfsek.terra.fabric.generation; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.api.world.World; +import com.dfsek.terra.api.world.generator.ChunkData; +import com.dfsek.terra.api.world.generator.ChunkGenerator; +import com.dfsek.terra.api.world.generator.Chunkified; +import com.dfsek.terra.api.world.generator.GeneratorWrapper; +import com.dfsek.terra.fabric.FabricEntryPoint; +import com.dfsek.terra.fabric.block.FabricBlockState; +import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; +import com.dfsek.terra.util.FastRandom; + import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.block.BlockState; +import net.minecraft.class_6748; import net.minecraft.entity.SpawnGroup; import net.minecraft.server.world.ServerWorld; import net.minecraft.structure.StructureManager; @@ -34,29 +46,19 @@ import net.minecraft.world.SpawnHelper; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.SpawnSettings; import net.minecraft.world.biome.source.BiomeAccess; +import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; +import net.minecraft.world.biome.source.util.MultiNoiseUtil.NoiseValuePoint; import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.gen.ChunkRandom; -import net.minecraft.world.gen.GenerationStep; +import net.minecraft.world.gen.GenerationStep.Carver; import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.chunk.StructuresConfig; import net.minecraft.world.gen.chunk.VerticalBlockSample; -import net.minecraft.world.gen.feature.StructureFeature; +import net.minecraft.world.gen.feature.*; import org.jetbrains.annotations.Nullable; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.ChunkData; -import com.dfsek.terra.api.world.generator.ChunkGenerator; -import com.dfsek.terra.api.world.generator.Chunkified; -import com.dfsek.terra.api.world.generator.GeneratorWrapper; -import com.dfsek.terra.fabric.FabricEntryPoint; -import com.dfsek.terra.fabric.block.FabricBlockState; -import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; -import com.dfsek.terra.util.FastRandom; - public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.ChunkGenerator implements GeneratorWrapper { public static final Codec PACK_CODEC = RecordCodecBuilder.create( @@ -104,12 +106,17 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C } @Override - public void carve(long seed, BiomeAccess access, Chunk chunk, GenerationStep.Carver carver) { - if(pack.vanillaCaves()) { - super.carve(seed, access, chunk, carver); - } + public MultiNoiseSampler getMultiNoiseSampler() { + return (x, y, z) -> new NoiseValuePoint(0, 0, 0, 0, 0, 0); } + @Override + public void carve(ChunkRegion chunkRegion, long seed, BiomeAccess biomeAccess, StructureAccessor structureAccessor, Chunk chunk, + Carver generationStep) { + + } + + @Nullable @Override public BlockPos locateStructure(ServerWorld world, StructureFeature feature, BlockPos center, int radius, @@ -138,8 +145,8 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C } @Override - public void buildSurface(ChunkRegion region, Chunk chunk) { - // No-op + public void buildSurface(ChunkRegion region, StructureAccessor structures, Chunk chunk) { + // no op } @Override @@ -148,41 +155,49 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C int cx = region.getCenterPos().x; int cy = region.getCenterPos().z; Biome biome = region.getBiome((new ChunkPos(cx, cy)).getStartPos()); - ChunkRandom chunkRandom = new ChunkRandom(); - chunkRandom.setPopulationSeed(region.getSeed(), cx << 4, cy << 4); - SpawnHelper.populateEntities(region, biome, region.getCenterPos(), chunkRandom); + SpawnHelper.populateEntities(region, biome, region.getCenterPos(), region.getRandom()); } } + @Override + public int getWorldHeight() { + return 256; //fixme + } + public Pool getEntitySpawnList(Biome biome, StructureAccessor accessor, SpawnGroup group, BlockPos pos) { - if(accessor.getStructureAt(pos, true, StructureFeature.SWAMP_HUT).hasChildren()) { + if(!accessor.hasStructureReferences(pos)) { + return super.getEntitySpawnList(biome, accessor, group, pos); + } else { + if(accessor.method_38854(pos, StructureFeature.SWAMP_HUT).hasChildren()) { + if(group == SpawnGroup.MONSTER) { + return SwampHutFeature.MONSTER_SPAWNS; + } + + if(group == SpawnGroup.CREATURE) { + return SwampHutFeature.CREATURE_SPAWNS; + } + } + if(group == SpawnGroup.MONSTER) { - return StructureFeature.SWAMP_HUT.getMonsterSpawns(); + if(accessor.getStructureAt(pos, StructureFeature.PILLAGER_OUTPOST).hasChildren()) { + return PillagerOutpostFeature.MONSTER_SPAWNS; + } + + if(accessor.getStructureAt(pos, StructureFeature.MONUMENT).hasChildren()) { + return OceanMonumentFeature.MONSTER_SPAWNS; + } + + if(accessor.method_38854(pos, StructureFeature.FORTRESS).hasChildren()) { + return NetherFortressFeature.MONSTER_SPAWNS; + } } - if(group == SpawnGroup.CREATURE) { - return StructureFeature.SWAMP_HUT.getCreatureSpawns(); - } + return (group == SpawnGroup.UNDERGROUND_WATER_CREATURE || group == SpawnGroup.AXOLOTLS) && accessor.getStructureAt(pos, + StructureFeature.MONUMENT) + .hasChildren() + ? SpawnSettings.EMPTY_ENTRY_POOL + : super.getEntitySpawnList(biome, accessor, group, pos); } - - if(group == SpawnGroup.MONSTER) { - if(accessor.getStructureAt(pos, false, StructureFeature.PILLAGER_OUTPOST).hasChildren()) { - return StructureFeature.PILLAGER_OUTPOST.getMonsterSpawns(); - } - - if(accessor.getStructureAt(pos, false, StructureFeature.MONUMENT).hasChildren()) { - return StructureFeature.MONUMENT.getMonsterSpawns(); - } - - if(accessor.getStructureAt(pos, true, StructureFeature.FORTRESS).hasChildren()) { - return StructureFeature.FORTRESS.getMonsterSpawns(); - } - } - - return group == SpawnGroup.UNDERGROUND_WATER_CREATURE && accessor.getStructureAt(pos, false, StructureFeature.MONUMENT) - .hasChildren() - ? StructureFeature.MONUMENT.getUndergroundWaterCreatureSpawns() - : super.getEntitySpawnList(biome, accessor, group, pos); } @Override @@ -194,9 +209,9 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C } @Override - public CompletableFuture populateNoise(Executor executor, StructureAccessor accessor, Chunk chunk) { + public CompletableFuture populateNoise(Executor executor, class_6748 arg, StructureAccessor structureAccessor, Chunk chunk) { return CompletableFuture.supplyAsync(() -> { - World world = (World) ((StructureAccessorAccessor) accessor).getWorld(); + World world = (World) ((StructureAccessorAccessor) structureAccessor).getWorld(); delegate.generateChunkData(world, new FastRandom(), chunk.getPos().x, chunk.getPos().z, (ChunkData) chunk); delegate.getGenerationStages().forEach(populator -> { if(populator instanceof Chunkified) { @@ -207,6 +222,16 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C }, executor); } + @Override + public int getSeaLevel() { + return 0; //fixme + } + + @Override + public int getMinimumY() { + return 0; //fixmw + } + @Override public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView heightmapType) { int height = ((World) world).getMaxHeight(); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java index da06264f3..ac390c962 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraBiomeSource.java @@ -34,6 +34,8 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.fabric.FabricEntryPoint; import com.dfsek.terra.fabric.util.FabricUtil; +import net.minecraft.world.biome.source.util.MultiNoiseUtil.MultiNoiseSampler; + public class TerraBiomeSource extends BiomeSource { public static final Codec PACK_CODEC = (RecordCodecBuilder.create(config -> config.group( @@ -79,7 +81,7 @@ public class TerraBiomeSource extends BiomeSource { } @Override - public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) { + public Biome getBiome(int biomeX, int biomeY, int biomeZ, MultiNoiseSampler noiseSampler) { TerraBiome biome = pack.getBiomeProviderBuilder().getBiome(biomeX << 2, biomeZ << 2, seed); return biomeRegistry.get(new Identifier("terra", FabricUtil.createBiomeID(pack, biome.getID()))); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java index 736503418..fbfeeefc2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/TerraGeneratorType.java @@ -50,8 +50,7 @@ public class TerraGeneratorType extends GeneratorType { } @Override - protected ChunkGenerator getChunkGenerator(Registry biomeRegistry, - Registry chunkGeneratorSettingsRegistry, long seed) { - return new FabricChunkGeneratorWrapper(new TerraBiomeSource(biomeRegistry, seed, pack), seed, pack); + protected ChunkGenerator getChunkGenerator(DynamicRegistryManager manager, long seed) { + return new FabricChunkGeneratorWrapper(new TerraBiomeSource(manager.get(Registry.BIOME_KEY), seed, pack), seed, pack); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java index b7b669003..94440ad1f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/handle/FabricWorldHandle.java @@ -28,13 +28,10 @@ import net.minecraft.util.registry.Registry; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.entity.EntityType; -import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.handle.WorldHandle; -import com.dfsek.terra.api.util.generic.pair.Pair; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.fabric.block.FabricBlockState; import com.dfsek.terra.fabric.util.FabricAdapter; -import com.dfsek.terra.fabric.util.WorldEditUtil; public class FabricWorldHandle implements WorldHandle { @@ -75,13 +72,4 @@ public class FabricWorldHandle implements WorldHandle { return (EntityType) Registry.ENTITY_TYPE.get(identifier); } - @Override - public Pair getSelectedLocation(Player player) { - try { - Class.forName("com.sk89q.worldedit.WorldEdit"); - } catch(ClassNotFoundException e) { - throw new IllegalStateException("WorldEdit is not installed."); - } - return WorldEditUtil.getSelection(player); - } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java index 402985e00..0b218a0ed 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/GeneratorTypeAccessor.java @@ -34,6 +34,6 @@ public interface GeneratorTypeAccessor { } @Mutable - @Accessor("translationKey") - void setTranslationKey(Text translationKey); + @Accessor("displayName") + void setDisplayName(Text translationKey); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java index 34a087283..9ba869f29 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/access/MobSpawnerLogicAccessor.java @@ -19,14 +19,16 @@ package com.dfsek.terra.fabric.mixin.access; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.MobSpawnerEntry; import net.minecraft.world.MobSpawnerLogic; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(MobSpawnerLogic.class) public interface MobSpawnerLogicAccessor { - @Invoker("getEntityId") - Identifier callGetEntityId(World world, BlockPos blockPos); + @Accessor("spawnEntry") + MobSpawnerEntry getSpawnEntry(); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java index ede48798d..de9a0f7c7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/block/state/MobSpawnerBlockEntityMixin.java @@ -21,6 +21,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.entity.MobSpawnerBlockEntity; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.Registry; import net.minecraft.world.MobSpawnerLogic; @@ -48,7 +49,8 @@ public abstract class MobSpawnerBlockEntityMixin extends BlockEntity { public abstract MobSpawnerLogic getLogic(); public EntityType terra$getSpawnedType() { - return (EntityType) Registry.ENTITY_TYPE.get(((MobSpawnerLogicAccessor) getLogic()).callGetEntityId(world, pos)); + return (EntityType) Registry.ENTITY_TYPE.get( + Identifier.tryParse(((MobSpawnerLogicAccessor) getLogic()).getSpawnEntry().getNbt().getString("id"))); } public void terra$setSpawnedType(@NotNull EntityType creatureType) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java index d17066626..98ae41feb 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/ChunkRegionMixin.java @@ -36,26 +36,27 @@ import com.dfsek.terra.fabric.block.FabricBlockState; @Mixin(ChunkRegion.class) @Implements(@Interface(iface = Chunk.class, prefix = "terraChunk$", remap = Interface.Remap.NONE)) public abstract class ChunkRegionMixin { - @Final + @Shadow - private ChunkPos centerPos; + @Final + private net.minecraft.world.chunk.Chunk centerPos; public void terraChunk$setBlock(int x, int y, int z, @NotNull BlockState blockState, boolean physics) { - ((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)), + ((ChunkRegion) (Object) this).setBlockState(new BlockPos(x + (centerPos.getPos().x << 4), y, z + (centerPos.getPos().z << 4)), ((FabricBlockState) blockState).getHandle(), 0); } public @NotNull BlockState terraChunk$getBlock(int x, int y, int z) { return new FabricBlockState( - ((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.x << 4), y, z + (centerPos.z << 4)))); + ((ChunkRegion) (Object) this).getBlockState(new BlockPos(x + (centerPos.getPos().x << 4), y, z + (centerPos.getPos().z << 4)))); } public int terraChunk$getX() { - return centerPos.x; + return centerPos.getPos().x; } public int terraChunk$getZ() { - return centerPos.z; + return centerPos.getPos().z; } public World terraChunk$getWorld() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java index 62c84011d..7bc1b5e8b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/WorldChunkMixin.java @@ -53,7 +53,7 @@ public abstract class WorldChunkMixin { } public void terra$setBlock(int x, int y, int z, @NotNull BlockState blockState) { - ((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false); + ((net.minecraft.world.chunk.Chunk) (Object) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false); } public @NotNull BlockState terra$getBlock(int x, int y, int z) { @@ -61,11 +61,11 @@ public abstract class WorldChunkMixin { } public int terra$getX() { - return ((net.minecraft.world.chunk.Chunk) this).getPos().x; + return ((net.minecraft.world.chunk.Chunk) (Object) this).getPos().x; } public int terra$getZ() { - return ((net.minecraft.world.chunk.Chunk) this).getPos().z; + return ((net.minecraft.world.chunk.Chunk) (Object) this).getPos().z; } public World terra$getWorld() { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java index ea081aa6d..37a011302 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/chunk/data/ProtoChunkMixin.java @@ -38,7 +38,7 @@ public abstract class ProtoChunkMixin { public abstract net.minecraft.block.BlockState getBlockState(BlockPos pos); public void terra$setBlock(int x, int y, int z, @NotNull BlockState blockState) { - ((net.minecraft.world.chunk.Chunk) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false); + ((net.minecraft.world.chunk.Chunk) (Object) this).setBlockState(new BlockPos(x, y, z), ((FabricBlockState) blockState).getHandle(), false); } public @NotNull BlockState terra$getBlock(int x, int y, int z) { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java index fd6356461..3dd880d2f 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/inventory/item/ItemStackMixin.java @@ -46,7 +46,7 @@ public abstract class ItemStackMixin { public abstract boolean isDamageable(); @Shadow - public abstract void setTag(@Nullable NbtCompound tag); + public abstract void setNbt(@Nullable NbtCompound tag); public int terra$getAmount() { return getCount(); @@ -66,7 +66,7 @@ public abstract class ItemStackMixin { @SuppressWarnings("ConstantConditions") public void terra$setItemMeta(ItemMeta meta) { - setTag(((ItemStack) (Object) meta).getTag()); + setNbt(((ItemStack) (Object) meta).getNbt()); } @Intrinsic diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 6f01e114d..426c273b1 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -23,9 +23,10 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ChunkRegion; import net.minecraft.world.ServerWorldAccess; -import net.minecraft.world.TickScheduler; import net.minecraft.world.WorldAccess; import net.minecraft.world.chunk.ChunkStatus; +import net.minecraft.world.tick.OrderedTick; +import net.minecraft.world.tick.QueryableTickScheduler; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Implements; import org.spongepowered.asm.mixin.Interface; @@ -68,7 +69,7 @@ public abstract class ChunkRegionMixin { private long seed; @Shadow - public abstract TickScheduler getFluidTickScheduler(); + public abstract QueryableTickScheduler getFluidTickScheduler(); @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/server/world/ServerWorld;Ljava/util/List;Lnet/minecraft/world/chunk/ChunkStatus;I)V") @@ -91,8 +92,8 @@ public abstract class ChunkRegionMixin { BlockPos pos = new BlockPos(x, y, z); ((ChunkRegion) (Object) this).setBlockState(pos, ((FabricBlockState) data).getHandle(), physics ? 3 : 1042); if(physics && ((FabricBlockState) data).getHandle().getBlock() instanceof FluidBlock) { - getFluidTickScheduler().schedule(pos, ((FluidBlock) ((FabricBlockState) data).getHandle().getBlock()).getFluidState( - ((FabricBlockState) data).getHandle()).getFluid(), 0); + getFluidTickScheduler().scheduleTick(OrderedTick.create(((FluidBlock) ((FabricBlockState) data).getHandle().getBlock()).getFluidState( + ((FabricBlockState) data).getHandle()).getFluid(), pos)); } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java index f0751eb82..3dfd8c8c5 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/client/MinecraftClientMixin.java @@ -45,7 +45,7 @@ public class MinecraftClientMixin { FabricEntryPoint.getPlatform().getConfigRegistry().forEach(pack -> { final GeneratorType generatorType = new TerraGeneratorType(pack); //noinspection ConstantConditions - ((GeneratorTypeAccessor) generatorType).setTranslationKey(new LiteralText("Terra:" + pack.getID())); + ((GeneratorTypeAccessor) generatorType).setDisplayName(new LiteralText("Terra:" + pack.getID())); GeneratorTypeAccessor.getValues().add(1, generatorType); }); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java index c898932b1..1eac6ce0e 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/lifecycle/server/GeneratorOptionsMixin.java @@ -76,8 +76,8 @@ public abstract class GeneratorOptionsMixin { Registry dimensionTypes = registryManager.get(Registry.DIMENSION_TYPE_KEY); Registry biomeRegistry = registryManager.get(Registry.BIOME_KEY); Registry chunkGeneratorSettings = registryManager.get(Registry.CHUNK_GENERATOR_SETTINGS_KEY); - SimpleRegistry dimensionOptions = DimensionType.createDefaultDimensionOptions(dimensionTypes, biomeRegistry, - chunkGeneratorSettings, l); + SimpleRegistry dimensionOptions = DimensionType.createDefaultDimensionOptions(registryManager, + l, false); prop = prop.substring(prop.indexOf(":") + 1); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index ea35cf7cf..f6ad93928 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -74,10 +74,8 @@ public final class FabricUtil { GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); - generationSettings.surfaceBuilder( - vanilla.getGenerationSettings().getSurfaceBuilder()); // It needs a surfacebuilder, even though we dont use it. - generationSettings.feature(GenerationStep.Feature.VEGETAL_DECORATION, FabricEntryPoint.POPULATOR_CONFIGURED_FEATURE); + generationSettings.feature(GenerationStep.Feature.VEGETAL_DECORATION, FabricEntryPoint.POPULATOR_CONFIGURED_FEATURE.method_39595()); if(pack.vanillaCaves()) { for(GenerationStep.Carver carver : GenerationStep.Carver.values()) { @@ -144,8 +142,6 @@ public final class FabricUtil { return new Biome.Builder() .precipitation(vanilla.getPrecipitation()) .category(vanilla.getCategory()) - .depth(vanilla.getDepth()) - .scale(vanilla.getScale()) .temperature(vanilla.getTemperature()) .downfall(vanilla.getDownfall()) .effects(effects.build()) diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java deleted file mode 100644 index 8b9c3603a..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/WorldEditUtil.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * This file is part of Terra. - * - * Terra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Terra is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Terra. If not, see . - */ - -package com.dfsek.terra.fabric.util; - -import com.sk89q.worldedit.IncompleteRegionException; -import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.regions.Region; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.world.World; - -import com.dfsek.terra.api.entity.Player; -import com.dfsek.terra.api.util.generic.pair.Pair; -import com.dfsek.terra.api.util.vector.Vector3; - - -public final class WorldEditUtil { - public static Pair getSelection(Player player) { - WorldEdit worldEdit = WorldEdit.getInstance(); - try { - Region selection = worldEdit.getSessionManager() - .get(com.sk89q.worldedit.fabric.FabricAdapter.adaptPlayer((ServerPlayerEntity) player)) - .getSelection(com.sk89q.worldedit.fabric.FabricAdapter.adapt((World) player.world())); - BlockVector3 min = selection.getMinimumPoint(); - BlockVector3 max = selection.getMaximumPoint(); - Vector3 l1 = new Vector3(min.getBlockX(), min.getBlockY(), min.getBlockZ()); - Vector3 l2 = new Vector3(max.getBlockX(), max.getBlockY(), max.getBlockZ()); - return Pair.of(l1, l2); - } catch(IncompleteRegionException e) { - throw new IllegalStateException("No selection has been made", e); - } - } -} diff --git a/platforms/fabric/src/main/resources/fabric.mod.json b/platforms/fabric/src/main/resources/fabric.mod.json index 3de26382d..e713cb411 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -25,7 +25,7 @@ ], "depends": { "fabricloader": ">=0.7.4", - "minecraft": "1.17.x" + "minecraft": "1.18.x" }, "accessWidener": "terra.accesswidener" } \ No newline at end of file diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json index b41814596..d7de34c52 100644 --- a/platforms/fabric/src/main/resources/terra.mixins.json +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -1,9 +1,9 @@ { - "required": true, - "minVersion": "0.8", - "package": "com.dfsek.terra.fabric.mixin", + "required": true, + "minVersion": "0.8", + "package": "com.dfsek.terra.fabric.mixin", "compatibilityLevel": "JAVA_16", - "mixins": [ + "mixins": [ "CommandManagerMixin", "ServerWorldMixin", "StructureAccessorAccessor", @@ -33,16 +33,16 @@ "implementations.world.ChunkRegionMixin", "implementations.world.ServerWorldMixin" ], - "client": [ + "client": [ "access.GeneratorTypeAccessor", "lifecycle.client.MinecraftClientMixin" ], - "server": [ + "server": [ "lifecycle.server.GeneratorOptionsMixin", "lifecycle.server.ServerMainMixin" ], - "injectors": { + "injectors": { "defaultRequire": 1 }, - "refmap": "terra-refmap.json" + "refmap": "terra-refmap.json" } \ No newline at end of file From d506f5f3a3b9898ba49bef7fec0b4c65e9fdc791 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 20 Nov 2021 22:34:40 -0700 Subject: [PATCH 96/97] fix BinaryColumn --- .../api/structure/feature/BinaryColumn.java | 2 +- .../dfsek/terra/fabric/FabricEntryPoint.java | 13 ----- .../FabricChunkGeneratorWrapper.java | 17 +++++- .../fabric/generation/PopulatorFeature.java | 53 ------------------- .../dfsek/terra/fabric/util/FabricUtil.java | 3 -- 5 files changed, 16 insertions(+), 72 deletions(-) delete mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java diff --git a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java index d5ca60afb..56a8776e8 100644 --- a/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java +++ b/common/api/core/src/main/java/com/dfsek/terra/api/structure/feature/BinaryColumn.java @@ -31,7 +31,7 @@ public class BinaryColumn { public void forEach(IntConsumer consumer) { for(int y = 0; y < data.length; y++) { if(data[y]) { - consumer.accept(y - minY); + consumer.accept(y + minY); } } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java index 918c181aa..de2e95db2 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/FabricEntryPoint.java @@ -19,21 +19,13 @@ package com.dfsek.terra.fabric; import net.fabricmc.api.ModInitializer; import net.minecraft.util.Identifier; -import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.DefaultFeatureConfig; -import net.minecraft.world.gen.feature.FeatureConfig; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; -import com.dfsek.terra.fabric.generation.PopulatorFeature; import com.dfsek.terra.fabric.generation.TerraBiomeSource; public class FabricEntryPoint implements ModInitializer { - public static final PopulatorFeature POPULATOR_FEATURE = new PopulatorFeature(DefaultFeatureConfig.CODEC); - public static final ConfiguredFeature POPULATOR_CONFIGURED_FEATURE = POPULATOR_FEATURE.configure(FeatureConfig.DEFAULT); private static final PlatformImpl TERRA_PLUGIN = new PlatformImpl(); public static PlatformImpl getPlatform() { @@ -43,11 +35,6 @@ public class FabricEntryPoint implements ModInitializer { @Override public void onInitialize() { // register the things - Registry.register(Registry.FEATURE, new Identifier("terra", "populator"), POPULATOR_FEATURE); - RegistryKey> floraKey = RegistryKey.of(Registry.CONFIGURED_FEATURE_KEY, - new Identifier("terra", "populator")); - Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, floraKey.getValue(), POPULATOR_CONFIGURED_FEATURE); - Registry.register(Registry.CHUNK_GENERATOR, new Identifier("terra:terra"), FabricChunkGeneratorWrapper.CODEC); Registry.register(Registry.BIOME_SOURCE, new Identifier("terra:terra"), TerraBiomeSource.CODEC); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java index 71681ccba..d5738270b 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/FabricChunkGeneratorWrapper.java @@ -43,6 +43,7 @@ import net.minecraft.world.ChunkRegion; import net.minecraft.world.HeightLimitView; import net.minecraft.world.Heightmap; import net.minecraft.world.SpawnHelper; +import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.SpawnSettings; import net.minecraft.world.biome.source.BiomeAccess; @@ -222,14 +223,26 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C }, executor); } + @Override + public void generateFeatures(StructureWorldAccess world, Chunk chunk, StructureAccessor structureAccessor) { + delegate.getGenerationStages().forEach(populator -> { + if(!(populator instanceof Chunkified)) { + populator.populate((World) world, (com.dfsek.terra.api.world.Chunk) world); + } + }); + if(pack.vanillaFlora()) { + super.generateFeatures(world, chunk, structureAccessor); + } + } + @Override public int getSeaLevel() { - return 0; //fixme + return 64; //fixme } @Override public int getMinimumY() { - return 0; //fixmw + return -64; //fixmw } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java deleted file mode 100644 index 9596f7dfa..000000000 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/generation/PopulatorFeature.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of Terra. - * - * Terra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Terra is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Terra. If not, see . - */ - -package com.dfsek.terra.fabric.generation; - -import com.mojang.serialization.Codec; -import net.minecraft.world.StructureWorldAccess; -import net.minecraft.world.gen.chunk.ChunkGenerator; -import net.minecraft.world.gen.feature.DefaultFeatureConfig; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.util.FeatureContext; - -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.generator.Chunkified; - - -/** - * Feature wrapper for Terra populator - */ -public class PopulatorFeature extends Feature { - public PopulatorFeature(Codec codec) { - super(codec); - } - - @Override - public boolean generate(FeatureContext context) { - ChunkGenerator chunkGenerator = context.getGenerator(); - if(!(chunkGenerator instanceof FabricChunkGeneratorWrapper)) return true; - StructureWorldAccess world = context.getWorld(); - FabricChunkGeneratorWrapper gen = (FabricChunkGeneratorWrapper) chunkGenerator; - gen.getHandle().getGenerationStages().forEach(populator -> { - if(!(populator instanceof Chunkified)) { - populator.populate((World) world, (Chunk) world); - } - }); - return true; - } -} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java index f6ad93928..9cc44a022 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/util/FabricUtil.java @@ -74,9 +74,6 @@ public final class FabricUtil { GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); - - generationSettings.feature(GenerationStep.Feature.VEGETAL_DECORATION, FabricEntryPoint.POPULATOR_CONFIGURED_FEATURE.method_39595()); - if(pack.vanillaCaves()) { for(GenerationStep.Carver carver : GenerationStep.Carver.values()) { for(Supplier> configuredCarverSupplier : vanilla.getGenerationSettings().getCarversForStep(carver)) { From bb515444c6fe7321a1ed0c542e313c04616f6266 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 20 Nov 2021 22:34:46 -0700 Subject: [PATCH 97/97] fix BinaryColumn --- common/addons/config-locators | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/config-locators b/common/addons/config-locators index f978a07da..02df59482 160000 --- a/common/addons/config-locators +++ b/common/addons/config-locators @@ -1 +1 @@ -Subproject commit f978a07daf74b6ae0f0c810ae6eba75e8b0387b7 +Subproject commit 02df5948217688d56951de52711cc7338c7595c0