refactor rotations, reimplement RotationUtil

This commit is contained in:
dfsek
2020-12-22 22:48:31 -07:00
parent 062c9b5efb
commit 1158ae958a
16 changed files with 20 additions and 27 deletions

View File

@@ -2,8 +2,8 @@ package com.dfsek.terra.api.structures.parser.lang;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
import java.util.List;

View File

@@ -2,8 +2,8 @@ package com.dfsek.terra.api.structures.parser.lang;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public interface Item<T> {
T apply(Location location, Rotation rotation);

View File

@@ -3,8 +3,8 @@ package com.dfsek.terra.api.structures.parser.lang.constants;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public abstract class ConstantExpression<T> implements Returnable<T> {
private final T constant;

View File

@@ -5,8 +5,8 @@ import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Block;
import com.dfsek.terra.api.structures.parser.lang.Keyword;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public class IfKeyword implements Keyword<Void> {
private final Block conditional;

View File

@@ -3,8 +3,8 @@ package com.dfsek.terra.api.structures.parser.lang.keywords;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Keyword;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public class ReturnKeyword implements Keyword<Void> {
private final Position position;

View File

@@ -5,8 +5,8 @@ import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Block;
import com.dfsek.terra.api.structures.parser.lang.Keyword;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public class WhileKeyword implements Keyword<Void> {
private final Block conditional;

View File

@@ -3,8 +3,8 @@ package com.dfsek.terra.api.structures.parser.lang.operations;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public abstract class BinaryOperation<I, O> implements Returnable<O> {
private final Returnable<I> left;

View File

@@ -3,8 +3,8 @@ package com.dfsek.terra.api.structures.parser.lang.operations;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public abstract class UnaryOperation<T> implements Returnable<T> {
private final Returnable<T> input;

View File

@@ -4,8 +4,8 @@ import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Item;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public class Assignment<T> implements Item<T> {
private final Variable<T> delegate;

View File

@@ -3,8 +3,8 @@ package com.dfsek.terra.api.structures.parser.lang.variables;
import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public class Getter implements Returnable<Object> {
private final Variable<?> delegate;

View File

@@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression;
import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
public class BlockFunction implements Function<Void> {
private final BlockData data;

View File

@@ -7,10 +7,10 @@ import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.api.structures.world.LandCheck;
import com.dfsek.terra.api.structures.world.OceanCheck;
import com.dfsek.terra.structure.Rotation;
public class CheckFunction implements Function<String> {
private final TerraPlugin main;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.structure;
package com.dfsek.terra.api.structures.structure;
import net.jafama.FastMath;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.structure;
package com.dfsek.terra.api.structures.structure;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.block.Axis;
@@ -11,15 +11,16 @@ import com.dfsek.terra.api.platform.block.data.Rail;
import com.dfsek.terra.api.platform.block.data.RedstoneWire;
import com.dfsek.terra.api.platform.block.data.Rotatable;
import com.dfsek.terra.api.platform.block.data.Wall;
import com.dfsek.terra.structure.Rotation;
import com.google.common.collect.Sets;
import net.jafama.FastMath;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public final class RotationUtil {
public class RotationUtil {
private static final Set<BlockFace> CARDINALS = Sets.newHashSet(BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST);
/**
* Rotate and mirror a coordinate pair.
*
@@ -247,14 +248,6 @@ public final class RotationUtil {
return orig;
}
private static final Set<BlockFace> CARDINALS = new HashSet<>();
static {
CARDINALS.add(BlockFace.NORTH);
CARDINALS.add(BlockFace.SOUTH);
CARDINALS.add(BlockFace.EAST);
CARDINALS.add(BlockFace.WEST);
}
public static void rotateBlockData(BlockData data, Rotation r) {
if(data instanceof Rotatable) {
BlockFace rt = getRotatedFace(((Rotatable) data).getRotation(), r);

View File

@@ -8,8 +8,8 @@ import com.dfsek.terra.api.structures.parser.lang.Block;
import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.structure.Rotation;
import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.Test;

View File

@@ -6,9 +6,9 @@ import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Block;
import com.dfsek.terra.api.structures.script.builders.BlockFunctionBuilder;
import com.dfsek.terra.api.structures.script.builders.CheckFunctionBuilder;
import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.bukkit.BukkitWorld;
import com.dfsek.terra.bukkit.command.DebugCommand;
import com.dfsek.terra.structure.Rotation;
import org.apache.commons.io.IOUtils;
import org.bukkit.block.Sign;
import org.bukkit.command.Command;