Port recent changes

This commit is contained in:
Zelophed 2020-12-16 18:09:15 +01:00
parent 51229ce517
commit 1cdfa6c17e
3 changed files with 31 additions and 31 deletions

View file

@ -10,7 +10,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.Arrays; import java.util.Arrays;
@ -45,18 +45,18 @@ public interface IPlacementHelper {
IPlacementHelper.renderArrow(VecHelper.getCenterOf(pos), VecHelper.getCenterOf(offset.getPos()), ray.getFace()); IPlacementHelper.renderArrow(VecHelper.getCenterOf(pos), VecHelper.getCenterOf(offset.getPos()), ray.getFace());
} }
static void renderArrow(Vec3d center, Vec3d target, Direction arrowPlane) { static void renderArrow(Vector3d center, Vector3d target, Direction arrowPlane) {
renderArrow(center, target, arrowPlane, 1D); renderArrow(center, target, arrowPlane, 1D);
} }
static void renderArrow(Vec3d center, Vec3d target, Direction arrowPlane, double distanceFromCenter) { static void renderArrow(Vector3d center, Vector3d target, Direction arrowPlane, double distanceFromCenter) {
Vec3d direction = target.subtract(center).normalize(); Vector3d direction = target.subtract(center).normalize();
Vec3d facing = new Vec3d(arrowPlane.getDirectionVec()); Vector3d facing = Vector3d.of(arrowPlane.getDirectionVec());
Vec3d start = center.add(direction); Vector3d start = center.add(direction);
Vec3d offset = direction.scale(distanceFromCenter-1); Vector3d offset = direction.scale(distanceFromCenter-1);
Vec3d offsetA = direction.crossProduct(facing).normalize().scale(.25); Vector3d offsetA = direction.crossProduct(facing).normalize().scale(.25);
Vec3d offsetB = facing.crossProduct(direction).normalize().scale(.25); Vector3d offsetB = facing.crossProduct(direction).normalize().scale(.25);
Vec3d endA = center.add(direction.scale(.75)).add(offsetA); Vector3d endA = center.add(direction.scale(.75)).add(offsetA);
Vec3d endB = center.add(direction.scale(.75)).add(offsetB); Vector3d endB = center.add(direction.scale(.75)).add(offsetB);
CreateClient.outliner.showLine("placementArrowA" + center + target, start.add(offset), endA.add(offset)).lineWidth(1/16f); CreateClient.outliner.showLine("placementArrowA" + center + target, start.add(offset), endA.add(offset)).lineWidth(1/16f);
CreateClient.outliner.showLine("placementArrowB" + center + target, start.add(offset), endB.add(offset)).lineWidth(1/16f); CreateClient.outliner.showLine("placementArrowB" + center + target, start.add(offset), endB.add(offset)).lineWidth(1/16f);
} }
@ -79,31 +79,31 @@ public interface IPlacementHelper {
} }
}*/ }*/
static List<Direction> orderedByDistanceOnlyAxis(BlockPos pos, Vec3d hit, Direction.Axis axis) { static List<Direction> orderedByDistanceOnlyAxis(BlockPos pos, Vector3d hit, Direction.Axis axis) {
return orderedByDistance(pos, hit, dir -> dir.getAxis() == axis); return orderedByDistance(pos, hit, dir -> dir.getAxis() == axis);
} }
static List<Direction> orderedByDistanceOnlyAxis(BlockPos pos, Vec3d hit, Direction.Axis axis, Predicate<Direction> includeDirection) { static List<Direction> orderedByDistanceOnlyAxis(BlockPos pos, Vector3d hit, Direction.Axis axis, Predicate<Direction> includeDirection) {
return orderedByDistance(pos, hit, ((Predicate<Direction>) dir -> dir.getAxis() == axis).and(includeDirection)); return orderedByDistance(pos, hit, ((Predicate<Direction>) dir -> dir.getAxis() == axis).and(includeDirection));
} }
static List<Direction> orderedByDistanceExceptAxis(BlockPos pos, Vec3d hit, Direction.Axis axis) { static List<Direction> orderedByDistanceExceptAxis(BlockPos pos, Vector3d hit, Direction.Axis axis) {
return orderedByDistance(pos, hit, dir -> dir.getAxis() != axis); return orderedByDistance(pos, hit, dir -> dir.getAxis() != axis);
} }
static List<Direction> orderedByDistanceExceptAxis(BlockPos pos, Vec3d hit, Direction.Axis axis, Predicate<Direction> includeDirection) { static List<Direction> orderedByDistanceExceptAxis(BlockPos pos, Vector3d hit, Direction.Axis axis, Predicate<Direction> includeDirection) {
return orderedByDistance(pos, hit, ((Predicate<Direction>) dir -> dir.getAxis() != axis).and(includeDirection)); return orderedByDistance(pos, hit, ((Predicate<Direction>) dir -> dir.getAxis() != axis).and(includeDirection));
} }
static List<Direction> orderedByDistance(BlockPos pos, Vec3d hit) { static List<Direction> orderedByDistance(BlockPos pos, Vector3d hit) {
return orderedByDistance(pos, hit, _$ -> true); return orderedByDistance(pos, hit, _$ -> true);
} }
static List<Direction> orderedByDistance(BlockPos pos, Vec3d hit, Predicate<Direction> includeDirection) { static List<Direction> orderedByDistance(BlockPos pos, Vector3d hit, Predicate<Direction> includeDirection) {
Vec3d centerToHit = hit.subtract(VecHelper.getCenterOf(pos)); Vector3d centerToHit = hit.subtract(VecHelper.getCenterOf(pos));
return Arrays.stream(Iterate.directions) return Arrays.stream(Iterate.directions)
.filter(includeDirection) .filter(includeDirection)
.map(dir -> Pair.of(dir, new Vec3d(dir.getDirectionVec()).distanceTo(centerToHit))) .map(dir -> Pair.of(dir, Vector3d.of(dir.getDirectionVec()).distanceTo(centerToHit)))
.sorted(Comparator.comparingDouble(Pair::getSecond)) .sorted(Comparator.comparingDouble(Pair::getSecond))
.map(Pair::getFirst) .map(Pair::getFirst)
.collect(Collectors.toList()); .collect(Collectors.toList());

View file

@ -1,31 +1,31 @@
package com.simibubi.create.foundation.utility.placement; package com.simibubi.create.foundation.utility.placement;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.util.math.Vec3i; import net.minecraft.util.math.vector.Vector3i;
import java.util.function.Function; import java.util.function.Function;
public class PlacementOffset { public class PlacementOffset {
private final boolean success; private final boolean success;
private final Vec3i pos; private final Vector3i pos;
private final Function<BlockState, BlockState> stateTransform; private final Function<BlockState, BlockState> stateTransform;
private PlacementOffset(boolean success, Vec3i pos, Function<BlockState, BlockState> transform) { private PlacementOffset(boolean success, Vector3i pos, Function<BlockState, BlockState> transform) {
this.success = success; this.success = success;
this.pos = pos; this.pos = pos;
this.stateTransform = transform == null ? Function.identity() : transform; this.stateTransform = transform == null ? Function.identity() : transform;
} }
public static PlacementOffset fail() { public static PlacementOffset fail() {
return new PlacementOffset(false, Vec3i.NULL_VECTOR, null); return new PlacementOffset(false, Vector3i.NULL_VECTOR, null);
} }
public static PlacementOffset success(Vec3i pos) { public static PlacementOffset success(Vector3i pos) {
return new PlacementOffset(true, pos, null); return new PlacementOffset(true, pos, null);
} }
public static PlacementOffset success(Vec3i pos, Function<BlockState, BlockState> transform) { public static PlacementOffset success(Vector3i pos, Function<BlockState, BlockState> transform) {
return new PlacementOffset(true, pos, transform); return new PlacementOffset(true, pos, transform);
} }
@ -33,7 +33,7 @@ public class PlacementOffset {
return success; return success;
} }
public Vec3i getPos() { public Vector3i getPos() {
return pos; return pos;
} }

View file

@ -5,11 +5,11 @@ import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
import com.simibubi.create.foundation.utility.placement.PlacementOffset; import com.simibubi.create.foundation.utility.placement.PlacementOffset;
import mcp.MethodsReturnNonnullByDefault; import mcp.MethodsReturnNonnullByDefault;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.state.IProperty; import net.minecraft.state.Property;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.List; import java.util.List;
@ -20,10 +20,10 @@ import java.util.function.Predicate;
public abstract class PoleHelper<T extends Comparable<T>> implements IPlacementHelper { public abstract class PoleHelper<T extends Comparable<T>> implements IPlacementHelper {
protected final Predicate<BlockState> statePredicate; protected final Predicate<BlockState> statePredicate;
protected final IProperty<T> property; protected final Property<T> property;
protected final Function<BlockState, Direction.Axis> axisFunction; protected final Function<BlockState, Direction.Axis> axisFunction;
public PoleHelper(Predicate<BlockState> statePredicate, Function<BlockState, Direction.Axis> axisFunction, IProperty<T> property) { public PoleHelper(Predicate<BlockState> statePredicate, Function<BlockState, Direction.Axis> axisFunction, Property<T> property) {
this.statePredicate = statePredicate; this.statePredicate = statePredicate;
this.axisFunction = axisFunction; this.axisFunction = axisFunction;
this.property = property; this.property = property;
@ -71,7 +71,7 @@ public abstract class PoleHelper<T extends Comparable<T>> implements IPlacementH
@Override @Override
public void renderAt(BlockPos pos, BlockState state, BlockRayTraceResult ray, PlacementOffset offset) { public void renderAt(BlockPos pos, BlockState state, BlockRayTraceResult ray, PlacementOffset offset) {
Vec3d centerOffset = new Vec3d(ray.getFace().getDirectionVec()).scale(.3); Vector3d centerOffset = Vector3d.of(ray.getFace().getDirectionVec()).scale(.3);
IPlacementHelper.renderArrow(VecHelper.getCenterOf(pos).add(centerOffset), VecHelper.getCenterOf(offset.getPos()).add(centerOffset), ray.getFace(), 0.75D); IPlacementHelper.renderArrow(VecHelper.getCenterOf(pos).add(centerOffset), VecHelper.getCenterOf(offset.getPos()).add(centerOffset), ray.getFace(), 0.75D);
} }
} }