From 5e240321ba291520c640ae5daabbdf4afc30d673 Mon Sep 17 00:00:00 2001 From: JustAHuman-xD <65748158+JustAHuman-xD@users.noreply.github.com> Date: Mon, 4 Mar 2024 18:03:43 -0600 Subject: [PATCH] fix transformationsssss --- .../utils/DisplayGroupGenerators.java | 5 +++-- .../implementation/utils/Transformations.java | 13 +++++++++++++ .../cultivation/implementation/utils/Utils.java | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/main/java/dev/sefiraat/cultivation/implementation/utils/Utils.java diff --git a/src/main/java/dev/sefiraat/cultivation/implementation/utils/DisplayGroupGenerators.java b/src/main/java/dev/sefiraat/cultivation/implementation/utils/DisplayGroupGenerators.java index 073095a..502606e 100644 --- a/src/main/java/dev/sefiraat/cultivation/implementation/utils/DisplayGroupGenerators.java +++ b/src/main/java/dev/sefiraat/cultivation/implementation/utils/DisplayGroupGenerators.java @@ -147,6 +147,7 @@ public static DisplayGroup generatePlant(@Nonnull Location location) { "plant", new ItemDisplayBuilder() .setGroupParentOffset(new Vector(0, 0.5, 0)) + .setTransformation(Transformations.DEFAULT_TRANSFORMATION.getTransformation()) .setItemStack(new ItemStack(Material.SMALL_DRIPLEAF)) .build(displayGroup) ); @@ -355,7 +356,7 @@ public static DisplayGroup generateGrindingCounter(@Nonnull Location location) { new BlockDisplayBuilder() .setGroupParentOffset(new Vector(0.1, 0.82, -0.2)) .setBlockData(blockData) - .setTransformation(Transformations.GRINDING_BOWL.getTransformation()) + .setTransformation(Transformations.GRINDING_BOWL.getTransformation(false)) .build(displayGroup) ); displayGroup.addDisplay( @@ -428,7 +429,7 @@ public static DisplayGroup generateBoilingCounter(@Nonnull Location location) { new BlockDisplayBuilder() .setGroupParentOffset(new Vector(-0.15, 0.85, -0.15)) .setBlockData(blockData) - .setTransformation(Transformations.BOILING_POT.getTransformation()) + .setTransformation(Transformations.BOILING_POT.getTransformation(false)) .build(displayGroup) ); diff --git a/src/main/java/dev/sefiraat/cultivation/implementation/utils/Transformations.java b/src/main/java/dev/sefiraat/cultivation/implementation/utils/Transformations.java index 550575c..4bc5c20 100644 --- a/src/main/java/dev/sefiraat/cultivation/implementation/utils/Transformations.java +++ b/src/main/java/dev/sefiraat/cultivation/implementation/utils/Transformations.java @@ -3,11 +3,13 @@ import dev.sefiraat.sefilib.misc.RotationFace; import dev.sefiraat.sefilib.misc.TransformationBuilder; import org.bukkit.util.Transformation; +import org.joml.Quaternionf; import javax.annotation.Nonnull; public enum Transformations { + DEFAULT_TRANSFORMATION(new TransformationBuilder().build()), STICK_POINT_UPRIGHT(new TransformationBuilder() .firstRotation(RotationFace.FRONT, 45) .build() @@ -137,6 +139,17 @@ public enum Transformations { } public Transformation getTransformation() { + return getTransformation(true); + } + + public Transformation getTransformation(boolean itemDisplay) { + // 1.20 added 180 degrees to item display rotation, let's account for this + if (itemDisplay && Utils.getMajorServerVersion() >= 20) { + return new Transformation(transformation.getTranslation(), + transformation.getLeftRotation(), + transformation.getScale(), + new Quaternionf(transformation.getRightRotation()).rotateY((float) Math.PI)); + } return transformation; } } diff --git a/src/main/java/dev/sefiraat/cultivation/implementation/utils/Utils.java b/src/main/java/dev/sefiraat/cultivation/implementation/utils/Utils.java new file mode 100644 index 0000000..e20f099 --- /dev/null +++ b/src/main/java/dev/sefiraat/cultivation/implementation/utils/Utils.java @@ -0,0 +1,14 @@ +package dev.sefiraat.cultivation.implementation.utils; + +import org.bukkit.Bukkit; + +public class Utils { + + private Utils() { + throw new IllegalStateException("Utility class"); + } + + public static int getMajorServerVersion() { + return Integer.parseInt(Bukkit.getServer().getBukkitVersion().split("\\.")[1]); + } +}