From: Irtimaled Date: Thu, 21 May 2020 22:27:38 +0000 (-0700) Subject: Move client side only models to client side X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=418047eb5da5ce2ee7df2e1a9be485324406ea9e;p=BoundingBoxOutlineReloaded.git Move client side only models to client side --- diff --git a/src/main/java/com/irtimaled/bbor/ReflectionHelper.java b/src/main/java/com/irtimaled/bbor/ReflectionHelper.java deleted file mode 100644 index c685b30..0000000 --- a/src/main/java/com/irtimaled/bbor/ReflectionHelper.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.irtimaled.bbor; - -import com.irtimaled.bbor.common.TypeHelper; - -import java.lang.reflect.Field; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.function.Function; - -public class ReflectionHelper { - public static Function getPrivateFieldGetter(Class clazz, Type fieldType, Type... genericTypeArguments) { - Field field = findField(clazz, fieldType, genericTypeArguments); - if (field == null) return obj -> null; - - field.setAccessible(true); - return obj -> { - try { - return (R) field.get(obj); - } catch (IllegalAccessException ignored) { - return null; - } - }; - } - - private static Field findField(Class clazz, Type fieldType, Type[] genericTypeArguments) { - for (Field field : clazz.getDeclaredFields()) { - Type type = field.getGenericType(); - ParameterizedType genericType = TypeHelper.as(type, ParameterizedType.class); - if (genericType == null) { - if (type != fieldType || genericTypeArguments.length > 0) continue; - return field; - } - - Type rawType = genericType.getRawType(); - if (rawType != fieldType) continue; - - Type[] actualTypeArguments = genericType.getActualTypeArguments(); - if (actualTypeArguments.length != genericTypeArguments.length) continue; - - for (int typeIndex = 0; typeIndex < actualTypeArguments.length; typeIndex++) { - if (actualTypeArguments[typeIndex] != genericTypeArguments[typeIndex]) return null; - } - - return field; - } - return null; - } -} diff --git a/src/main/java/com/irtimaled/bbor/client/ClientRenderer.java b/src/main/java/com/irtimaled/bbor/client/ClientRenderer.java index a2d611b..4c6ba9d 100644 --- a/src/main/java/com/irtimaled/bbor/client/ClientRenderer.java +++ b/src/main/java/com/irtimaled/bbor/client/ClientRenderer.java @@ -8,7 +8,6 @@ import com.irtimaled.bbor.client.renderers.*; import com.irtimaled.bbor.common.MathHelper; import com.irtimaled.bbor.common.models.AbstractBoundingBox; import com.irtimaled.bbor.common.models.BoundingBoxCuboid; -import com.irtimaled.bbor.common.models.BoundingBoxSphere; import org.lwjgl.opengl.GL11; import java.util.HashMap; diff --git a/src/main/java/com/irtimaled/bbor/client/Player.java b/src/main/java/com/irtimaled/bbor/client/Player.java index 2d518d0..3006b17 100644 --- a/src/main/java/com/irtimaled/bbor/client/Player.java +++ b/src/main/java/com/irtimaled/bbor/client/Player.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.client; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.models.Coords; -import com.irtimaled.bbor.common.models.Point; import net.minecraft.client.entity.player.ClientPlayerEntity; public class Player { diff --git a/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java b/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java index 68a0858..a0f0dc5 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/Arguments.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.client.commands; import com.irtimaled.bbor.client.config.HexColor; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.models.Coords; -import com.irtimaled.bbor.common.models.Point; import com.mojang.brigadier.arguments.*; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java b/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java index 048b2aa..411f59a 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/LineCommandBuilder.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.client.commands; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.client.providers.CustomLineProvider; -import com.irtimaled.bbor.common.models.Point; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java b/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java index a96b754..1a8d2b2 100644 --- a/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java +++ b/src/main/java/com/irtimaled/bbor/client/commands/SphereCommandBuilder.java @@ -1,7 +1,7 @@ package com.irtimaled.bbor.client.commands; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.client.providers.CustomSphereProvider; -import com.irtimaled.bbor.common.models.Point; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java b/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java index 299d17b..856e4b8 100644 --- a/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java +++ b/src/main/java/com/irtimaled/bbor/client/interop/SpawningSphereHelper.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.client.interop; import com.irtimaled.bbor.client.models.BoundingBoxSpawningSphere; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.models.Coords; -import com.irtimaled.bbor.common.models.Point; import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxConduit.java b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxConduit.java index a894843..ecf9d47 100644 --- a/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxConduit.java +++ b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxConduit.java @@ -2,9 +2,7 @@ package com.irtimaled.bbor.client.models; import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.TypeHelper; -import com.irtimaled.bbor.common.models.BoundingBoxSphere; import com.irtimaled.bbor.common.models.Coords; -import com.irtimaled.bbor.common.models.Point; public class BoundingBoxConduit extends BoundingBoxSphere { private final int level; diff --git a/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxLine.java b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxLine.java index b8b02bd..733efe4 100644 --- a/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxLine.java +++ b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxLine.java @@ -3,7 +3,6 @@ package com.irtimaled.bbor.client.models; import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.TypeHelper; import com.irtimaled.bbor.common.models.AbstractBoundingBox; -import com.irtimaled.bbor.common.models.Point; public class BoundingBoxLine extends AbstractBoundingBox { private final Point minPoint; diff --git a/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSpawningSphere.java b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSpawningSphere.java index fbf6b8b..5d3087e 100644 --- a/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSpawningSphere.java +++ b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSpawningSphere.java @@ -1,8 +1,6 @@ package com.irtimaled.bbor.client.models; import com.irtimaled.bbor.common.BoundingBoxType; -import com.irtimaled.bbor.common.models.BoundingBoxSphere; -import com.irtimaled.bbor.common.models.Point; import net.minecraft.util.math.BlockPos; import java.util.HashSet; diff --git a/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSphere.java b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSphere.java new file mode 100644 index 0000000..3fb8d08 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/client/models/BoundingBoxSphere.java @@ -0,0 +1,42 @@ +package com.irtimaled.bbor.client.models; + +import com.irtimaled.bbor.common.BoundingBoxType; +import com.irtimaled.bbor.common.models.AbstractBoundingBox; +import com.irtimaled.bbor.common.models.Coords; + +public class BoundingBoxSphere extends AbstractBoundingBox { + private final double radius; + private final double minX; + private final double minZ; + private final double maxX; + private final double maxZ; + private final Point point; + + public BoundingBoxSphere(Point point, double radius, BoundingBoxType type) { + super(type); + this.radius = radius; + this.point = point; + + Coords center = point.getCoords(); + this.minX = center.getX() - radius; + this.minZ = center.getZ() - radius; + this.maxX = center.getX() + radius; + this.maxZ = center.getZ() + radius; + } + + @Override + public Boolean intersectsBounds(int minX, int minZ, int maxX, int maxZ) { + return this.maxX >= minX && + this.maxZ >= minZ && + this.minX <= maxX && + this.minZ <= maxZ; + } + + public double getRadius() { + return radius; + } + + public Point getPoint() { + return point; + } +} diff --git a/src/main/java/com/irtimaled/bbor/client/models/Point.java b/src/main/java/com/irtimaled/bbor/client/models/Point.java new file mode 100644 index 0000000..a403054 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/client/models/Point.java @@ -0,0 +1,76 @@ +package com.irtimaled.bbor.client.models; + +import com.irtimaled.bbor.common.MathHelper; +import com.irtimaled.bbor.common.TypeHelper; +import com.irtimaled.bbor.common.models.Coords; +import net.minecraft.util.math.Vec3d; + +public class Point { + private final double x; + private final double y; + private final double z; + + public Point(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } + + public Point(Coords Coords) { + this.x = Coords.getX(); + this.y = Coords.getY(); + this.z = Coords.getZ(); + } + + public Point(Vec3d pos) { + this.x = pos.x; + this.y = pos.y; + this.z = pos.z; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public double getZ() { + return z; + } + + public Point offset(double x, double y, double z) { + return new Point(this.x + x, this.y + y, this.z + z); + } + + public Point snapXZ(double nearest) { + double x = MathHelper.snapToNearest(this.x, nearest); + double z = MathHelper.snapToNearest(this.z, nearest); + return new Point(x, this.y, z); + } + + public double getDistance(Point point) { + double dx = this.x - point.x; + double dy = this.y - point.y; + double dz = this.z - point.z; + return Math.sqrt(dx * dx + dy * dy + dz * dz); + } + + public Coords getCoords() { + return new Coords(x, y, z); + } + + @Override + public int hashCode() { + return TypeHelper.combineHashCodes(Double.hashCode(z), Double.hashCode(y), Double.hashCode(x)); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Point point = (Point) obj; + return getX() == point.getX() && getY() == point.getY() && getZ() == point.getZ(); + } +} diff --git a/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java index 1890e15..6d3392d 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java @@ -1,10 +1,10 @@ package com.irtimaled.bbor.client.providers; -import com.irtimaled.bbor.ReflectionHelper; import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper; import com.irtimaled.bbor.client.interop.TileEntitiesHelper; import com.irtimaled.bbor.client.models.BoundingBoxConduit; import com.irtimaled.bbor.common.BoundingBoxType; +import com.irtimaled.bbor.common.ReflectionHelper; import com.irtimaled.bbor.common.models.Coords; import net.minecraft.tileentity.ConduitTileEntity; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/irtimaled/bbor/client/providers/CustomLineProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/CustomLineProvider.java index 6c50944..b35470f 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/CustomLineProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/CustomLineProvider.java @@ -2,8 +2,8 @@ package com.irtimaled.bbor.client.providers; import com.irtimaled.bbor.client.Player; import com.irtimaled.bbor.client.models.BoundingBoxLine; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.BoundingBoxType; -import com.irtimaled.bbor.common.models.Point; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/irtimaled/bbor/client/providers/CustomSphereProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/CustomSphereProvider.java index 1f59e77..61e604d 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/CustomSphereProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/CustomSphereProvider.java @@ -1,9 +1,9 @@ package com.irtimaled.bbor.client.providers; import com.irtimaled.bbor.client.Player; +import com.irtimaled.bbor.client.models.BoundingBoxSphere; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.BoundingBoxType; -import com.irtimaled.bbor.common.models.BoundingBoxSphere; -import com.irtimaled.bbor.common.models.Point; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java index 056b18b..56904e6 100644 --- a/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java +++ b/src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java @@ -6,9 +6,9 @@ import com.irtimaled.bbor.client.config.ConfigManager; import com.irtimaled.bbor.client.interop.BlockProcessor; import com.irtimaled.bbor.client.interop.SpawningSphereHelper; import com.irtimaled.bbor.client.models.BoundingBoxSpawningSphere; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.BoundingBoxType; import com.irtimaled.bbor.common.MathHelper; -import com.irtimaled.bbor.common.models.Point; import net.minecraft.client.Minecraft; import java.util.HashSet; diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java b/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java index d51f623..92084b4 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/AbstractRenderer.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.client.renderers; import com.irtimaled.bbor.client.config.ConfigManager; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.models.AbstractBoundingBox; -import com.irtimaled.bbor.common.models.Point; import com.mojang.blaze3d.platform.GLX; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/ConduitRenderer.java b/src/main/java/com/irtimaled/bbor/client/renderers/ConduitRenderer.java index 93d40ef..95fe01f 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/ConduitRenderer.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/ConduitRenderer.java @@ -4,7 +4,7 @@ import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper; import com.irtimaled.bbor.client.config.ColorHelper; import com.irtimaled.bbor.client.config.ConfigManager; import com.irtimaled.bbor.client.models.BoundingBoxConduit; -import com.irtimaled.bbor.common.models.Point; +import com.irtimaled.bbor.client.models.Point; import java.awt.*; diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/OffsetPoint.java b/src/main/java/com/irtimaled/bbor/client/renderers/OffsetPoint.java index 9d794fd..76c1dc7 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/OffsetPoint.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/OffsetPoint.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.client.renderers; import com.irtimaled.bbor.client.Camera; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.models.Coords; -import com.irtimaled.bbor.common.models.Point; class OffsetPoint { private final Point point; diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java b/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java index 63080ae..6d07100 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/SpawningSphereRenderer.java @@ -5,8 +5,8 @@ import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper; import com.irtimaled.bbor.client.config.ColorHelper; import com.irtimaled.bbor.client.config.ConfigManager; import com.irtimaled.bbor.client.models.BoundingBoxSpawningSphere; +import com.irtimaled.bbor.client.models.Point; import com.irtimaled.bbor.common.BoundingBoxType; -import com.irtimaled.bbor.common.models.Point; import net.minecraft.client.resources.I18n; import java.awt.*; diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/SphereRenderer.java b/src/main/java/com/irtimaled/bbor/client/renderers/SphereRenderer.java index 0144bec..241236a 100644 --- a/src/main/java/com/irtimaled/bbor/client/renderers/SphereRenderer.java +++ b/src/main/java/com/irtimaled/bbor/client/renderers/SphereRenderer.java @@ -1,8 +1,8 @@ package com.irtimaled.bbor.client.renderers; import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper; -import com.irtimaled.bbor.common.models.BoundingBoxSphere; -import com.irtimaled.bbor.common.models.Point; +import com.irtimaled.bbor.client.models.BoundingBoxSphere; +import com.irtimaled.bbor.client.models.Point; public class SphereRenderer extends AbstractRenderer { @Override diff --git a/src/main/java/com/irtimaled/bbor/common/ReflectionHelper.java b/src/main/java/com/irtimaled/bbor/common/ReflectionHelper.java new file mode 100644 index 0000000..4ade3c2 --- /dev/null +++ b/src/main/java/com/irtimaled/bbor/common/ReflectionHelper.java @@ -0,0 +1,46 @@ +package com.irtimaled.bbor.common; + +import java.lang.reflect.Field; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.function.Function; + +public class ReflectionHelper { + public static Function getPrivateFieldGetter(Class clazz, Type fieldType, Type... genericTypeArguments) { + Field field = findField(clazz, fieldType, genericTypeArguments); + if (field == null) return obj -> null; + + field.setAccessible(true); + return obj -> { + try { + return (R) field.get(obj); + } catch (IllegalAccessException ignored) { + return null; + } + }; + } + + private static Field findField(Class clazz, Type fieldType, Type[] genericTypeArguments) { + for (Field field : clazz.getDeclaredFields()) { + Type type = field.getGenericType(); + ParameterizedType genericType = TypeHelper.as(type, ParameterizedType.class); + if (genericType == null) { + if (type != fieldType || genericTypeArguments.length > 0) continue; + return field; + } + + Type rawType = genericType.getRawType(); + if (rawType != fieldType) continue; + + Type[] actualTypeArguments = genericType.getActualTypeArguments(); + if (actualTypeArguments.length != genericTypeArguments.length) continue; + + for (int typeIndex = 0; typeIndex < actualTypeArguments.length; typeIndex++) { + if (actualTypeArguments[typeIndex] != genericTypeArguments[typeIndex]) return null; + } + + return field; + } + return null; + } +} diff --git a/src/main/java/com/irtimaled/bbor/common/models/BoundingBoxSphere.java b/src/main/java/com/irtimaled/bbor/common/models/BoundingBoxSphere.java deleted file mode 100644 index 5c550f6..0000000 --- a/src/main/java/com/irtimaled/bbor/common/models/BoundingBoxSphere.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.irtimaled.bbor.common.models; - -import com.irtimaled.bbor.common.BoundingBoxType; - -public class BoundingBoxSphere extends AbstractBoundingBox { - private final double radius; - private final double minX; - private final double minZ; - private final double maxX; - private final double maxZ; - private final Point point; - - public BoundingBoxSphere(Point point, double radius, BoundingBoxType type) { - super(type); - this.radius = radius; - this.point = point; - - Coords center = point.getCoords(); - this.minX = center.getX() - radius; - this.minZ = center.getZ() - radius; - this.maxX = center.getX() + radius; - this.maxZ = center.getZ() + radius; - } - - @Override - public Boolean intersectsBounds(int minX, int minZ, int maxX, int maxZ) { - return this.maxX >= minX && - this.maxZ >= minZ && - this.minX <= maxX && - this.minZ <= maxZ; - } - - public double getRadius() { - return radius; - } - - public Point getPoint() { - return point; - } -} diff --git a/src/main/java/com/irtimaled/bbor/common/models/Point.java b/src/main/java/com/irtimaled/bbor/common/models/Point.java deleted file mode 100644 index a049d83..0000000 --- a/src/main/java/com/irtimaled/bbor/common/models/Point.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.irtimaled.bbor.common.models; - -import com.irtimaled.bbor.common.MathHelper; -import com.irtimaled.bbor.common.TypeHelper; -import net.minecraft.util.math.Vec3d; - -public class Point { - private final double x; - private final double y; - private final double z; - - public Point(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - } - - public Point(Coords Coords) { - this.x = Coords.getX(); - this.y = Coords.getY(); - this.z = Coords.getZ(); - } - - public Point(Vec3d pos) { - this.x = pos.x; - this.y = pos.y; - this.z = pos.z; - } - - public double getX() { - return x; - } - - public double getY() { - return y; - } - - public double getZ() { - return z; - } - - public Point offset(double x, double y, double z) { - return new Point(this.x + x, this.y + y, this.z + z); - } - - public Point snapXZ(double nearest) { - double x = MathHelper.snapToNearest(this.x, nearest); - double z = MathHelper.snapToNearest(this.z, nearest); - return new Point(x, this.y, z); - } - - public double getDistance(Point point) { - double dx = this.x - point.x; - double dy = this.y - point.y; - double dz = this.z - point.z; - return Math.sqrt(dx * dx + dy * dy + dz * dz); - } - - public Coords getCoords() { - return new Coords(x, y, z); - } - - @Override - public int hashCode() { - return TypeHelper.combineHashCodes(Double.hashCode(z), Double.hashCode(y), Double.hashCode(x)); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; - Point point = (Point) obj; - return getX() == point.getX() && getY() == point.getY() && getZ() == point.getZ(); - } -}