Fixed structure features and code style
This commit is contained in:
parent
d431f2555c
commit
5a9365e2bb
153 changed files with 2304 additions and 2459 deletions
|
@ -1,12 +1,12 @@
|
|||
package ru.bclib.sdf;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class PosInfo implements Comparable<PosInfo> {
|
||||
private static final BlockState AIR = Blocks.AIR.defaultBlockState();
|
||||
private final Map<BlockPos, PosInfo> blocks;
|
||||
|
@ -86,12 +86,12 @@ public class PosInfo implements Comparable<PosInfo> {
|
|||
}
|
||||
return pos.equals(((PosInfo) obj).pos);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int compareTo(PosInfo info) {
|
||||
return this.pos.getY() - info.pos.getY();
|
||||
}
|
||||
|
||||
|
||||
public BlockPos getPos() {
|
||||
return pos;
|
||||
}
|
||||
|
|
|
@ -1,16 +1,8 @@
|
|||
package ru.bclib.sdf;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
|
@ -20,12 +12,19 @@ import net.minecraft.world.phys.AABB;
|
|||
import ru.bclib.util.BlocksHelper;
|
||||
import ru.bclib.world.structures.StructureWorld;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
public abstract class SDF {
|
||||
private List<Function<PosInfo, BlockState>> postProcesses = Lists.newArrayList();
|
||||
private Function<BlockState, Boolean> canReplace = (state) -> {
|
||||
return state.getMaterial().isReplaceable();
|
||||
};
|
||||
|
||||
|
||||
public abstract float getDistance(float x, float y, float z);
|
||||
|
||||
public abstract BlockState getBlockState(BlockPos pos);
|
||||
|
@ -52,8 +51,8 @@ public abstract class SDF {
|
|||
MutableBlockPos bPos = new MutableBlockPos();
|
||||
|
||||
while (run) {
|
||||
for (BlockPos center: ends) {
|
||||
for (Direction dir: Direction.values()) {
|
||||
for (BlockPos center : ends) {
|
||||
for (Direction dir : Direction.values()) {
|
||||
bPos.set(center).move(dir);
|
||||
BlockPos wpos = bPos.offset(start);
|
||||
|
||||
|
@ -86,7 +85,7 @@ public abstract class SDF {
|
|||
infos.forEach((info) -> {
|
||||
BlocksHelper.setWithoutUpdate(world, info.getPos(), info.getState());
|
||||
});
|
||||
|
||||
|
||||
infos.clear();
|
||||
infos.addAll(addInfo.values());
|
||||
Collections.sort(infos);
|
||||
|
@ -135,7 +134,7 @@ public abstract class SDF {
|
|||
infos.forEach((info) -> {
|
||||
BlocksHelper.setWithoutUpdate(world, info.getPos(), info.getState());
|
||||
});
|
||||
|
||||
|
||||
infos.clear();
|
||||
infos.addAll(addInfo.values());
|
||||
Collections.sort(infos);
|
||||
|
@ -164,8 +163,8 @@ public abstract class SDF {
|
|||
MutableBlockPos bPos = new MutableBlockPos();
|
||||
|
||||
while (run) {
|
||||
for (BlockPos center: ends) {
|
||||
for (Direction dir: Direction.values()) {
|
||||
for (BlockPos center : ends) {
|
||||
for (Direction dir : Direction.values()) {
|
||||
bPos.set(center).move(dir);
|
||||
BlockPos wpos = bPos.offset(start);
|
||||
BlockState state = world.getBlockState(wpos);
|
||||
|
@ -198,7 +197,7 @@ public abstract class SDF {
|
|||
infos.forEach((info) -> {
|
||||
BlocksHelper.setWithoutUpdate(world, info.getPos(), info.getState());
|
||||
});
|
||||
|
||||
|
||||
infos.clear();
|
||||
infos.addAll(addInfo.values());
|
||||
Collections.sort(infos);
|
||||
|
@ -227,8 +226,8 @@ public abstract class SDF {
|
|||
MutableBlockPos bPos = new MutableBlockPos();
|
||||
|
||||
while (run) {
|
||||
for (BlockPos center: ends) {
|
||||
for (Direction dir: Direction.values()) {
|
||||
for (BlockPos center : ends) {
|
||||
for (Direction dir : Direction.values()) {
|
||||
bPos.set(center).move(dir);
|
||||
BlockPos wpos = bPos.offset(start);
|
||||
|
||||
|
@ -284,8 +283,8 @@ public abstract class SDF {
|
|||
MutableBlockPos bPos = new MutableBlockPos();
|
||||
|
||||
while (run) {
|
||||
for (BlockPos center: ends) {
|
||||
for (Direction dir: Direction.values()) {
|
||||
for (BlockPos center : ends) {
|
||||
for (Direction dir : Direction.values()) {
|
||||
bPos.set(center).move(dir);
|
||||
BlockPos wpos = bPos.offset(start);
|
||||
BlockState state = world.getBlockState(wpos);
|
||||
|
|
|
@ -27,7 +27,8 @@ public abstract class SDFBinary extends SDF {
|
|||
public BlockState getBlockState(BlockPos pos) {
|
||||
if (firstValue) {
|
||||
return sourceA.getBlockState(pos);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
return sourceB.getBlockState(pos);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package ru.bclib.sdf.operator;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.mojang.math.Vector3f;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class SDFCoordModify extends SDFUnary {
|
||||
private static final Vector3f POS = new Vector3f();
|
||||
private Consumer<Vector3f> function;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package ru.bclib.sdf.operator;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.mojang.math.Vector3f;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public class SDFDisplacement extends SDFUnary {
|
||||
private static final Vector3f POS = new Vector3f();
|
||||
private Function<Vector3f, Float> displace;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package ru.bclib.sdf.operator;
|
||||
|
||||
import com.mojang.blaze3d.platform.NativeImage;
|
||||
|
||||
import net.minecraft.util.Mth;
|
||||
|
||||
public class SDFHeightmap extends SDFDisplacement {
|
||||
|
|
|
@ -4,7 +4,7 @@ import net.minecraft.util.Mth;
|
|||
|
||||
public class SDFSmoothIntersection extends SDFBinary {
|
||||
private float radius;
|
||||
|
||||
|
||||
public SDFSmoothIntersection setRadius(float radius) {
|
||||
this.radius = radius;
|
||||
return this;
|
||||
|
|
|
@ -4,7 +4,7 @@ import net.minecraft.util.Mth;
|
|||
|
||||
public class SDFSmoothSubtraction extends SDFBinary {
|
||||
private float radius;
|
||||
|
||||
|
||||
public SDFSmoothSubtraction setRadius(float radius) {
|
||||
this.radius = radius;
|
||||
return this;
|
||||
|
|
|
@ -4,12 +4,12 @@ import net.minecraft.util.Mth;
|
|||
|
||||
public class SDFSmoothUnion extends SDFBinary {
|
||||
private float radius;
|
||||
|
||||
|
||||
public SDFSmoothUnion setRadius(float radius) {
|
||||
this.radius = radius;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public float getDistance(float x, float y, float z) {
|
||||
float a = this.sourceA.getDistance(x, y, z);
|
||||
|
|
|
@ -22,7 +22,7 @@ public class SDFCappedCone extends SDFPrimitive {
|
|||
this.height = height;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public float getDistance(float x, float y, float z) {
|
||||
float qx = MHelper.length(x, z);
|
||||
|
|
|
@ -3,6 +3,6 @@ package ru.bclib.sdf.primitive;
|
|||
public class SDFFlatland extends SDFPrimitive {
|
||||
@Override
|
||||
public float getDistance(float x, float y, float z) {
|
||||
return y;
|
||||
return y;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ public class SDFHexPrism extends SDFPrimitive {
|
|||
this.height = height;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public float getDistance(float x, float y, float z) {
|
||||
float px = Math.abs(x);
|
||||
|
|
|
@ -30,17 +30,17 @@ public class SDFLine extends SDFPrimitive {
|
|||
this.z2 = z;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public float getDistance(float x, float y, float z) {
|
||||
float pax = x - x1;
|
||||
float pay = y - y1;
|
||||
float paz = z - z1;
|
||||
|
||||
|
||||
float bax = x2 - x1;
|
||||
float bay = y2 - y1;
|
||||
float baz = z2 - z1;
|
||||
|
||||
|
||||
float dpb = MHelper.dot(pax, pay, paz, bax, bay, baz);
|
||||
float dbb = MHelper.dot(bax, bay, baz, bax, bay, baz);
|
||||
float h = Mth.clamp(dpb / dbb, 0F, 1F);
|
||||
|
|
|
@ -22,10 +22,10 @@ public class SDFPie extends SDFPrimitive {
|
|||
@Override
|
||||
public float getDistance(float x, float y, float z) {
|
||||
float px = Math.abs(x);
|
||||
float l = MHelper.length(px, y, z) - radius;
|
||||
float m = MHelper.dot(px, z, sin, cos);
|
||||
m = Mth.clamp(m, 0, radius);
|
||||
float l = MHelper.length(px, y, z) - radius;
|
||||
float m = MHelper.dot(px, z, sin, cos);
|
||||
m = Mth.clamp(m, 0, radius);
|
||||
m = MHelper.length(px - sin * m, z - cos * m);
|
||||
return MHelper.max(l, m * (float) Math.signum(cos * px - sin * z));
|
||||
return MHelper.max(l, m * (float) Math.signum(cos * px - sin * z));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package ru.bclib.sdf.primitive;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import ru.bclib.sdf.SDF;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public abstract class SDFPrimitive extends SDF {
|
||||
protected Function<BlockPos, BlockState> placerFunction;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ public class SDFSphere extends SDFPrimitive {
|
|||
private float radius;
|
||||
|
||||
public SDFSphere setRadius(float radius) {
|
||||
this.radius = radius;
|
||||
this.radius = radius;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue