From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: JellySquid Date: Mon, 11 May 2020 21:00:44 +0200 Subject: [PATCH] lithium MixinDirection Original code by JellySquid, licensed under GNU Lesser General Public License v3.0 you can find the original code on https://github.com/CaffeineMC/lithium-fabric/ (Yarn mappings) diff --git a/src/main/java/net/minecraft/core/EnumDirection.java b/src/main/java/net/minecraft/core/EnumDirection.java index 7918d830a4aef09c9f517284e83a9376299116ad..5f2b1d763b552ee29e9bbe43c00ec85b1d78edb0 100644 --- a/src/main/java/net/minecraft/core/EnumDirection.java +++ b/src/main/java/net/minecraft/core/EnumDirection.java @@ -24,13 +24,13 @@ public enum EnumDirection implements INamable { DOWN(0, 1, -1, "down", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.Y, new BaseBlockPosition(0, -1, 0)), UP(1, 0, -1, "up", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.Y, new BaseBlockPosition(0, 1, 0)), NORTH(2, 3, 2, "north", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.Z, new BaseBlockPosition(0, 0, -1)), SOUTH(3, 2, 0, "south", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.Z, new BaseBlockPosition(0, 0, 1)), WEST(4, 5, 1, "west", EnumDirection.EnumAxisDirection.NEGATIVE, EnumDirection.EnumAxis.X, new BaseBlockPosition(-1, 0, 0)), EAST(5, 4, 3, "east", EnumDirection.EnumAxisDirection.POSITIVE, EnumDirection.EnumAxis.X, new BaseBlockPosition(1, 0, 0)); private final int g; - private final int h; + private final int h; // Yatopia this is idOpposit(yarn) private final int i; private final String j; private final EnumDirection.EnumAxis k; private final EnumDirection.EnumAxisDirection l; private final BaseBlockPosition m; - private static final EnumDirection[] n = values(); + private static final EnumDirection[] n = values(); private static final EnumDirection[] ALL = n;// Yatopia OBF HELPER private static final Map o = (Map) Arrays.stream(EnumDirection.n).collect(Collectors.toMap(EnumDirection::m, (enumdirection) -> { return enumdirection; })); @@ -112,8 +112,12 @@ public enum EnumDirection implements INamable { return this.l; } + /** + * @reason Avoid the modulo/abs operations + * @author JellySquid + */ public EnumDirection opposite() { - return fromType1(this.h); + return ALL[this.h]; } public EnumDirection g() { @@ -199,8 +203,12 @@ public enum EnumDirection implements INamable { return (float) ((this.i & 3) * 90); } + /** + * @reason Do not allocate an excessive number of Direction arrays + * @author JellySquid + */ public static EnumDirection a(Random random) { - return (EnumDirection) SystemUtils.a((Object[]) EnumDirection.n, random); + return ALL[random.nextInt(ALL.length)]; } public static EnumDirection a(double d0, double d1, double d2) {