mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-15 21:31:05 +00:00
start moving to int vector impls where possible
This commit is contained in:
+1
-1
@@ -20,7 +20,7 @@ import com.dfsek.terra.api.block.state.properties.enums.Direction;
|
|||||||
import com.dfsek.terra.api.noise.NoiseSampler;
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
import com.dfsek.terra.api.structure.Structure;
|
import com.dfsek.terra.api.structure.Structure;
|
||||||
import com.dfsek.terra.api.structure.buffer.Buffer;
|
import com.dfsek.terra.api.structure.buffer.Buffer;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.collection.MaterialSet;
|
import com.dfsek.terra.api.util.collection.MaterialSet;
|
||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
|
|||||||
+9
-8
@@ -237,7 +237,8 @@ public class CellularSampler extends NoiseFunction {
|
|||||||
int xPrimed = (xr - 1) * PRIME_X;
|
int xPrimed = (xr - 1) * PRIME_X;
|
||||||
int yPrimedBase = (yr - 1) * PRIME_Y;
|
int yPrimedBase = (yr - 1) * PRIME_Y;
|
||||||
|
|
||||||
Vector2 center = new Vector2(x, y);
|
double centerX = x;
|
||||||
|
double centerY = y;
|
||||||
|
|
||||||
switch(distanceFunction) {
|
switch(distanceFunction) {
|
||||||
default:
|
default:
|
||||||
@@ -259,8 +260,8 @@ public class CellularSampler extends NoiseFunction {
|
|||||||
if(newDistance < distance0) {
|
if(newDistance < distance0) {
|
||||||
distance0 = newDistance;
|
distance0 = newDistance;
|
||||||
closestHash = hash;
|
closestHash = hash;
|
||||||
center.setX((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency);
|
centerX = ((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency);
|
||||||
center.setZ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency);
|
centerY = ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency);
|
||||||
} else if(newDistance < distance1) {
|
} else if(newDistance < distance1) {
|
||||||
distance2 = distance1;
|
distance2 = distance1;
|
||||||
distance1 = newDistance;
|
distance1 = newDistance;
|
||||||
@@ -289,8 +290,8 @@ public class CellularSampler extends NoiseFunction {
|
|||||||
if(newDistance < distance0) {
|
if(newDistance < distance0) {
|
||||||
distance0 = newDistance;
|
distance0 = newDistance;
|
||||||
closestHash = hash;
|
closestHash = hash;
|
||||||
center.setX((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency);
|
centerX = ((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency);
|
||||||
center.setZ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency);
|
centerY = ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency);
|
||||||
} else if(newDistance < distance1) {
|
} else if(newDistance < distance1) {
|
||||||
distance2 = distance1;
|
distance2 = distance1;
|
||||||
distance1 = newDistance;
|
distance1 = newDistance;
|
||||||
@@ -319,8 +320,8 @@ public class CellularSampler extends NoiseFunction {
|
|||||||
if(newDistance < distance0) {
|
if(newDistance < distance0) {
|
||||||
distance0 = newDistance;
|
distance0 = newDistance;
|
||||||
closestHash = hash;
|
closestHash = hash;
|
||||||
center.setX((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency);
|
centerX = ((xi + RAND_VECS_2D[idx] * cellularJitter) / frequency);
|
||||||
center.setZ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency);
|
centerY = ((yi + RAND_VECS_2D[idx | 1] * cellularJitter) / frequency);
|
||||||
} else if(newDistance < distance1) {
|
} else if(newDistance < distance1) {
|
||||||
distance2 = distance1;
|
distance2 = distance1;
|
||||||
distance1 = newDistance;
|
distance1 = newDistance;
|
||||||
@@ -349,7 +350,7 @@ public class CellularSampler extends NoiseFunction {
|
|||||||
case Distance2Sub -> distance1 - distance0 - 1;
|
case Distance2Sub -> distance1 - distance0 - 1;
|
||||||
case Distance2Mul -> distance1 * distance0 * 0.5 - 1;
|
case Distance2Mul -> distance1 * distance0 * 0.5 - 1;
|
||||||
case Distance2Div -> distance0 / distance1 - 1;
|
case Distance2Div -> distance0 / distance1 - 1;
|
||||||
case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, center.getX(), center.getZ());
|
case NoiseLookup -> noiseLookup.getNoiseSeeded(sl, centerX, centerY);
|
||||||
case Distance3 -> distance2 - 1;
|
case Distance3 -> distance2 - 1;
|
||||||
case Distance3Add -> (distance2 + distance0) * 0.5 - 1;
|
case Distance3Add -> (distance2 + distance0) * 0.5 - 1;
|
||||||
case Distance3Sub -> distance2 - distance0 - 1;
|
case Distance3Sub -> distance2 - distance0 - 1;
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ import com.dfsek.terra.api.Platform;
|
|||||||
import com.dfsek.terra.api.config.WorldConfig;
|
import com.dfsek.terra.api.config.WorldConfig;
|
||||||
import com.dfsek.terra.api.profiler.ProfileFrame;
|
import com.dfsek.terra.api.profiler.ProfileFrame;
|
||||||
import com.dfsek.terra.api.structure.configured.ConfiguredStructure;
|
import com.dfsek.terra.api.structure.configured.ConfiguredStructure;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.PopulationUtil;
|
import com.dfsek.terra.api.util.PopulationUtil;
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
import com.dfsek.terra.api.world.Chunk;
|
import com.dfsek.terra.api.world.Chunk;
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ import com.dfsek.terra.api.entity.CommandSender;
|
|||||||
import com.dfsek.terra.api.entity.Player;
|
import com.dfsek.terra.api.entity.Player;
|
||||||
import com.dfsek.terra.api.inject.annotations.Inject;
|
import com.dfsek.terra.api.inject.annotations.Inject;
|
||||||
import com.dfsek.terra.api.structure.Structure;
|
import com.dfsek.terra.api.structure.Structure;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
|
|
||||||
|
|
||||||
@PlayerCommand
|
@PlayerCommand
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ package com.dfsek.terra.addons.generation.feature;
|
|||||||
import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures;
|
import com.dfsek.terra.addons.generation.feature.config.BiomeFeatures;
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.profiler.ProfileFrame;
|
import com.dfsek.terra.api.profiler.ProfileFrame;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.PopulationUtil;
|
import com.dfsek.terra.api.util.PopulationUtil;
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
import com.dfsek.terra.api.world.Chunk;
|
import com.dfsek.terra.api.world.Chunk;
|
||||||
|
|||||||
+11
-12
@@ -16,10 +16,9 @@ import com.dfsek.terra.api.block.state.BlockState;
|
|||||||
import com.dfsek.terra.api.structure.Structure;
|
import com.dfsek.terra.api.structure.Structure;
|
||||||
import com.dfsek.terra.api.structure.buffer.Buffer;
|
import com.dfsek.terra.api.structure.buffer.Buffer;
|
||||||
import com.dfsek.terra.api.structure.buffer.items.BufferedBlock;
|
import com.dfsek.terra.api.structure.buffer.items.BufferedBlock;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.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.util.vector.Vector3;
|
||||||
|
import com.dfsek.terra.api.util.vector.integer.Vector2Int;
|
||||||
import com.dfsek.terra.api.world.Chunk;
|
import com.dfsek.terra.api.world.Chunk;
|
||||||
import com.dfsek.terra.api.world.World;
|
import com.dfsek.terra.api.world.World;
|
||||||
|
|
||||||
@@ -44,9 +43,9 @@ public class SpongeStructure implements Structure {
|
|||||||
int bZ = location.getBlockZ();
|
int bZ = location.getBlockZ();
|
||||||
for(int x = 0; x < blocks.length; x++) {
|
for(int x = 0; x < blocks.length; x++) {
|
||||||
for(int z = 0; z < blocks[x].length; z++) {
|
for(int z = 0; z < blocks[x].length; z++) {
|
||||||
Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation);
|
Vector2Int r = Vector2Int.of(x, z).rotate(rotation);
|
||||||
int rX = r.getBlockX();
|
int rX = r.getX();
|
||||||
int rZ = r.getBlockZ();
|
int rZ = r.getZ();
|
||||||
if(FastMath.floorDiv(bX + rX, 16) != chunk.getX() || FastMath.floorDiv(bZ + rZ, 16) != chunk.getZ()) {
|
if(FastMath.floorDiv(bX + rX, 16) != chunk.getX() || FastMath.floorDiv(bZ + rZ, 16) != chunk.getZ()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -64,9 +63,9 @@ public class SpongeStructure implements Structure {
|
|||||||
public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) {
|
public boolean generate(Buffer buffer, World world, Random random, Rotation rotation, int recursions) {
|
||||||
for(int x = 0; x < blocks.length; x++) {
|
for(int x = 0; x < blocks.length; x++) {
|
||||||
for(int z = 0; z < blocks[x].length; z++) {
|
for(int z = 0; z < blocks[x].length; z++) {
|
||||||
Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation);
|
Vector2Int r = Vector2Int.of(x, z).rotate(rotation);
|
||||||
int rX = r.getBlockX();
|
int rX = r.getX();
|
||||||
int rZ = r.getBlockZ();
|
int rZ = r.getZ();
|
||||||
for(int y = 0; y < blocks[z].length; y++) {
|
for(int y = 0; y < blocks[z].length; y++) {
|
||||||
BlockState state = blocks[x][z][y];
|
BlockState state = blocks[x][z][y];
|
||||||
if(state == null) continue;
|
if(state == null) continue;
|
||||||
@@ -84,9 +83,9 @@ public class SpongeStructure implements Structure {
|
|||||||
int bZ = location.getBlockZ();
|
int bZ = location.getBlockZ();
|
||||||
for(int x = 0; x < blocks.length; x++) {
|
for(int x = 0; x < blocks.length; x++) {
|
||||||
for(int z = 0; z < blocks[x].length; z++) {
|
for(int z = 0; z < blocks[x].length; z++) {
|
||||||
Vector2 r = RotationUtil.rotateVector(new Vector2(x, z), rotation);
|
Vector2Int r = Vector2Int.of(x, z).rotate(rotation);
|
||||||
int rX = r.getBlockX();
|
int rX = r.getX();
|
||||||
int rZ = r.getBlockZ();
|
int rZ = r.getZ();
|
||||||
for(int y = 0; y < blocks[z].length; y++) {
|
for(int y = 0; y < blocks[z].length; y++) {
|
||||||
BlockState state = blocks[x][z][y];
|
BlockState state = blocks[x][z][y];
|
||||||
if(state == null) continue;
|
if(state == null) continue;
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ import com.dfsek.terra.api.structure.Structure;
|
|||||||
import com.dfsek.terra.api.structure.buffer.Buffer;
|
import com.dfsek.terra.api.structure.buffer.Buffer;
|
||||||
import com.dfsek.terra.api.structure.buffer.buffers.DirectBuffer;
|
import com.dfsek.terra.api.structure.buffer.buffers.DirectBuffer;
|
||||||
import com.dfsek.terra.api.structure.buffer.buffers.StructureBuffer;
|
import com.dfsek.terra.api.structure.buffer.buffers.StructureBuffer;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
import com.dfsek.terra.api.world.Chunk;
|
import com.dfsek.terra.api.world.Chunk;
|
||||||
import com.dfsek.terra.api.world.World;
|
import com.dfsek.terra.api.world.World;
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ import java.util.Random;
|
|||||||
|
|
||||||
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments;
|
||||||
import com.dfsek.terra.api.structure.buffer.Buffer;
|
import com.dfsek.terra.api.structure.buffer.Buffer;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.world.World;
|
import com.dfsek.terra.api.world.World;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
|||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.registry.Registry;
|
import com.dfsek.terra.api.registry.Registry;
|
||||||
import com.dfsek.terra.api.structure.Structure;
|
import com.dfsek.terra.api.structure.Structure;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.RotationUtil;
|
import com.dfsek.terra.api.util.RotationUtil;
|
||||||
import com.dfsek.terra.api.util.vector.Vector2;
|
import com.dfsek.terra.api.util.vector.Vector2;
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.api.block.state.properties.enums;
|
package com.dfsek.terra.api.block.state.properties.enums;
|
||||||
|
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.generic.Construct;
|
import com.dfsek.terra.api.util.generic.Construct;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ package com.dfsek.terra.api.structure;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import com.dfsek.terra.api.structure.buffer.Buffer;
|
import com.dfsek.terra.api.structure.buffer.Buffer;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
import com.dfsek.terra.api.util.StringIdentifiable;
|
import com.dfsek.terra.api.util.StringIdentifiable;
|
||||||
import com.dfsek.terra.api.util.vector.Vector3;
|
import com.dfsek.terra.api.util.vector.Vector3;
|
||||||
import com.dfsek.terra.api.world.Chunk;
|
import com.dfsek.terra.api.world.Chunk;
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import com.dfsek.terra.api.block.state.properties.enums.Axis;
|
|||||||
import com.dfsek.terra.api.block.state.properties.enums.RailShape;
|
import com.dfsek.terra.api.block.state.properties.enums.RailShape;
|
||||||
import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection;
|
import com.dfsek.terra.api.block.state.properties.enums.RedstoneConnection;
|
||||||
import com.dfsek.terra.api.block.state.properties.enums.WallHeight;
|
import com.dfsek.terra.api.block.state.properties.enums.WallHeight;
|
||||||
import com.dfsek.terra.api.structure.rotation.Rotation;
|
|
||||||
import com.dfsek.terra.api.util.vector.Vector2;
|
import com.dfsek.terra.api.util.vector.Vector2;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
* reference the LICENSE file in the common/api directory.
|
* reference the LICENSE file in the common/api directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.dfsek.terra.api.structure.rotation;
|
package com.dfsek.terra.api.util;
|
||||||
|
|
||||||
import net.jafama.FastMath;
|
import net.jafama.FastMath;
|
||||||
|
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
package com.dfsek.terra.api.util.vector.integer;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.util.Rotation;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* oh yeah
|
||||||
|
*/
|
||||||
|
public class Vector2Int {
|
||||||
|
private final int x;
|
||||||
|
private final int z;
|
||||||
|
|
||||||
|
private static final Vector2Int ZERO = new Vector2Int(0, 0);
|
||||||
|
private static final Vector2Int UNIT = new Vector2Int(0, 1);
|
||||||
|
|
||||||
|
protected Vector2Int(int x, int z) {
|
||||||
|
this.x = x;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vector2Int zero() {
|
||||||
|
return ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vector2Int unit() {
|
||||||
|
return UNIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vector2Int of(int x, int z) {
|
||||||
|
return new Vector2Int(x, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector3Int toVector3(int y) {
|
||||||
|
return new Vector3Int(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mutable mutable() {
|
||||||
|
return new Mutable(x, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector2Int rotate(Rotation rotation) {
|
||||||
|
return switch(rotation) {
|
||||||
|
case CW_90 -> of(z, -x);
|
||||||
|
case CCW_90 -> of(-z, x);
|
||||||
|
case CW_180 -> of(-x, -z);
|
||||||
|
default -> this;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Mutable {
|
||||||
|
private int x, z;
|
||||||
|
|
||||||
|
protected Mutable(int x, int z) {
|
||||||
|
this.x = x;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZ(int z) {
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(int x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector2Int immutable() {
|
||||||
|
return new Vector2Int(x, z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
package com.dfsek.terra.api.util.vector.integer;
|
||||||
|
|
||||||
|
public class Vector3Int {
|
||||||
|
private final int x, y, z;
|
||||||
|
|
||||||
|
private static final Vector3Int ZERO = new Vector3Int(0, 0, 0);
|
||||||
|
private static final Vector3Int UNIT = new Vector3Int(0, 1, 0);
|
||||||
|
|
||||||
|
protected Vector3Int(int x, int y, int z) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mutable mutable() {
|
||||||
|
return new Mutable(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vector3Int unit() {
|
||||||
|
return UNIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vector3Int zero() {
|
||||||
|
return ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Vector3Int of(int x, int y, int z) {
|
||||||
|
return new Vector3Int(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Mutable {
|
||||||
|
private int x, y, z;
|
||||||
|
|
||||||
|
protected Mutable(int x, int y, int z) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(int x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(int y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZ(int z) {
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector3Int immutable() {
|
||||||
|
return Vector3Int.of(x, y, z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user