From 98ebc61bb893188b9e6084a92b993f8ddad01787 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 28 Jan 2023 02:08:19 +0100 Subject: [PATCH] WIP Modifier settings gui overhaul --- .../effortlessbuilding/ClientEvents.java | 16 +- .../buildmodifier/Array.java | 7 +- .../gui/buildmodifier/ArrayEntry.java | 125 ++++++++ .../gui/buildmodifier/ArrayPanel.java | 199 ------------ .../gui/buildmodifier/BaseModifierEntry.java | 48 +++ .../gui/buildmodifier/BaseModifierPanel.java | 14 - .../gui/buildmodifier/MirrorEntry.java | 289 +++++++++++++++++ .../gui/buildmodifier/MirrorPanel.java | 283 ----------------- .../buildmodifier/ModifierSettingsGui.java | 177 ----------- .../gui/buildmodifier/ModifiersScreen.java | 119 +++++++ .../buildmodifier/ModifiersScreenList.java | 110 +++++++ .../gui/buildmodifier/RadialMirrorEntry.java | 293 +++++++++++++++++ .../gui/buildmodifier/RadialMirrorPanel.java | 288 ----------------- .../gui/elements/SlotGui.java | 1 - .../render/ModifierRenderer.java | 296 +++++++++--------- .../render/RenderHandler.java | 30 +- .../utilities/MathHelper.java | 24 ++ 17 files changed, 1177 insertions(+), 1142 deletions(-) create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java delete mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayPanel.java create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/BaseModifierEntry.java delete mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/BaseModifierPanel.java create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/MirrorEntry.java delete mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/MirrorPanel.java delete mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ModifierSettingsGui.java create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ModifiersScreen.java create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ModifiersScreenList.java create mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/RadialMirrorEntry.java delete mode 100644 src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/RadialMirrorPanel.java create mode 100644 src/main/java/nl/requios/effortlessbuilding/utilities/MathHelper.java diff --git a/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java b/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java index 6e29955..e2eaf8c 100644 --- a/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java +++ b/src/main/java/nl/requios/effortlessbuilding/ClientEvents.java @@ -1,22 +1,14 @@ package nl.requios.effortlessbuilding; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.ShaderInstance; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.ClipContext; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.client.event.RegisterKeyMappingsEvent; -import net.minecraftforge.client.event.RegisterShadersEvent; import net.minecraftforge.client.event.ScreenEvent; import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyModifier; @@ -27,14 +19,10 @@ import nl.requios.effortlessbuilding.buildmode.BuildModeEnum; import nl.requios.effortlessbuilding.buildmode.ModeOptions; import nl.requios.effortlessbuilding.gui.buildmode.PlayerSettingsGui; import nl.requios.effortlessbuilding.gui.buildmode.RadialMenu; -import nl.requios.effortlessbuilding.gui.buildmodifier.ModifierSettingsGui; +import nl.requios.effortlessbuilding.gui.buildmodifier.ModifiersScreen; import nl.requios.effortlessbuilding.utilities.ReachHelper; -import nl.requios.effortlessbuilding.network.*; -import nl.requios.effortlessbuilding.render.BuildRenderTypes; import org.lwjgl.glfw.GLFW; -import java.io.IOException; - @EventBusSubscriber(Dist.CLIENT) public class ClientEvents { @@ -200,7 +188,7 @@ public class ClientEvents { if (ReachHelper.getMaxReach(player) == 0) { EffortlessBuilding.log(player, "Build modifiers are disabled until your reach has increased. Increase your reach with craftable reach upgrades."); } else { - mc.setScreen(new ModifierSettingsGui()); + mc.setScreen(new ModifiersScreen()); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java index fe68794..dda4fb3 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/Array.java @@ -21,7 +21,7 @@ import java.util.List; public class Array extends BaseModifier { - public BlockPos offset = BlockPos.ZERO; + public Vec3i offset = BlockPos.ZERO; public int count = 5; @Override @@ -54,7 +54,7 @@ public class Array extends BaseModifier { @Override public CompoundTag serializeNBT() { var compound = super.serializeNBT(); - compound.getCompound("offset").merge(NbtUtils.writeBlockPos(offset)); + compound.putIntArray("offset", new int[]{offset.getX(), offset.getY(), offset.getZ()}); compound.putInt("count", count); return compound; } @@ -62,7 +62,8 @@ public class Array extends BaseModifier { @Override public void deserializeNBT(CompoundTag compound) { super.deserializeNBT(compound); - offset = NbtUtils.readBlockPos(compound.getCompound("offset")); + int[] offsetArray = compound.getIntArray("offset"); + offset = new Vec3i(offsetArray[0], offsetArray[1], offsetArray[2]); count = compound.getInt("count"); } } diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java new file mode 100644 index 0000000..1b01e49 --- /dev/null +++ b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java @@ -0,0 +1,125 @@ +package nl.requios.effortlessbuilding.gui.buildmodifier; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.Widget; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import nl.requios.effortlessbuilding.EffortlessBuilding; +import nl.requios.effortlessbuilding.buildmodifier.Array; +import nl.requios.effortlessbuilding.buildmodifier.BaseModifier; +import nl.requios.effortlessbuilding.create.foundation.gui.widget.Label; +import nl.requios.effortlessbuilding.create.foundation.gui.widget.ScrollInput; +import nl.requios.effortlessbuilding.create.foundation.utility.Components; +import nl.requios.effortlessbuilding.gui.elements.GuiCheckBoxFixed; +import nl.requios.effortlessbuilding.gui.elements.GuiNumberField; +import nl.requios.effortlessbuilding.gui.elements.GuiScrollPane; +import nl.requios.effortlessbuilding.utilities.MathHelper; +import nl.requios.effortlessbuilding.utilities.ReachHelper; + +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; + +@OnlyIn(Dist.CLIENT) +public class ArrayEntry extends BaseModifierEntry { + + protected Vector offsetInputs = new Vector<>(3); + protected Vector