From ff77134ead8518c31403c6e52c60860cbf05ea2c Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 28 Oct 2022 18:03:25 +0200 Subject: [PATCH] Adopted new Math and Widget changes --- .../bclib/client/models/OBJBlockModel.java | 2 +- .../bclib/client/models/OBJModelBuilder.java | 2 +- .../bclib/client/models/UnbakedQuad.java | 9 ++++--- .../render/BaseChestBlockEntityRenderer.java | 4 +-- .../render/BaseSignBlockEntityRenderer.java | 6 ++--- .../bclib/client/render/BoatRenderer.java | 16 +++++++----- .../bclib/mixin/client/AnvilScreenMixin.java | 8 ++++-- .../bclib/sdf/operator/SDFCoordModify.java | 3 ++- .../bclib/sdf/operator/SDFDisplacement.java | 3 ++- .../bclib/sdf/operator/SDFRotation.java | 11 ++++---- .../java/org/betterx/bclib/util/MHelper.java | 25 ++++++++++--------- .../org/betterx/bclib/util/SplineHelper.java | 2 +- .../betterx/ui/layout/components/Button.java | 15 +++++------ .../betterx/ui/layout/components/Panel.java | 4 +-- .../components/render/RenderHelper.java | 3 ++- 15 files changed, 62 insertions(+), 51 deletions(-) diff --git a/src/main/java/org/betterx/bclib/client/models/OBJBlockModel.java b/src/main/java/org/betterx/bclib/client/models/OBJBlockModel.java index f0695629..6673f621 100644 --- a/src/main/java/org/betterx/bclib/client/models/OBJBlockModel.java +++ b/src/main/java/org/betterx/bclib/client/models/OBJBlockModel.java @@ -4,7 +4,6 @@ import org.betterx.bclib.BCLib; import org.betterx.bclib.util.BlocksHelper; import org.betterx.bclib.util.MHelper; -import com.mojang.math.Vector3f; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.ItemOverrides; @@ -23,6 +22,7 @@ import net.fabricmc.api.Environment; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import org.joml.Vector3f; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/main/java/org/betterx/bclib/client/models/OBJModelBuilder.java b/src/main/java/org/betterx/bclib/client/models/OBJModelBuilder.java index d08be7eb..c17ed39f 100644 --- a/src/main/java/org/betterx/bclib/client/models/OBJModelBuilder.java +++ b/src/main/java/org/betterx/bclib/client/models/OBJModelBuilder.java @@ -1,12 +1,12 @@ package org.betterx.bclib.client.models; -import com.mojang.math.Vector3f; import net.minecraft.resources.ResourceLocation; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import com.google.common.collect.Lists; +import org.joml.Vector3f; import java.util.List; diff --git a/src/main/java/org/betterx/bclib/client/models/UnbakedQuad.java b/src/main/java/org/betterx/bclib/client/models/UnbakedQuad.java index 9978d8bd..a9b167d6 100644 --- a/src/main/java/org/betterx/bclib/client/models/UnbakedQuad.java +++ b/src/main/java/org/betterx/bclib/client/models/UnbakedQuad.java @@ -1,8 +1,5 @@ package org.betterx.bclib.client.models; -import com.mojang.math.Matrix4f; -import com.mojang.math.Vector3f; -import com.mojang.math.Vector4f; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.ModelState; @@ -11,6 +8,10 @@ import net.minecraft.core.Direction; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import org.joml.Matrix4f; +import org.joml.Vector3f; +import org.joml.Vector4f; + @Environment(EnvType.CLIENT) public class UnbakedQuad { private static final Vector4f POS = new Vector4f(); @@ -55,7 +56,7 @@ public class UnbakedQuad { float y = data[dataIndex++]; // Y float z = data[dataIndex++]; // Z POS.set(x, y, z, 0); - POS.transform(matrix); + POS.mul(matrix); vertexData[index] = Float.floatToIntBits(POS.x()); // X vertexData[index | 1] = Float.floatToIntBits(POS.y()); // Y vertexData[index | 2] = Float.floatToIntBits(POS.z()); // Z diff --git a/src/main/java/org/betterx/bclib/client/render/BaseChestBlockEntityRenderer.java b/src/main/java/org/betterx/bclib/client/render/BaseChestBlockEntityRenderer.java index ab1a3d59..8827b803 100644 --- a/src/main/java/org/betterx/bclib/client/render/BaseChestBlockEntityRenderer.java +++ b/src/main/java/org/betterx/bclib/client/render/BaseChestBlockEntityRenderer.java @@ -5,7 +5,7 @@ import org.betterx.bclib.client.models.BaseChestBlockModel; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -73,7 +73,7 @@ public class BaseChestBlockEntityRenderer implements BlockEntityRenderer 0.0f) { - poseStack.mulPose(Vector3f.XP.rotationDegrees(Mth.sin(h) * h * j / 10.0f * (float) boat.getHurtDir())); + poseStack.mulPose(Axis.XP.rotationDegrees(Mth.sin(h) * h * j / 10.0f * (float) boat.getHurtDir())); } if (!Mth.equal(k = boat.getBubbleAngle(g), 0.0f)) { - poseStack.mulPose(new Quaternion(new Vector3f(1.0f, 0.0f, 1.0f), boat.getBubbleAngle(g), true)); + poseStack.mulPose(new Quaternionf().setAngleAxis( + boat.getBubbleAngle(g) * ((float) Math.PI / 180), + 1.0f, 0.0f, 1.0f + )); } ResourceLocation resourceLocation = hasChest ? type.chestBoatTexture : type.boatTexture; BoatModel boatModel = type.getBoatModel(hasChest); poseStack.scale(-1.0f, -1.0f, 1.0f); - poseStack.mulPose(Vector3f.YP.rotationDegrees(90.0f)); + poseStack.mulPose(Axis.YP.rotationDegrees(90.0f)); boatModel.setupAnim(boat, g, 0.0f, -0.1f, 0.0f, 0.0f); VertexConsumer vertexConsumer = multiBufferSource.getBuffer(boatModel.renderType(resourceLocation)); boatModel.renderToBuffer( diff --git a/src/main/java/org/betterx/bclib/mixin/client/AnvilScreenMixin.java b/src/main/java/org/betterx/bclib/mixin/client/AnvilScreenMixin.java index dd7faa9c..8ea93844 100644 --- a/src/main/java/org/betterx/bclib/mixin/client/AnvilScreenMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/client/AnvilScreenMixin.java @@ -42,8 +42,12 @@ public class AnvilScreenMixin extends ItemCombinerScreen { int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; be_buttons.clear(); - be_buttons.add(new Button(x + 8, y + 45, 15, 20, Component.literal("<"), b -> be_previousRecipe())); - be_buttons.add(new Button(x + 154, y + 45, 15, 20, Component.literal(">"), b -> be_nextRecipe())); + be_buttons.add(Button.builder(Component.literal("<"), b -> be_previousRecipe()) + .bounds(x + 8, y + 45, 15, 20) + .build()); + be_buttons.add(Button.builder(Component.literal(">"), b -> be_nextRecipe()) + .bounds(x + 154, y + 45, 15, 20) + .build()); be_buttons.forEach(button -> addWidget(button)); } diff --git a/src/main/java/org/betterx/bclib/sdf/operator/SDFCoordModify.java b/src/main/java/org/betterx/bclib/sdf/operator/SDFCoordModify.java index b2b4a638..00a82c5c 100644 --- a/src/main/java/org/betterx/bclib/sdf/operator/SDFCoordModify.java +++ b/src/main/java/org/betterx/bclib/sdf/operator/SDFCoordModify.java @@ -1,6 +1,7 @@ package org.betterx.bclib.sdf.operator; -import com.mojang.math.Vector3f; + +import org.joml.Vector3f; import java.util.function.Consumer; diff --git a/src/main/java/org/betterx/bclib/sdf/operator/SDFDisplacement.java b/src/main/java/org/betterx/bclib/sdf/operator/SDFDisplacement.java index a5c2477d..a91c16d0 100644 --- a/src/main/java/org/betterx/bclib/sdf/operator/SDFDisplacement.java +++ b/src/main/java/org/betterx/bclib/sdf/operator/SDFDisplacement.java @@ -1,6 +1,7 @@ package org.betterx.bclib.sdf.operator; -import com.mojang.math.Vector3f; + +import org.joml.Vector3f; import java.util.function.Function; diff --git a/src/main/java/org/betterx/bclib/sdf/operator/SDFRotation.java b/src/main/java/org/betterx/bclib/sdf/operator/SDFRotation.java index fb782d4c..bba68302 100644 --- a/src/main/java/org/betterx/bclib/sdf/operator/SDFRotation.java +++ b/src/main/java/org/betterx/bclib/sdf/operator/SDFRotation.java @@ -1,21 +1,22 @@ package org.betterx.bclib.sdf.operator; -import com.mojang.math.Quaternion; -import com.mojang.math.Vector3f; + +import org.joml.Quaternionf; +import org.joml.Vector3f; public class SDFRotation extends SDFUnary { private final Vector3f pos = new Vector3f(); - private Quaternion rotation; + private Quaternionf rotation; public SDFRotation setRotation(Vector3f axis, float rotationAngle) { - rotation = new Quaternion(axis, rotationAngle, false); + rotation = new Quaternionf().setAngleAxis(rotationAngle, axis.x, axis.y, axis.z); return this; } @Override public float getDistance(float x, float y, float z) { pos.set(x, y, z); - pos.transform(rotation); + pos.rotate(rotation); return source.getDistance(pos.x(), pos.y(), pos.z()); } } diff --git a/src/main/java/org/betterx/bclib/util/MHelper.java b/src/main/java/org/betterx/bclib/util/MHelper.java index 16b3555a..e27bcd27 100644 --- a/src/main/java/org/betterx/bclib/util/MHelper.java +++ b/src/main/java/org/betterx/bclib/util/MHelper.java @@ -1,17 +1,18 @@ package org.betterx.bclib.util; -import com.mojang.math.Vector3f; import net.minecraft.core.Vec3i; import net.minecraft.util.RandomSource; import net.minecraft.world.level.levelgen.PositionalRandomFactory; +import org.joml.Vector3f; + import java.util.Random; import java.util.concurrent.ThreadLocalRandom; public class MHelper { static class ThreadLocalRandomSource implements RandomSource { ThreadLocalRandomSource(long seed) { - + } @Override @@ -230,28 +231,28 @@ public class MHelper { } public static Vector3f cross(Vector3f vec1, Vector3f vec2) { - float cx = vec1.y() * vec2.z() - vec1.z() * vec2.y(); - float cy = vec1.z() * vec2.x() - vec1.x() * vec2.z(); - float cz = vec1.x() * vec2.y() - vec1.y() * vec2.x(); + float cx = vec1.y * vec2.z - vec1.z * vec2.y; + float cy = vec1.z * vec2.x - vec1.x * vec2.z; + float cz = vec1.x * vec2.y - vec1.y * vec2.x; return new Vector3f(cx, cy, cz); } public static Vector3f normalize(Vector3f vec) { - float length = lengthSqr(vec.x(), vec.y(), vec.z()); + float length = lengthSqr(vec.x, vec.y, vec.z); if (length > 0) { length = (float) Math.sqrt(length); - float x = vec.x() / length; - float y = vec.y() / length; - float z = vec.z() / length; + float x = vec.x / length; + float y = vec.y / length; + float z = vec.z / length; vec.set(x, y, z); } return vec; } public static float angle(Vector3f vec1, Vector3f vec2) { - float dot = vec1.x() * vec2.x() + vec1.y() * vec2.y() + vec1.z() * vec2.z(); - float length1 = lengthSqr(vec1.x(), vec1.y(), vec1.z()); - float length2 = lengthSqr(vec2.x(), vec2.y(), vec2.z()); + float dot = vec1.x * vec2.x + vec1.y * vec2.y + vec1.z * vec2.z; + float length1 = lengthSqr(vec1.x, vec1.y, vec1.z); + float length2 = lengthSqr(vec2.x, vec2.y, vec2.z); return (float) Math.acos(dot / Math.sqrt(length1 * length2)); } diff --git a/src/main/java/org/betterx/bclib/util/SplineHelper.java b/src/main/java/org/betterx/bclib/util/SplineHelper.java index 54576e0d..b4158b78 100644 --- a/src/main/java/org/betterx/bclib/util/SplineHelper.java +++ b/src/main/java/org/betterx/bclib/util/SplineHelper.java @@ -4,7 +4,6 @@ import org.betterx.bclib.sdf.SDF; import org.betterx.bclib.sdf.operator.SDFUnion; import org.betterx.bclib.sdf.primitive.SDFLine; -import com.mojang.math.Vector3f; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.util.Mth; @@ -13,6 +12,7 @@ import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import com.google.common.collect.Lists; +import org.joml.Vector3f; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/betterx/ui/layout/components/Button.java b/src/main/java/org/betterx/ui/layout/components/Button.java index a63e0eff..50109162 100644 --- a/src/main/java/org/betterx/ui/layout/components/Button.java +++ b/src/main/java/org/betterx/ui/layout/components/Button.java @@ -53,15 +53,12 @@ public class Button extends AbstractVanillaComponent onPress.onPress(self), - (bt, stack, x, y) -> onTooltip.onTooltip(self, stack, x, y) - ); + return net.minecraft.client.gui.components.Button + .builder(component, (bt) -> onPress.onPress(self)) + .bounds(0, 0, relativeBounds.width, relativeBounds.height) + .tooltip((bt, stack, x, y) -> onTooltip.onTooltip(self, stack, x, y)) + .build(); + } public boolean isGlowing() { diff --git a/src/main/java/org/betterx/ui/layout/components/Panel.java b/src/main/java/org/betterx/ui/layout/components/Panel.java index a5e6b501..f22c10fe 100644 --- a/src/main/java/org/betterx/ui/layout/components/Panel.java +++ b/src/main/java/org/betterx/ui/layout/components/Panel.java @@ -5,7 +5,7 @@ import org.betterx.ui.layout.components.input.RelativeContainerEventHandler; import org.betterx.ui.layout.values.Rectangle; import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.components.Widget; +import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarrationElementOutput; @@ -17,7 +17,7 @@ import java.util.List; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) -public class Panel implements ComponentWithBounds, RelativeContainerEventHandler, NarratableEntry, Widget { +public class Panel implements ComponentWithBounds, RelativeContainerEventHandler, NarratableEntry, Renderable { protected LayoutComponent child; List listeners = List.of(); public final Rectangle bounds; diff --git a/src/main/java/org/betterx/ui/layout/components/render/RenderHelper.java b/src/main/java/org/betterx/ui/layout/components/render/RenderHelper.java index d5a3f565..16d249a3 100644 --- a/src/main/java/org/betterx/ui/layout/components/render/RenderHelper.java +++ b/src/main/java/org/betterx/ui/layout/components/render/RenderHelper.java @@ -7,11 +7,12 @@ import org.betterx.ui.layout.values.Size; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; -import com.mojang.math.Matrix4f; import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.resources.ResourceLocation; +import org.joml.Matrix4f; + public class RenderHelper { public static void outline(PoseStack poseStack, int x0, int y0, int x1, int y1, int color) { outline(poseStack, x0, y0, x1, y1, color, color);