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 3a59a816fe35a0f329fbbde871dcb1933015990d..c044fc55f106e521bacf58424d1284069730bbf3 100644 --- a/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java +++ b/src/main/java/dev/kaiijumc/kaiiju/KaiijuConfig.java @@ -206,7 +206,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 eaa620ad86abfb151b43f697973cbc731e2e5e92..e64a6f0d1b03c164d68ca8429d9f87c2dc90870a 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); } @@ -454,6 +455,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 5b98d42b5d6bc07265fbb017e51a6281c148436a..e307429919ea4719dec89d7c7b54b888dd12b030 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); }