From 27cdf7eb729b12f9a242b76276aa032331a212fa Mon Sep 17 00:00:00 2001 From: DancingSnow <1121149616@qq.com> Date: Sun, 3 Aug 2025 20:21:27 +0800 Subject: [PATCH] fix progress bar, add suggest to command --- build.gradle | 9 ++- .../client/screen/RestoreScreen.java | 64 ++++--------------- .../command/DeleteCommand.java | 12 +++- .../command/RestoreCommand.java | 9 +++ .../quickbakcupmulti/command/ShowCommand.java | 10 +++ .../resources/META-INF/neoforge.mods.toml | 2 +- 6 files changed, 51 insertions(+), 55 deletions(-) diff --git a/build.gradle b/build.gradle index bc5a365..a46a334 100644 --- a/build.gradle +++ b/build.gradle @@ -39,6 +39,10 @@ subprojects { repositories { mavenLocal() + maven { + name = 'ParchmentMC' + url = 'https://maven.parchmentmc.org' + } maven { name "CjsahMaven" url "https://server.cjsah.net:1002/maven/" @@ -47,7 +51,10 @@ subprojects { dependencies { minecraft "net.minecraft:minecraft:$rootProject.minecraft_version" - mappings loom.officialMojangMappings() + mappings loom.layered() { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-1.21.5:2025.06.15@zip") + } // incremental storage implementation("io.github.skydynamic:incremental-storage-lib:$rootProject.incremental_storage_lib_version") diff --git a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/client/screen/RestoreScreen.java b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/client/screen/RestoreScreen.java index f241cb6..3274090 100644 --- a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/client/screen/RestoreScreen.java +++ b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/client/screen/RestoreScreen.java @@ -1,21 +1,11 @@ package io.github.skydynamic.quickbakcupmulti.client.screen; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.MeshData; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat; import io.github.skydynamic.quickbakcupmulti.translate.Translate; import lombok.Setter; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; -import org.joml.Matrix4f; public class RestoreScreen extends Screen { private final Button cancelButton; @@ -39,11 +29,11 @@ protected void init() { @Override public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) { super.render(guiGraphics, mouseX, mouseY, delta); - float centerX = this.width / 2f; - float centerY = this.height / 2f; - guiGraphics.drawCenteredString(font, Component.nullToEmpty(this.state), (int) centerX, (int) centerY - 20, 0xFFFFFF); + int centerX = this.width / 2; + int centerY = this.height / 2; + guiGraphics.drawCenteredString(font, Component.nullToEmpty(this.state), centerX, centerY - 20, 0xFFFFFF); drawProgressBar( - guiGraphics.pose(), + guiGraphics, centerX - 70, centerY - 5, centerX + 70, @@ -52,8 +42,8 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) guiGraphics.drawCenteredString( font, Component.nullToEmpty(Translate.tr("quickbackupmulti.screen.restore_screen.progress", this.getPercentString())), - (int) centerX, - (int) (centerY + 10), + centerX, + centerY + 10, 0xFFFFFF ); } @@ -72,44 +62,16 @@ private String getPercentString() { return String.format("%.2f", this.progress * 100); } - private void drawProgressBar(PoseStack poseStack, float x0, float y0, float x1, float y1) { - Matrix4f pose = poseStack.last().pose(); - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder builder = tesselator.begin( - VertexFormat.Mode.QUADS, - DefaultVertexFormat.POSITION_COLOR - ); - - float barX0 = x0 + 2; - float barY0 = y0 + 2; - float barX1 = x0 + (x1 - x0) * progress; - float barY1 = y1 - 2; + private void drawProgressBar(GuiGraphics guiGraphics, int x0, int y0, int x1, int y1) { + int barX0 = x0 + 2; + int barY0 = y0 + 2; + int barX1 = x0 + (int) ((x1 - x0) * progress); + int barY1 = y1 - 2; int progressBarColor = colorFromRatio(progress, true); - builder.addVertex(pose, x0, y0, 0.1f) - .setColor(0xffffffff); - builder.addVertex(pose, x0, y1, 0.1f) - .setColor(0xffffffff); - builder.addVertex(pose, x1, y1, 0.1f) - .setColor(0xffffffff); - builder.addVertex(pose, x1, y0, 0.1f) - .setColor(0xffffffff); - - builder.addVertex(pose, barX0, barY0, 0.1f) - .setColor(progressBarColor); - builder.addVertex(pose, barX0, barY1, 0.1f) - .setColor(progressBarColor); - builder.addVertex(pose, barX1, barY1, 0.1f) - .setColor(progressBarColor); - builder.addVertex(pose, barX1, barY0, 0.1f) - .setColor(progressBarColor); - - MeshData data = builder.build(); - if (data == null) return; - RenderSystem.disableDepthTest(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); - BufferUploader.drawWithShader(data); + guiGraphics.fill(x0, y0, x1, y1, -1); + guiGraphics.fill(barX0, barY0, barX1, barY1, progressBarColor); } private static int colorFromRatio(double ratio, boolean oneIsGreen) { diff --git a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/DeleteCommand.java b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/DeleteCommand.java index d8bb1ea..839530f 100644 --- a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/DeleteCommand.java +++ b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/DeleteCommand.java @@ -2,6 +2,7 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import io.github.skydynamic.increment.storage.lib.database.StorageInfo; import io.github.skydynamic.quickbakcupmulti.DatabaseCache; import io.github.skydynamic.quickbakcupmulti.QuickbakcupmultiReforged; import io.github.skydynamic.quickbakcupmulti.utils.BackupManager; @@ -17,9 +18,16 @@ public class DeleteCommand { public static final LiteralArgumentBuilder cmd = Commands.literal("delete") .requires(it -> PermissionManager.hasPermission(it, 2, PermissionType.HELPER)) .then(Commands.argument("name", StringArgumentType.string()) + .suggests(((context, builder) -> { + for (StorageInfo info : QuickbakcupmultiReforged.getDatabase().getAllStorageInfo()) { + if (info.getName().contains(builder.getRemaining())) { + builder.suggest(info.getName()); + } + } + return builder.buildFuture(); + })) .executes(it -> - deleteBackup(it.getSource(), StringArgumentType.getString(it, "name") - ) + deleteBackup(it.getSource(), StringArgumentType.getString(it, "name")) ) ); diff --git a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/RestoreCommand.java b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/RestoreCommand.java index 3271ee9..252b118 100644 --- a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/RestoreCommand.java +++ b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/RestoreCommand.java @@ -2,6 +2,7 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import io.github.skydynamic.increment.storage.lib.database.StorageInfo; import io.github.skydynamic.quickbakcupmulti.QuickbakcupmultiReforged; import io.github.skydynamic.quickbakcupmulti.restore.RestoreTimer; import io.github.skydynamic.quickbakcupmulti.utils.permission.PermissionManager; @@ -30,6 +31,14 @@ public class RestoreCommand { public static final LiteralArgumentBuilder restoreCmd = Commands.literal("restore") .requires(it -> PermissionManager.hasPermission(it, 4, PermissionType.ADMIN)) .then(Commands.argument("name", StringArgumentType.string()) + .suggests(((context, builder) -> { + for (StorageInfo info : QuickbakcupmultiReforged.getDatabase().getAllStorageInfo()) { + if (info.getName().contains(builder.getRemaining())) { + builder.suggest(info.getName()); + } + } + return builder.buildFuture(); + })) .executes(it -> restoreBackup(it.getSource(), StringArgumentType.getString(it, "name")) ) diff --git a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/ShowCommand.java b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/ShowCommand.java index 7422739..6a95834 100644 --- a/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/ShowCommand.java +++ b/common/src/main/java/io/github/skydynamic/quickbakcupmulti/command/ShowCommand.java @@ -2,6 +2,8 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import io.github.skydynamic.increment.storage.lib.database.StorageInfo; +import io.github.skydynamic.quickbakcupmulti.QuickbakcupmultiReforged; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; @@ -10,6 +12,14 @@ public class ShowCommand { public static final LiteralArgumentBuilder cmd = Commands.literal("show") .then(Commands.argument("name", StringArgumentType.string()) + .suggests(((context, builder) -> { + for (StorageInfo info : QuickbakcupmultiReforged.getDatabase().getAllStorageInfo()) { + if (info.getName().contains(builder.getRemaining())) { + builder.suggest(info.getName()); + } + } + return builder.buildFuture(); + })) .executes(it -> showBackupDetail(it.getSource(), StringArgumentType.getString(it, "name")) ) diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index bd33b9e..baa00ed 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -23,7 +23,7 @@ side = "BOTH" [[dependencies.quickbakcupmulti_reforged]] modId = "minecraft" type = "required" -versionRange = "[1.21, 1.21.5)" +versionRange = "[1.21.5, )" ordering = "NONE" side = "BOTH"