From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "Sofiane H. Djerbi" <46628754+kugge@users.noreply.github.com> Date: Thu, 16 Feb 2023 21:34:37 +0200 Subject: [PATCH] Lithium Math FastUtil Author: JellySquid Licence: LGPL-3.0 diff --git a/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java b/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java index a94ec0d098394a5bd662268fe17e92e343c4619c..df9a3bb3b955705ced8a431aff4683b12eae34c1 100644 --- a/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java +++ b/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java @@ -209,7 +209,9 @@ public class KaiijuConfig { } public static boolean lithiumEnable = true; + public static boolean lithiumMathFastUtil = true; private static void lithiumSettings() { lithiumEnable = getBoolean("lithium.enable", lithiumEnable); + lithiumMathFastUtil = getBoolean("lithium.math.fast-util", lithiumMathFastUtil) && lithiumEnable; } } diff --git a/src/main/java/net/minecraft/core/AxisCycle.java b/src/main/java/net/minecraft/core/AxisCycle.java index b5d8a60dc78a76c0a55bfc30cc49d26857bd914a..dd8d98acf21bb676e86f9befb45fd09e1b14a01d 100644 --- a/src/main/java/net/minecraft/core/AxisCycle.java +++ b/src/main/java/net/minecraft/core/AxisCycle.java @@ -35,6 +35,18 @@ public enum AxisCycle { @Override public Direction.Axis cycle(Direction.Axis axis) { + // Kaiiju start - Lithium + if (dev.kaiijumc.kaiiju.KaiijuConfig.lithiumMathFastUtil){ + switch (axis.ordinal()) { + case 0: //X + return Direction.Axis.Y; + case 1: //Y + return Direction.Axis.Z; + case 2: //Z + return Direction.Axis.X; + } + } + // Kaiiju end return AXIS_VALUES[Math.floorMod(axis.ordinal() + 1, 3)]; } @@ -56,6 +68,18 @@ public enum AxisCycle { @Override public Direction.Axis cycle(Direction.Axis axis) { + // Kaiiju start - Lithium + if (dev.kaiijumc.kaiiju.KaiijuConfig.lithiumMathFastUtil){ + switch (axis.ordinal()) { + case 0: //X + return Direction.Axis.Z; + case 1: //Y + return Direction.Axis.X; + case 2: //Z + return Direction.Axis.Y; + } + } + // Kaiiju end return AXIS_VALUES[Math.floorMod(axis.ordinal() - 1, 3)]; } diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java index 82bce6109d59cba30178a446f0ff129da6f3692f..597e5c3e25190d61b9b3c1198bd668083dfc2f0d 100644 --- a/src/main/java/net/minecraft/core/Direction.java +++ b/src/main/java/net/minecraft/core/Direction.java @@ -192,6 +192,7 @@ public enum Direction implements StringRepresentable { } public Direction getOpposite() { + if (dev.kaiijumc.kaiiju.KaiijuConfig.lithiumMathFastUtil) return VALUES[this.oppositeIndex]; // Kaiiju return from3DDataValue(this.oppositeIndex); } @@ -442,6 +443,7 @@ public enum Direction implements StringRepresentable { } public static Direction getRandom(RandomSource random) { + if (dev.kaiijumc.kaiiju.KaiijuConfig.lithiumMathFastUtil) return VALUES[random.nextInt(VALUES.length)]; // Kaiiju return Util.getRandom(VALUES, random); } diff --git a/src/main/java/net/minecraft/world/phys/AABB.java b/src/main/java/net/minecraft/world/phys/AABB.java index ffc76354ead6937daf366c3d87bcb51d3e4c47f5..07965ebef2326c73f94a97f478ba1fd0d1ed5dce 100644 --- a/src/main/java/net/minecraft/world/phys/AABB.java +++ b/src/main/java/net/minecraft/world/phys/AABB.java @@ -81,10 +81,36 @@ public class AABB { } public double min(Direction.Axis axis) { + // Kaiiju start - Lithium + if (dev.kaiijumc.kaiiju.KaiijuConfig.lithiumMathFastUtil){ + switch (axis.ordinal()) { + case 0: //X + return this.minX; + case 1: //Y + return this.minY; + case 2: //Z + return this.minZ; + } + throw new IllegalArgumentException(); + } + // Kaiiju end return axis.choose(this.minX, this.minY, this.minZ); } public double max(Direction.Axis axis) { + // Kaiiju start - Lithium + if (dev.kaiijumc.kaiiju.KaiijuConfig.lithiumMathFastUtil){ + switch (axis.ordinal()) { + case 0: //X + return this.maxX; + case 1: //Y + return this.maxY; + case 2: //Z + return this.maxZ; + } + throw new IllegalArgumentException(); + } + // Kaiiju end return axis.choose(this.maxX, this.maxY, this.maxZ); }