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 0a40df2151bd388b6633a6f50b14f1f41ed4ce62..e7f56ae5214af02e5dbcf16b781032545702a0d8 100644 --- a/src/main/java/net/minecraft/core/EnumDirection.java +++ b/src/main/java/net/minecraft/core/EnumDirection.java @@ -24,7 +24,7 @@ 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; @@ -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 getValues()[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 getValues()[random.nextInt(getValues().length)]; } public static EnumDirection a(double d0, double d1, double d2) {