Fixed structure features and code style

This commit is contained in:
paulevsGitch 2021-07-10 16:07:44 +03:00
parent d431f2555c
commit 5a9365e2bb
153 changed files with 2304 additions and 2459 deletions

View file

@ -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;
}

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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;

View file

@ -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;

View file

@ -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 {

View file

@ -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;

View file

@ -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;

View file

@ -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);

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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);

View file

@ -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);

View file

@ -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));
}
}

View file

@ -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;

View file

@ -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;
}