From 575e2dbb57c6e234be4850c7007eb922b2b14d80 Mon Sep 17 00:00:00 2001 From: ThatOneDevil <62218606+ThatOneDevil@users.noreply.github.com> Date: Mon, 1 Dec 2025 21:06:47 +0000 Subject: [PATCH 1/7] copied over modrinth readme --- README.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ee9206d --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# PackCore + +PackCore is a companion mod for the **Skyblock Enhanced** modpacks. It enhances the player experience with a seamless and immersive start to the game. + +The mod provides: + +- **SkyBlock-themed start menu**, bringing a custom touch to your gameplay. +- A **default configuration setup prompt** on first launch, ensuring the best settings for your modpack. +- In-game **pop-up notifications** in the main menu with information about the newest modpack updates. + +PackCore is essential to the SkyBlock Enhanced Modpacks. Its goal is to make your Hypixel experience feel like you’re stepping directly into a SkyBlock world—not just vanilla Minecraft. + +--- + +## Interested in Modpacks for SkyBlock? + +### _SkyBlock Enhanced – Modern Edition_ +The newest pack, built for **Minecraft 1.21+**. +Play Hypixel Skyblock on the latest version with improved performance over 1.8.9. +→ https://modrinth.com/project/e0oMrxjp + +### _SkyBlock Enhanced [Hypixel]_ +The original pack, built for **Minecraft 1.8.9**. +Features strong performance and a large collection of SkyBlock-specific mods, all preconfigured so you can jump right in. +→ https://modrinth.com/project/9JTbeXjU + +--- + +## Partner Offer: Bisect Hosting + +[![Bisect Hosting Banner](https://wsrv.nl/?url=https%3A%2F%2Fwww.bisecthosting.com%2Fpartners%2Fcustom-banners%2F8a1e1ba8-343f-4e31-a276-a1eba99388f3.webp&n=-1)](https://www.bisecthosting.com/SBE) + +I partner with **Bisect Hosting** to provide reliable game servers. +Whether you're hosting Minecraft or another title, they offer fast support and high-performance hardware. + +**Use code `SBE` for 25% off** your first purchase. +Support my work by using this link: +https://www.bisecthosting.com/SBE From 86158080407e0eb6a7aba3ef8ed108d13755221a Mon Sep 17 00:00:00 2001 From: ThatOneDevil <62218606+ThatOneDevil@users.noreply.github.com> Date: Mon, 1 Dec 2025 21:22:49 +0000 Subject: [PATCH 2/7] added some useful information --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index ee9206d..d3fe5a7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,18 @@ +
+ # PackCore + +[![Download on Modrinth](https://raw.githubusercontent.com/intergrav/devins-badges/c7fd18efdadd1c3f12ae56b49afd834640d2d797/assets/cozy/available/modrinth_vector.svg)](https://modrinth.com/mod/yoinkgui) +[![fapi-badge](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/requires/fabric-api_vector.svg)](https://modrinth.com/mod/fabric-api) + +![Build Status](https://github.com/KdGaming0/PackCore/actions/workflows/build.yml/badge.svg) +[![Modrinth Donwloads](https://img.shields.io/modrinth/dt/packcore?color=00AF5C&label=downloads&logo=modrinth)](https://modrinth.com/mod/yoinkgui) PackCore is a companion mod for the **Skyblock Enhanced** modpacks. It enhances the player experience with a seamless and immersive start to the game. +
+ +--- The mod provides: - **SkyBlock-themed start menu**, bringing a custom touch to your gameplay. From 71bb7f3271ae6c781fe838759fa641dbb6032ecf Mon Sep 17 00:00:00 2001 From: ThatOneDevil <62218606+ThatOneDevil@users.noreply.github.com> Date: Mon, 1 Dec 2025 21:26:26 +0000 Subject: [PATCH 3/7] added new bisect banner and kofi lin --- README.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d3fe5a7..f857099 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,20 @@ Features strong performance and a large collection of SkyBlock-specific mods, al --- -## Partner Offer: Bisect Hosting +Support the Project +------------------- -[![Bisect Hosting Banner](https://wsrv.nl/?url=https%3A%2F%2Fwww.bisecthosting.com%2Fpartners%2Fcustom-banners%2F8a1e1ba8-343f-4e31-a276-a1eba99388f3.webp&n=-1)](https://www.bisecthosting.com/SBE) +Want to support my work? You can do this on Ko‑fi. All donations are highly appreciated and help me continue providing support and updates. Thank you to everyone who wants to help! -I partner with **Bisect Hosting** to provide reliable game servers. -Whether you're hosting Minecraft or another title, they offer fast support and high-performance hardware. +→ [☕ Support on Ko-fi](https://ko-fi.com/kdgaming1) -**Use code `SBE` for 25% off** your first purchase. -Support my work by using this link: -https://www.bisecthosting.com/SBE +Server Hosting Partner +---------------------- + +In need of your own server? I partner with Bisect Hosting to bring you reliable game servers. Whether you play Minecraft or another title, they deliver high‑performance hardware and fast support. + +Use code **SBE** at checkout for **25% off** your first purchase. + +→ [🎮 Get 25% Off with Bisect Hosting](https://www.bisecthosting.com/SBE?r=SkyblockEnhancedModrinthPage) + +![Bisect Hosting promotional banner advertising 'Use code SBE for 25% off' to start your adventure, featuring the Bisect Hosting logo and pixelated Minecraft-style text with golden decorative borders](https://cdn.modrinth.com/data/cached_images/01502d9d41e784dfa18a3a1903a3e906cde1af1f.webp) From 08cd8b5735385886848d804d24d36b2702f970fe Mon Sep 17 00:00:00 2001 From: ThatOneDevil <62218606+ThatOneDevil@users.noreply.github.com> Date: Mon, 1 Dec 2025 21:27:30 +0000 Subject: [PATCH 4/7] Fix Modrinth downloads link in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f857099..8c3b8bf 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![fapi-badge](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/requires/fabric-api_vector.svg)](https://modrinth.com/mod/fabric-api) ![Build Status](https://github.com/KdGaming0/PackCore/actions/workflows/build.yml/badge.svg) -[![Modrinth Donwloads](https://img.shields.io/modrinth/dt/packcore?color=00AF5C&label=downloads&logo=modrinth)](https://modrinth.com/mod/yoinkgui) +[![Modrinth Donwloads](https://img.shields.io/modrinth/dt/packcore?color=00AF5C&label=downloads&logo=modrinth)](https://modrinth.com/mod/packcore) PackCore is a companion mod for the **Skyblock Enhanced** modpacks. It enhances the player experience with a seamless and immersive start to the game. From 0b246496c387eb5bc7c75cfecde2961fbbc07230 Mon Sep 17 00:00:00 2001 From: ThatOneDevil <62218606+ThatOneDevil@users.noreply.github.com> Date: Mon, 1 Dec 2025 21:28:12 +0000 Subject: [PATCH 5/7] Update Modrinth link in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c3b8bf..61cc500 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # PackCore -[![Download on Modrinth](https://raw.githubusercontent.com/intergrav/devins-badges/c7fd18efdadd1c3f12ae56b49afd834640d2d797/assets/cozy/available/modrinth_vector.svg)](https://modrinth.com/mod/yoinkgui) +[![Download on Modrinth](https://raw.githubusercontent.com/intergrav/devins-badges/c7fd18efdadd1c3f12ae56b49afd834640d2d797/assets/cozy/available/modrinth_vector.svg)](https://modrinth.com/mod/packcore) [![fapi-badge](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/requires/fabric-api_vector.svg)](https://modrinth.com/mod/fabric-api) ![Build Status](https://github.com/KdGaming0/PackCore/actions/workflows/build.yml/badge.svg) From 76f41a7bd81d2f3b9ddd9136895e7cdd11e17823 Mon Sep 17 00:00:00 2001 From: ThatOneDevil <62218606+ThatOneDevil@users.noreply.github.com> Date: Wed, 17 Dec 2025 12:58:47 +0000 Subject: [PATCH 6/7] Added a way to copy the commands for both /packcore and /scamshield using 1 helper method for simplicity --- .../packcore/command/CommandHelper.java | 20 +++++++ .../command/packcore/HelpCommand.java | 42 +++++--------- .../command/packcore/MenuCommand.java | 7 +-- .../command/packcore/PackCoreCommand.java | 22 ++++---- .../command/packcore/PerformanceCommand.java | 49 +++++++++++----- .../command/packcore/TabDesignCommand.java | 12 ++++ .../scamshield/ScamShieldHelpCommand.java | 56 +++++++++++-------- .../scamshield/ScamShieldPreviewCommands.java | 22 ++++++++ .../scamshield/ScamShieldTestCommands.java | 6 ++ .../ScamShieldWhitelistCommands.java | 16 ++++++ 10 files changed, 171 insertions(+), 81 deletions(-) create mode 100644 src/main/java/com/github/kd_gaming1/packcore/command/CommandHelper.java diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/CommandHelper.java b/src/main/java/com/github/kd_gaming1/packcore/command/CommandHelper.java new file mode 100644 index 0000000..cd63fb7 --- /dev/null +++ b/src/main/java/com/github/kd_gaming1/packcore/command/CommandHelper.java @@ -0,0 +1,20 @@ +package com.github.kd_gaming1.packcore.command; + +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.minecraft.text.ClickEvent; +import net.minecraft.text.HoverEvent; +import net.minecraft.text.MutableText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +public class CommandHelper { + // Send a command that can be clicked to copy + public static void sendCopyCommand(FabricClientCommandSource source, String message, String command) { + MutableText commandText = Text.literal(" ").append(Text.literal(message)) + .styled(style -> style + .withClickEvent(new ClickEvent.SuggestCommand(command)) + .withHoverEvent(new HoverEvent.ShowText( + Text.literal("Click to copy command").formatted(Formatting.YELLOW)))); + source.sendFeedback(commandText); + } +} diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/HelpCommand.java b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/HelpCommand.java index 7124501..26967a7 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/HelpCommand.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/HelpCommand.java @@ -4,12 +4,11 @@ import com.mojang.brigadier.context.CommandContext; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; -import net.minecraft.text.ClickEvent; -import net.minecraft.text.HoverEvent; -import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import static com.github.kd_gaming1.packcore.command.CommandHelper.sendCopyCommand; + public class HelpCommand { public static LiteralArgumentBuilder register() { @@ -26,26 +25,26 @@ private static int execute(CommandContext context) { // Setup & Configuration source.sendFeedback(Text.literal("⚙ Setup & Configuration:").formatted(Formatting.YELLOW, Formatting.BOLD)); - sendCommand(source, "/packcore wizard", "Open the setup wizard"); - sendCommand(source, "/packcore configmanager", "Open config manager GUI"); - sendCommand(source, "/packcore menu toggle", "Enable/disable custom menu"); - sendCommand(source, "/packcore menu enable", "Enable custom menu"); - sendCommand(source, "/packcore menu disable", "Disable custom menu"); + sendCopyCommand(source, "§a/packcore wizard §7- Open the setup wizard", "/packcore wizard"); + sendCopyCommand(source, "§a/packcore configmanager §7- Open config manager GUI", "/packcore configmanager"); + sendCopyCommand(source, "§a/packcore menu toggle §7- Enable/disable custom menu", "/packcore menu toggle"); + sendCopyCommand(source, "§a/packcore menu enable §7- Enable custom menu", "/packcore menu enable"); + sendCopyCommand(source, "§a/packcore menu disable §7- Disable custom menu", "/packcore menu disable"); source.sendFeedback(Text.literal("")); // Performance & Design source.sendFeedback(Text.literal("🚀 Performance & Design:").formatted(Formatting.YELLOW, Formatting.BOLD)); - sendCommand(source, "/packcore performance list", "List performance profiles"); - sendCommand(source, "/packcore performance apply ", "Apply performance profile"); - sendCommand(source, "/packcore tabdesign list", "List available tab designs"); - sendCommand(source, "/packcore tabdesign apply ", "Apply tab design"); + sendCopyCommand(source, "§a/packcore performance list §7- List performance profiles", "/packcore performance list"); + sendCopyCommand(source, "§a/packcore performance apply §7- Apply performance profile", "/packcore performance apply"); + sendCopyCommand(source, "§a/packcore tabdesign list §7- List available tab designs", "/packcore tabdesign list"); + sendCopyCommand(source, "§a/packcore tabdesign apply §7- Apply tab design", "/packcore tabdesign apply "); source.sendFeedback(Text.literal("")); // Information source.sendFeedback(Text.literal("ℹ Information:").formatted(Formatting.YELLOW, Formatting.BOLD)); - sendCommand(source, "/packcore status", "Show current status"); - sendCommand(source, "/packcore guide", "Open guide system"); - sendCommand(source, "/packcore help", "Show this help message"); + sendCopyCommand(source, "§a/packcore status §7- Show current status", "/packcore status"); + sendCopyCommand(source, "§a/packcore guide §7- Open guide system", "/packcore guide"); + sendCopyCommand(source, "§a/packcore help §7- Show this help message", "/packcore help"); source.sendFeedback(Text.literal("")); source.sendFeedback(Text.literal("═══════════════════════════════════").formatted(Formatting.GOLD)); @@ -54,17 +53,4 @@ private static int execute(CommandContext context) { return 1; } - private static void sendCommand(FabricClientCommandSource source, String command, String description) { - MutableText commandText = Text.literal(" " + command) - .formatted(Formatting.GREEN) - .styled(style -> style - .withClickEvent(new ClickEvent.SuggestCommand(command)) - .withHoverEvent(new HoverEvent.ShowText( - Text.literal("Click to copy command").formatted(Formatting.YELLOW)))); - - MutableText descText = Text.literal(" - " + description).formatted(Formatting.GRAY); - - source.sendFeedback(commandText.append(descText)); - } - } \ No newline at end of file diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/MenuCommand.java b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/MenuCommand.java index c978535..96b8889 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/MenuCommand.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/MenuCommand.java @@ -58,11 +58,8 @@ private static int showMenuStatus(CommandContext cont .append(Text.literal(status).formatted(color)) ); - context.getSource().sendFeedback( - Text.literal("Use ").formatted(Formatting.GRAY) - .append(Text.literal("/packcore menu toggle").formatted(Formatting.GREEN)) - .append(Text.literal(" to change").formatted(Formatting.GRAY)) - ); + context.getSource().sendFeedback(Text.literal("/packcore menu toggle") + .formatted(Formatting.YELLOW)); return 1; } diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PackCoreCommand.java b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PackCoreCommand.java index 241dbb6..015689c 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PackCoreCommand.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PackCoreCommand.java @@ -7,6 +7,8 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import static com.github.kd_gaming1.packcore.command.CommandHelper.sendCopyCommand; + public class PackCoreCommand { public static void registerCommands(CommandDispatcher dispatcher) { @@ -27,20 +29,16 @@ private static int showQuickHelp(CommandContext conte var source = context.getSource(); source.sendFeedback(Text.literal("PackCore Commands").formatted(Formatting.GOLD, Formatting.BOLD)); - source.sendFeedback(Text.literal("Type ").formatted(Formatting.GRAY) - .append(Text.literal("/packcore help").formatted(Formatting.GREEN)) - .append(Text.literal(" for full command list").formatted(Formatting.GRAY))); + + sendCopyCommand(source, "§7Type §a/packcore help §7for full command list", "/packcore help"); + source.sendFeedback(Text.literal("")); source.sendFeedback(Text.literal("Quick Commands:").formatted(Formatting.YELLOW)); - source.sendFeedback(Text.literal(" • ").formatted(Formatting.GRAY) - .append(Text.literal("/packcore wizard").formatted(Formatting.GREEN)) - .append(Text.literal(" - Open setup wizard").formatted(Formatting.GRAY))); - source.sendFeedback(Text.literal(" • ").formatted(Formatting.GRAY) - .append(Text.literal("/packcore menu toggle").formatted(Formatting.GREEN)) - .append(Text.literal(" - Toggle custom menu").formatted(Formatting.GRAY))); - source.sendFeedback(Text.literal(" • ").formatted(Formatting.GRAY) - .append(Text.literal("/packcore configmanager").formatted(Formatting.GREEN)) - .append(Text.literal(" - Open config manager").formatted(Formatting.GRAY))); + + sendCopyCommand(source, "§7 • §a/packcore wizard §7- Open setup wizard", "/packcore wizard"); + sendCopyCommand(source, "§7 • §a/packcore menu toggle §7- Toggle custom menu", "/packcore menu toggle"); + sendCopyCommand(source, "§7 • §a/packcore configmanager §7- Open config manager", "/packcore configmanager"); + return 1; } diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PerformanceCommand.java b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PerformanceCommand.java index f1e916c..0bfbd18 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PerformanceCommand.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/PerformanceCommand.java @@ -12,13 +12,25 @@ import java.util.concurrent.CompletableFuture; +import static com.github.kd_gaming1.packcore.command.CommandHelper.sendCopyCommand; + public class PerformanceCommand { public static LiteralArgumentBuilder register() { return ClientCommandManager.literal("performance") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available types: list, apply") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.literal("list") .executes(PerformanceCommand::listPerformanceProfiles)) .then(ClientCommandManager.literal("apply") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available performance options: performance, balanced, quality, shaders") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.argument("profile", StringArgumentType.word()) .suggests((context, builder) -> { builder.suggest("performance"); @@ -107,35 +119,46 @@ private static int applyPerformanceProfile(CommandContext context) { + var source = context.getSource(); var availability = PerformanceProfileService.getSystemAvailability(); - context.getSource().sendFeedback(Text.literal("=== PackCore Performance Profiles ===") + source.sendFeedback(Text.literal("=== PackCore Performance Profiles ===") .formatted(Formatting.GOLD)); - // Show available systems - context.getSource().sendFeedback(Text.literal("Available Systems:") + // Available systems + source.sendFeedback(Text.literal("Available Systems:") .formatted(Formatting.YELLOW)); - context.getSource().sendFeedback(Text.literal(" • Minecraft: ✓") + source.sendFeedback(Text.literal(" • Minecraft: ✓") .formatted(Formatting.GREEN)); - context.getSource().sendFeedback(Text.literal(" • Sodium: " + (availability.sodiumAvailable() ? "✓" : "✗")) + source.sendFeedback(Text.literal(" • Sodium: " + (availability.sodiumAvailable() ? "✓" : "✗")) .formatted(availability.sodiumAvailable() ? Formatting.GREEN : Formatting.RED)); - context.getSource().sendFeedback(Text.literal(" • Iris/Shaders: " + (availability.irisAvailable() ? "✓" : "✗")) + source.sendFeedback(Text.literal(" • Iris/Shaders: " + (availability.irisAvailable() ? "✓" : "✗")) .formatted(availability.irisAvailable() ? Formatting.GREEN : Formatting.RED)); - context.getSource().sendFeedback(Text.literal("")); + source.sendFeedback(Text.literal("")); - // Show available profiles - context.getSource().sendFeedback(Text.literal("Available Profiles:") + // Profiles + source.sendFeedback(Text.literal("Available Profiles:") .formatted(Formatting.YELLOW)); - for (PerformanceProfileService.PerformanceProfile profile : PerformanceProfileService.PerformanceProfile.values()) { + for (PerformanceProfileService.PerformanceProfile profile + : PerformanceProfileService.PerformanceProfile.values()) { + String command = "/packcore performance apply " + profile.name().toLowerCase(); - context.getSource().sendFeedback(Text.literal(" • " + profile.getDisplayName() + " - " + profile.getDescription()) - .formatted(Formatting.WHITE)); - context.getSource().sendFeedback(Text.literal(" Command: " + command) + + source.sendFeedback(Text.literal(" • " + profile.getDisplayName()) + .formatted(Formatting.WHITE, Formatting.BOLD)); + source.sendFeedback(Text.literal(" " + profile.getDescription()) .formatted(Formatting.GRAY)); + + sendCopyCommand( + source, + " §a" + command + " §7- Apply this profile", + command + ); } return 1; } + } diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/TabDesignCommand.java b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/TabDesignCommand.java index d19757a..b1a987c 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/packcore/TabDesignCommand.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/packcore/TabDesignCommand.java @@ -12,13 +12,25 @@ import java.util.concurrent.CompletableFuture; +import static com.github.kd_gaming1.packcore.command.CommandHelper.sendCopyCommand; + public class TabDesignCommand { public static LiteralArgumentBuilder register() { return ClientCommandManager.literal("tabdesign") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available types: list, apply") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.literal("list") .executes(TabDesignCommand::listTabDesigns)) .then(ClientCommandManager.literal("apply") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available designs: skyhanni, skyblocker") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.argument("design", StringArgumentType.word()) .suggests((context, builder) -> { builder.suggest("skyhanni"); diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldHelpCommand.java b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldHelpCommand.java index 1b0d197..dde0205 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldHelpCommand.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldHelpCommand.java @@ -5,6 +5,9 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +import static com.github.kd_gaming1.packcore.command.CommandHelper.sendCopyCommand; /** * Displays help information for ScamShield commands. @@ -18,42 +21,49 @@ public static LiteralArgumentBuilder register() { public static int execute(CommandContext context) { var source = context.getSource(); - source.sendFeedback(Text.literal("§7━━━━━━━━━━━━━━━━━━━━━━━━━━━━")); - source.sendFeedback(Text.literal("§e§lScamShield Commands")); - source.sendFeedback(Text.literal("§7━━━━━━━━━━━━━━━━━━━━━━━━━━━━")); + source.sendFeedback(Text.literal("━━━━━━━━━━━━━━━━━━━━━━━━━━━━").formatted(Formatting.GRAY)); + source.sendFeedback(Text.literal("ScamShield Commands").formatted(Formatting.YELLOW, Formatting.BOLD)); + source.sendFeedback(Text.literal("━━━━━━━━━━━━━━━━━━━━━━━━━━━━").formatted(Formatting.GRAY)); source.sendFeedback(Text.literal("")); - source.sendFeedback(Text.literal("§6System Control:")); - source.sendFeedback(Text.literal(" §e/scamshield toggle §7- Enable/disable ScamShield")); - source.sendFeedback(Text.literal(" §e/scamshield reload §7- Reload pattern files")); + // System Control + source.sendFeedback(Text.literal("System Control:").formatted(Formatting.GOLD, Formatting.BOLD)); + sendCopyCommand(source, "§e/scamshield toggle §7- Enable/disable ScamShield", "/scamshield toggle"); + sendCopyCommand(source, "§e/scamshield reload §7- Reload pattern files", "/scamshield reload"); source.sendFeedback(Text.literal("")); - source.sendFeedback(Text.literal("§6Statistics:")); - source.sendFeedback(Text.literal(" §e/scamshield stats §7- View detection statistics")); - source.sendFeedback(Text.literal(" §e/scamshield clear §7- Clear detection history")); + // Statistics + source.sendFeedback(Text.literal("Statistics:").formatted(Formatting.GOLD, Formatting.BOLD)); + sendCopyCommand(source, "§e/scamshield stats §7- View detection statistics", "/scamshield stats"); + sendCopyCommand(source, "§e/scamshield clear §7- Clear detection history", "/scamshield clear"); source.sendFeedback(Text.literal("")); - source.sendFeedback(Text.literal("§6Testing:")); - source.sendFeedback(Text.literal(" §e/scamshield test §7- Test a message")); - source.sendFeedback(Text.literal(" §e/scamshield debug §7- Run full debug test suite")); + // Testing + source.sendFeedback(Text.literal("Testing:").formatted(Formatting.GOLD, Formatting.BOLD)); + sendCopyCommand(source, "§e/scamshield test §7- Test a message", "/scamshield test "); + sendCopyCommand(source, "§e/scamshield debug §7- Run full debug test suite", "/scamshield debug"); source.sendFeedback(Text.literal("")); - source.sendFeedback(Text.literal("§6Whitelist:")); - source.sendFeedback(Text.literal(" §e/scamshield whitelist add §7- Add player")); - source.sendFeedback(Text.literal(" §e/scamshield whitelist remove §7- Remove player")); - source.sendFeedback(Text.literal(" §e/scamshield whitelist list §7- List all whitelisted")); - source.sendFeedback(Text.literal(" §e/scamshield whitelist clear §7- Clear whitelist")); + // Whitelist + source.sendFeedback(Text.literal("Whitelist:").formatted(Formatting.GOLD, Formatting.BOLD)); + sendCopyCommand(source, "§e/scamshield whitelist add §7- Add player", "/scamshield whitelist add "); + sendCopyCommand(source, "§e/scamshield whitelist remove §7- Remove player", "/scamshield whitelist remove "); + sendCopyCommand(source, "§e/scamshield whitelist list §7- List all whitelisted", "/scamshield whitelist list"); + sendCopyCommand(source, "§e/scamshield whitelist clear §7- Clear whitelist", "/scamshield whitelist clear"); source.sendFeedback(Text.literal("")); - source.sendFeedback(Text.literal("§6Preview & Education:")); - source.sendFeedback(Text.literal(" §e/scamshield preview §7- Preview warnings")); - source.sendFeedback(Text.literal(" §e/scamshield previewscreen §7- Preview warning screen")); - source.sendFeedback(Text.literal(" §e/scamshield education §7- Open education screen")); + // Preview & Education + source.sendFeedback(Text.literal("Preview & Education:").formatted(Formatting.GOLD, Formatting.BOLD)); + sendCopyCommand(source, "§e/scamshield preview §7- Preview warnings", "/scamshield preview "); + sendCopyCommand(source, "§e/scamshield preview screen §7- Preview warning screen", "/scamshield previewscreen"); + sendCopyCommand(source, "§e/scamshield education §7- Open education screen", "/scamshield education"); source.sendFeedback(Text.literal("")); - source.sendFeedback(Text.literal("§7━━━━━━━━━━━━━━━━━━━━━━━━━━━━")); - source.sendFeedback(Text.literal("§7For more info: §fhttps://github.com/kd-gaming1/PackCore")); + source.sendFeedback(Text.literal("━━━━━━━━━━━━━━━━━━━━━━━━━━━━").formatted(Formatting.GRAY)); + source.sendFeedback(Text.literal("Tip: Click any command to copy it!") + .formatted(Formatting.GRAY, Formatting.ITALIC)); return 1; } + } \ No newline at end of file diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldPreviewCommands.java b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldPreviewCommands.java index 067109b..56f502a 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldPreviewCommands.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldPreviewCommands.java @@ -14,6 +14,7 @@ import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; /** * Commands for previewing ScamShield warnings and screens. @@ -22,6 +23,12 @@ public class ScamShieldPreviewCommands { public static LiteralArgumentBuilder register() { return ClientCommandManager.literal("preview") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available severity: high, medium, low, screen") + .formatted(Formatting.YELLOW)); + return 0; + }) + .then(registerLowPreview()) .then(registerMediumPreview()) .then(registerHighPreview()) @@ -32,6 +39,11 @@ public static LiteralArgumentBuilder register() { private static LiteralArgumentBuilder registerLowPreview() { return ClientCommandManager.literal("low") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available types: coop, giveaway, phishing, trade, generic") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.literal("phishing") .executes(ctx -> previewWarning(ctx, ConfidenceLevel.LOW, ScamCategory.PHISHING)) ) @@ -48,6 +60,11 @@ private static LiteralArgumentBuilder registerLowPrev private static LiteralArgumentBuilder registerMediumPreview() { return ClientCommandManager.literal("medium") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available types: coop, giveaway, phishing, trade, generic") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.literal("phishing") .executes(ctx -> previewWarning(ctx, ConfidenceLevel.MEDIUM, ScamCategory.PHISHING)) ) @@ -67,6 +84,11 @@ private static LiteralArgumentBuilder registerMediumP private static LiteralArgumentBuilder registerHighPreview() { return ClientCommandManager.literal("high") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available types: coop, giveaway, phishing, trade, generic") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.literal("phishing") .executes(ctx -> previewWarning(ctx, ConfidenceLevel.HIGH, ScamCategory.PHISHING)) ) diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldTestCommands.java b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldTestCommands.java index e4d63cb..e2ac3c7 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldTestCommands.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldTestCommands.java @@ -9,6 +9,7 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; /** * Commands for testing ScamShield detection capabilities. @@ -17,6 +18,11 @@ public class ScamShieldTestCommands { public static LiteralArgumentBuilder registerTest() { return ClientCommandManager.literal("test") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("/scamshield test ") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.argument("message", StringArgumentType.greedyString()) .executes(ScamShieldTestCommands::testMessage) ); diff --git a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldWhitelistCommands.java b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldWhitelistCommands.java index e93a525..4488787 100644 --- a/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldWhitelistCommands.java +++ b/src/main/java/com/github/kd_gaming1/packcore/command/scamshield/ScamShieldWhitelistCommands.java @@ -7,6 +7,7 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; /** * Commands for managing the ScamShield whitelist. @@ -15,12 +16,27 @@ public class ScamShieldWhitelistCommands { public static LiteralArgumentBuilder register() { return ClientCommandManager.literal("whitelist") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("Available options: add, remove, list, clear") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.literal("add") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("/scamshield whitelist add ") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.argument("player", StringArgumentType.word()) .executes(ScamShieldWhitelistCommands::whitelistAdd) ) ) .then(ClientCommandManager.literal("remove") + .executes(context -> { + context.getSource().sendFeedback(Text.literal("/scamshield whitelist remove ") + .formatted(Formatting.YELLOW)); + return 0; + }) .then(ClientCommandManager.argument("player", StringArgumentType.word()) .executes(ScamShieldWhitelistCommands::whitelistRemove) ) From a25f36adfa49363c8b3d017ded3693fe351a4da9 Mon Sep 17 00:00:00 2001 From: ThatOneDevil <62218606+ThatOneDevil@users.noreply.github.com> Date: Wed, 17 Dec 2025 13:03:44 +0000 Subject: [PATCH 7/7] Bumped version and added changelog --- CHANGELOG.md | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b9a07a..a73d327 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1 @@ -- fix: backup manager restores specific files, letting you select specific sup files inside the config folder. \ No newline at end of file +- fix: Added default message to /scamshield and /packcore command. \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 79f6505..1e5a51b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.configuration-cache=false # Mod properties mod.name=PackCore mod.id=packcore -mod.version=3.2.3 +mod.version=3.2.4 mod.group=com.github.kd_gaming1 # Global dependencies