Skip to content

Commit 44176f7

Browse files
committed
fix Marks
1 parent 47cad8a commit 44176f7

20 files changed

+45
-61
lines changed

common/src/main/java/com/dfsek/terra/api/math/vector/Location.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ public Location add(Vector3 add) {
106106
return this;
107107
}
108108

109+
public Location add(Location add) {
110+
vector.add(add.toVector());
111+
return this;
112+
}
113+
109114
@Override
110115
public boolean equals(Object obj) {
111116
if(!(obj instanceof Location)) {

common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
import com.dfsek.terra.api.structures.script.builders.EntityFunctionBuilder;
1515
import com.dfsek.terra.api.structures.script.builders.GetMarkFunctionBuilder;
1616
import com.dfsek.terra.api.structures.script.builders.LootFunctionBuilder;
17-
import com.dfsek.terra.api.structures.script.builders.MarkFunctionBuilder;
1817
import com.dfsek.terra.api.structures.script.builders.PullFunctionBuilder;
1918
import com.dfsek.terra.api.structures.script.builders.RandomFunctionBuilder;
2019
import com.dfsek.terra.api.structures.script.builders.RecursionsFunctionBuilder;
20+
import com.dfsek.terra.api.structures.script.builders.SetMarkFunctionBuilder;
2121
import com.dfsek.terra.api.structures.script.builders.StateFunctionBuilder;
2222
import com.dfsek.terra.api.structures.script.builders.StructureFunctionBuilder;
2323
import com.dfsek.terra.api.structures.script.builders.UnaryNumberFunctionBuilder;
@@ -58,7 +58,7 @@ public StructureScript(InputStream inputStream, TerraPlugin main, ScriptRegistry
5858
.registerFunction("structure", new StructureFunctionBuilder(registry, main))
5959
.registerFunction("randomInt", new RandomFunctionBuilder())
6060
.registerFunction("recursions", new RecursionsFunctionBuilder())
61-
.registerFunction("setMark", new MarkFunctionBuilder())
61+
.registerFunction("setMark", new SetMarkFunctionBuilder())
6262
.registerFunction("getMark", new GetMarkFunctionBuilder())
6363
.registerFunction("pull", new PullFunctionBuilder(main))
6464
.registerFunction("loot", new LootFunctionBuilder(main, lootRegistry))

common/src/main/java/com/dfsek/terra/api/structures/script/builders/GetMarkFunctionBuilder.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.dfsek.terra.api.structures.script.builders;
22

3-
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
43
import com.dfsek.terra.api.structures.parser.lang.Returnable;
54
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
65
import com.dfsek.terra.api.structures.script.functions.GetMarkFunction;
@@ -15,7 +14,7 @@ public GetMarkFunctionBuilder() {
1514

1615
@SuppressWarnings("unchecked")
1716
@Override
18-
public GetMarkFunction build(List<Returnable<?>> argumentList, Position position) throws ParseException {
17+
public GetMarkFunction build(List<Returnable<?>> argumentList, Position position) {
1918
return new GetMarkFunction((Returnable<Number>) argumentList.get(0), (Returnable<Number>) argumentList.get(1), (Returnable<Number>) argumentList.get(2), position);
2019
}
2120

common/src/main/java/com/dfsek/terra/api/structures/script/builders/MarkFunctionBuilder.java renamed to common/src/main/java/com/dfsek/terra/api/structures/script/builders/SetMarkFunctionBuilder.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
44
import com.dfsek.terra.api.structures.parser.lang.Returnable;
55
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
6-
import com.dfsek.terra.api.structures.script.functions.MarkFunction;
6+
import com.dfsek.terra.api.structures.script.functions.SetMarkFunction;
77
import com.dfsek.terra.api.structures.tokenizer.Position;
88

99
import java.util.List;
1010

11-
public class MarkFunctionBuilder implements FunctionBuilder<MarkFunction> {
11+
public class SetMarkFunctionBuilder implements FunctionBuilder<SetMarkFunction> {
1212

13-
public MarkFunctionBuilder() {
13+
public SetMarkFunctionBuilder() {
1414
}
1515

1616
@SuppressWarnings("unchecked")
1717
@Override
18-
public MarkFunction build(List<Returnable<?>> argumentList, Position position) throws ParseException {
19-
return new MarkFunction((Returnable<Number>) argumentList.get(0), (Returnable<Number>) argumentList.get(1), (Returnable<Number>) argumentList.get(2), (Returnable<String>) argumentList.get(3), position);
18+
public SetMarkFunction build(List<Returnable<?>> argumentList, Position position) throws ParseException {
19+
return new SetMarkFunction((Returnable<Number>) argumentList.get(0), (Returnable<Number>) argumentList.get(1), (Returnable<Number>) argumentList.get(2), (Returnable<String>) argumentList.get(3), position);
2020
}
2121

2222
@Override

common/src/main/java/com/dfsek/terra/api/structures/script/builders/UnaryStringFunctionBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public int argNumber() {
4545

4646
@Override
4747
public Returnable.ReturnType getArgument(int position) {
48-
if(position == 0) return Returnable.ReturnType.NUMBER;
48+
if(position == 0) return Returnable.ReturnType.STRING;
4949
return null;
5050
}
5151
}

common/src/main/java/com/dfsek/terra/api/structures/script/functions/BlockFunction.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ public BlockFunction(Returnable<Number> x, Returnable<Number> y, Returnable<Numb
3535
@Override
3636
public Void apply(ImplementationArguments implementationArguments) {
3737
TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments;
38+
BlockData rot = data.clone();
39+
3840
Vector2 xz = new Vector2(x.apply(implementationArguments).doubleValue(), z.apply(implementationArguments).doubleValue());
3941

4042
RotationUtil.rotateVector(xz, arguments.getRotation());
41-
BlockData rot = data.clone();
43+
4244
RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse());
43-
arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
45+
arguments.getBuffer().addItem(new BufferedBlock(rot, overwrite.apply(implementationArguments)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).doubleValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
4446
return null;
4547
}
4648

common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public String apply(ImplementationArguments implementationArguments) {
3030

3131
RotationUtil.rotateVector(xz, arguments.getRotation());
3232

33-
String data = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ()))).getBlock().getBlockData().getAsString();
33+
String data = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).doubleValue(), FastMath.roundToInt(xz.getZ()))).getBlock().getBlockData().getAsString();
3434
if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties
3535
else return data;
3636
}

common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public String apply(ImplementationArguments implementationArguments) {
4343

4444
RotationUtil.rotateVector(xz, arguments.getRotation());
4545

46-
Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
46+
Location location = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).doubleValue(), FastMath.roundToInt(xz.getZ())));
4747

4848
return apply(location, arguments.getBuffer().getOrigin().getWorld());
4949
}

common/src/main/java/com/dfsek/terra/api/structures/script/functions/EntityFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public Void apply(ImplementationArguments implementationArguments) {
3737

3838
RotationUtil.rotateVector(xz, arguments.getRotation());
3939

40-
arguments.getBuffer().addItem(new BufferedEntity(data), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
40+
arguments.getBuffer().addItem(new BufferedEntity(data), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
4141
return null;
4242
}
4343

common/src/main/java/com/dfsek/terra/api/structures/script/functions/GetMarkFunction.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.dfsek.terra.api.structures.parser.lang.functions.Function;
88
import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
99
import com.dfsek.terra.api.structures.structure.RotationUtil;
10-
import com.dfsek.terra.api.structures.structure.buffer.items.Mark;
1110
import com.dfsek.terra.api.structures.tokenizer.Position;
1211
import net.jafama.FastMath;
1312

@@ -28,8 +27,8 @@ public String apply(ImplementationArguments implementationArguments) {
2827
Vector2 xz = new Vector2(x.apply(implementationArguments).doubleValue(), z.apply(implementationArguments).doubleValue());
2928

3029
RotationUtil.rotateVector(xz, arguments.getRotation());
31-
Mark mark = arguments.getBuffer().getMark(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
32-
return mark == null ? "" : mark.getContent();
30+
String mark = arguments.getBuffer().getMark(new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
31+
return mark == null ? "" : mark;
3332
}
3433

3534
@Override
@@ -39,6 +38,6 @@ public Position getPosition() {
3938

4039
@Override
4140
public ReturnType returnType() {
42-
return ReturnType.VOID;
41+
return ReturnType.STRING;
4342
}
4443
}

common/src/main/java/com/dfsek/terra/api/structures/script/functions/LootFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public Void apply(ImplementationArguments implementationArguments) {
4646
return null;
4747
}
4848

49-
arguments.getBuffer().addItem(new BufferedLootApplication(table, main), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
49+
arguments.getBuffer().addItem(new BufferedLootApplication(table, main), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
5050
return null;
5151
}
5252

common/src/main/java/com/dfsek/terra/api/structures/script/functions/PullFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public Void apply(ImplementationArguments implementationArguments) {
3838
RotationUtil.rotateVector(xz, arguments.getRotation());
3939
BlockData rot = data.clone();
4040
RotationUtil.rotateBlockData(rot, arguments.getRotation().inverse());
41-
arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
41+
arguments.getBuffer().addItem(new BufferedPulledBlock(rot), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
4242
return null;
4343
}
4444

common/src/main/java/com/dfsek/terra/api/structures/script/functions/MarkFunction.java renamed to common/src/main/java/com/dfsek/terra/api/structures/script/functions/SetMarkFunction.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,20 @@
22

33
import com.dfsek.terra.api.math.vector.Vector2;
44
import com.dfsek.terra.api.math.vector.Vector3;
5-
import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
65
import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments;
76
import com.dfsek.terra.api.structures.parser.lang.Returnable;
87
import com.dfsek.terra.api.structures.parser.lang.functions.Function;
98
import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
109
import com.dfsek.terra.api.structures.structure.RotationUtil;
11-
import com.dfsek.terra.api.structures.structure.buffer.items.Mark;
1210
import com.dfsek.terra.api.structures.tokenizer.Position;
1311
import net.jafama.FastMath;
1412

15-
public class MarkFunction implements Function<Void> {
13+
public class SetMarkFunction implements Function<Void> {
1614
private final Returnable<Number> x, y, z;
1715
private final Position position;
1816
private final Returnable<String> mark;
1917

20-
public MarkFunction(Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Returnable<String> mark, Position position) throws ParseException {
18+
public SetMarkFunction(Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Returnable<String> mark, Position position) {
2119
this.position = position;
2220
this.mark = mark;
2321
this.x = x;
@@ -32,7 +30,7 @@ public Void apply(ImplementationArguments implementationArguments) {
3230

3331
RotationUtil.rotateVector(xz, arguments.getRotation());
3432

35-
arguments.getBuffer().setMark(new Mark(mark.apply(implementationArguments)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
33+
arguments.getBuffer().setMark(mark.apply(implementationArguments), new Vector3(FastMath.floorToInt(xz.getX()), FastMath.floorToInt(y.apply(implementationArguments).doubleValue()), FastMath.floorToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
3634
return null;
3735
}
3836

common/src/main/java/com/dfsek/terra/api/structures/script/functions/StateFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public Void apply(ImplementationArguments implementationArguments) {
3333
Vector2 xz = new Vector2(x.apply(implementationArguments).doubleValue(), z.apply(implementationArguments).doubleValue());
3434
RotationUtil.rotateVector(xz, arguments.getRotation());
3535

36-
arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())));
36+
arguments.getBuffer().addItem(new BufferedStateManipulator(main, data.apply(implementationArguments)), new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ())).toLocation(arguments.getBuffer().getOrigin().getWorld()));
3737
return null;
3838
}
3939

common/src/main/java/com/dfsek/terra/api/structures/script/functions/StructureFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public Boolean apply(ImplementationArguments implementationArguments) {
6565
return null;
6666
}
6767

68-
Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).intValue(), FastMath.roundToInt(xz.getZ()));
68+
Vector3 offset = new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).doubleValue(), FastMath.roundToInt(xz.getZ()));
6969

7070
return script.executeInBuffer(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1);
7171
}
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package com.dfsek.terra.api.structures.structure.buffer;
22

33
import com.dfsek.terra.api.math.vector.Location;
4-
import com.dfsek.terra.api.math.vector.Vector3;
54
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem;
6-
import com.dfsek.terra.api.structures.structure.buffer.items.Mark;
75

86
public interface Buffer {
9-
Buffer addItem(BufferedItem item, Vector3 location);
7+
Buffer addItem(BufferedItem item, Location location);
108

119
Location getOrigin();
1210

13-
Mark getMark(Vector3 location);
11+
String getMark(Location location);
1412

15-
Buffer setMark(Mark mark, Vector3 location);
13+
Buffer setMark(String mark, Location location);
1614
}

common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/Cell.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22

33
import com.dfsek.terra.api.math.vector.Location;
44
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem;
5-
import com.dfsek.terra.api.structures.structure.buffer.items.Mark;
65
import com.dfsek.terra.api.util.GlueList;
76

87
import java.util.List;
98

109
public class Cell implements BufferedItem {
1110
private final List<BufferedItem> items = new GlueList<>();
12-
private Mark mark = null;
11+
private String mark = null;
1312

1413

1514
@Override
@@ -21,11 +20,11 @@ public void add(BufferedItem item) {
2120
items.add(item);
2221
}
2322

24-
public Mark getMark() {
23+
public String getMark() {
2524
return mark;
2625
}
2726

28-
public void setMark(Mark mark) {
27+
public void setMark(String mark) {
2928
this.mark = mark;
3029
}
3130
}

common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/IntermediateBuffer.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,18 @@
33
import com.dfsek.terra.api.math.vector.Location;
44
import com.dfsek.terra.api.math.vector.Vector3;
55
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem;
6-
import com.dfsek.terra.api.structures.structure.buffer.items.Mark;
76

87
public class IntermediateBuffer implements Buffer {
98
private final Buffer original;
109
private final Vector3 offset;
1110

1211
public IntermediateBuffer(Buffer original, Vector3 offset) {
1312
this.original = original;
14-
this.offset = offset;
13+
this.offset = offset.clone();
1514
}
1615

1716
@Override
18-
public Buffer addItem(BufferedItem item, Vector3 location) {
17+
public Buffer addItem(BufferedItem item, Location location) {
1918
return original.addItem(item, location.add(offset));
2019
}
2120

@@ -25,12 +24,12 @@ public Location getOrigin() {
2524
}
2625

2726
@Override
28-
public Mark getMark(Vector3 location) {
27+
public String getMark(Location location) {
2928
return original.getMark(location.add(offset));
3029
}
3130

3231
@Override
33-
public Buffer setMark(Mark mark, Vector3 location) {
32+
public Buffer setMark(String mark, Location location) {
3433
original.setMark(mark, location.add(offset));
3534
return this;
3635
}

common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/StructureBuffer.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
package com.dfsek.terra.api.structures.structure.buffer;
22

33
import com.dfsek.terra.api.math.vector.Location;
4-
import com.dfsek.terra.api.math.vector.Vector3;
54
import com.dfsek.terra.api.platform.world.Chunk;
65
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedItem;
7-
import com.dfsek.terra.api.structures.structure.buffer.items.Mark;
86
import net.jafama.FastMath;
97

108
import java.util.LinkedHashMap;
119
import java.util.Map;
1210

1311
public class StructureBuffer implements Buffer {
14-
private final Map<Vector3, Cell> bufferedItemMap = new LinkedHashMap<>();
12+
private final Map<Location, Cell> bufferedItemMap = new LinkedHashMap<>();
1513
private final Location origin;
1614
private boolean succeeded;
1715

@@ -33,13 +31,13 @@ public void paste(Chunk chunk) {
3331
}
3432

3533
@Override
36-
public Buffer addItem(BufferedItem item, Vector3 location) {
34+
public Buffer addItem(BufferedItem item, Location location) {
3735
bufferedItemMap.computeIfAbsent(location, l -> new Cell()).add(item);
3836
return this;
3937
}
4038

4139
@Override
42-
public Mark getMark(Vector3 location) {
40+
public String getMark(Location location) {
4341
Cell cell = bufferedItemMap.get(location);
4442
if(cell != null) {
4543
return cell.getMark();
@@ -48,7 +46,7 @@ public Mark getMark(Vector3 location) {
4846
}
4947

5048
@Override
51-
public Buffer setMark(Mark mark, Vector3 location) {
49+
public Buffer setMark(String mark, Location location) {
5250
bufferedItemMap.computeIfAbsent(location, l -> new Cell()).setMark(mark);
5351
return this;
5452
}

common/src/main/java/com/dfsek/terra/api/structures/structure/buffer/items/Mark.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)