From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Date: Sun, 14 May 2023 00:47:28 -0400 Subject: [PATCH] Avoid Lazy Initialization for Enum Fields This patch is meant to get rid of any instances of lazy initialization that Minecraft introduces for enums. This has the possibility to create race condition issues, and generally don't make sense to be lazily done anyways. diff --git a/src/main/java/com/mojang/math/OctahedralGroup.java b/src/main/java/com/mojang/math/OctahedralGroup.java index a29b5fb3f5f39cfe3e0cafc9fb296e5c9d1d34d2..184ae2101ca4915102513f68cd054d4255e36dd8 100644 --- a/src/main/java/com/mojang/math/OctahedralGroup.java +++ b/src/main/java/com/mojang/math/OctahedralGroup.java @@ -111,6 +111,7 @@ public enum OctahedralGroup implements StringRepresentable { this.permutation = axisTransformation; this.transformation = (new Matrix3f()).scaling(flipX ? -1.0F : 1.0F, flipY ? -1.0F : 1.0F, flipZ ? -1.0F : 1.0F); this.transformation.mul(axisTransformation.transformation()); + this.initializeRotationDirections(); // Paper } private BooleanList packInversions() { @@ -139,7 +140,7 @@ public enum OctahedralGroup implements StringRepresentable { return this.name; } - public Direction rotate(Direction direction) { + public void initializeRotationDirections() { // Paper if (this.rotatedDirections == null) { this.rotatedDirections = Maps.newEnumMap(Direction.class); Direction.Axis[] axiss = Direction.Axis.values(); @@ -154,6 +155,10 @@ public enum OctahedralGroup implements StringRepresentable { } } + // Paper start - Move lazy initialization to constructor + } + public Direction rotate(Direction direction) { + // Paper end return this.rotatedDirections.get(direction); }