+++ /dev/null
-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 <T, R> Function<T, R> 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;
- }
-}
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;
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 {
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;
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;
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;
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;
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;
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;
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;
--- /dev/null
+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;
+ }
+}
--- /dev/null
+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();
+ }
+}
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;
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;
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;
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;
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;
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.*;
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;
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.*;
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<BoundingBoxSphere> {
@Override
--- /dev/null
+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 <T, R> Function<T, R> 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;
+ }
+}
+++ /dev/null
-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;
- }
-}
+++ /dev/null
-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();
- }
-}