From f4177d45a792c83cd6fd8fc14d80c9a16b67c3fd Mon Sep 17 00:00:00 2001 From: hackthetime Date: Tue, 31 Oct 2023 14:16:09 +0100 Subject: worked on 1.8.9 MoulConfig → visual config screen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forge/CommandImplementations/CommandBBI.java | 90 ++++++++++++++++++++++ .../CommandImplementations/CommandOpenConfig.java | 29 +++++++ .../java/de/hype/bbsentials/forge/Commands.java | 3 +- .../java/de/hype/bbsentials/forge/ExampleMod.java | 3 +- .../hype/bbsentials/forge/client/CommandBBI.java | 90 ---------------------- .../hype/bbsentials/forge/client/MoulConfig.java | 49 ++++++++++++ 6 files changed, 172 insertions(+), 92 deletions(-) create mode 100644 forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBI.java create mode 100644 forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandOpenConfig.java delete mode 100644 forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java create mode 100644 forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java (limited to 'forge') diff --git a/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBI.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBI.java new file mode 100644 index 0000000..99a2a67 --- /dev/null +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandBBI.java @@ -0,0 +1,90 @@ +package de.hype.bbsentials.forge.CommandImplementations; + +import de.hype.bbsentials.common.client.BBsentials; +import de.hype.bbsentials.common.client.Config; +import net.minecraft.client.Minecraft; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +import static de.hype.bbsentials.common.client.BBsentials.connectToBBserver; +import static de.hype.bbsentials.common.client.BBsentials.getConfig; + + + +public class CommandBBI extends CommandBase { + + @Override + public String getCommandName() { + return "bbi"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/bbi "; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + if (args.length == 0) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi ")); + return; + } + + String subCommand = args[0]; + switch (subCommand) { + case "reconnect": + connectToBBserver(); + break; + + case "config": + if (args.length < 2) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi config ")); + return; + } + + String category = args[1]; + switch (category) { + case "save": + getConfig().save(); + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Saved config successfully")); + break; + + case "load": + BBsentials.config = Config.load(); + break; + + default: + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Unknown category: " + category)); + break; + } + break; + + case "set-key": + if (args.length < 4) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi set-key set-server ")); + return; + } + + String key = args[1]; + if (args[2].equalsIgnoreCase("set-server")) { + String value = args[3]; + // Handle setting the key and value logic here for server + } + else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi set-key set-server ")); + } + break; + + default: + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Unknown command: " + subCommand)); + break; + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } +} diff --git a/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandOpenConfig.java b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandOpenConfig.java new file mode 100644 index 0000000..acdc683 --- /dev/null +++ b/forge/src/main/java/de/hype/bbsentials/forge/CommandImplementations/CommandOpenConfig.java @@ -0,0 +1,29 @@ +package de.hype.bbsentials.forge.CommandImplementations; + +import de.hype.bbsentials.forge.ExampleMod; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; + + +public class CommandOpenConfig extends CommandBase { + + @Override + public String getCommandName() { + return "bbconfig"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/bbconfig"; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + ExampleMod.config.openConfigGui(); + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } +} diff --git a/forge/src/main/java/de/hype/bbsentials/forge/Commands.java b/forge/src/main/java/de/hype/bbsentials/forge/Commands.java index 187823b..34ebb1d 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/Commands.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/Commands.java @@ -6,7 +6,7 @@ import de.hype.bbsentials.common.mclibraries.MCCommand; import de.hype.bbsentials.common.packets.AbstractPacket; import de.hype.bbsentials.common.packets.packets.SplashNotifyPacket; import de.hype.bbsentials.forge.CommandImplementations.*; -import de.hype.bbsentials.forge.client.CommandBBI; +import de.hype.bbsentials.forge.CommandImplementations.CommandBBI; import net.minecraftforge.client.ClientCommandHandler; public class Commands implements MCCommand { @@ -24,6 +24,7 @@ public class Commands implements MCCommand { ClientCommandHandler.instance.registerCommand(new CommandChChest()); ClientCommandHandler.instance.registerCommand(new CommandBC()); ClientCommandHandler.instance.registerCommand(new CommandBingoChat()); + ClientCommandHandler.instance.registerCommand(new CommandOpenConfig()); } public void registerRoleRequired(boolean hasDev, boolean hasAdmin, boolean hasMod, boolean hasSplasher, boolean hasBeta, boolean hasMiningEvents, boolean hasChChest) { diff --git a/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java b/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java index ca01526..4e60e69 100644 --- a/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java +++ b/forge/src/main/java/de/hype/bbsentials/forge/ExampleMod.java @@ -2,6 +2,7 @@ package de.hype.bbsentials.forge; import de.hype.bbsentials.common.client.BBsentials; import de.hype.bbsentials.common.mclibraries.EnvironmentCore; +import de.hype.bbsentials.forge.client.MoulConfig; import io.github.moulberry.moulconfig.gui.MoulConfigEditor; import io.github.moulberry.moulconfig.processor.MoulConfigProcessor; import net.minecraftforge.common.MinecraftForge; @@ -14,11 +15,11 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class ExampleMod { static boolean alreadyInialised = false; static BBsentials sentials = new BBsentials(); + public static MoulConfig config = new MoulConfig(); @Mod.EventHandler public void init(FMLInitializationEvent event) { printLocation(); - EnvironmentCore core = new EnvironmentCore(new BBUtils(), new ForgeChat(), new MCUtils(), new Commands(), new Options(), new DebugThread()); MinecraftForge.EVENT_BUS.register(this); } diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java b/forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java deleted file mode 100644 index 208caa3..0000000 --- a/forge/src/main/java/de/hype/bbsentials/forge/client/CommandBBI.java +++ /dev/null @@ -1,90 +0,0 @@ -package de.hype.bbsentials.forge.client; - -import de.hype.bbsentials.common.client.BBsentials; -import de.hype.bbsentials.common.client.Config; -import net.minecraft.client.Minecraft; -import net.minecraft.command.CommandBase; -import net.minecraft.command.ICommandSender; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.EnumChatFormatting; - -import static de.hype.bbsentials.common.client.BBsentials.connectToBBserver; -import static de.hype.bbsentials.common.client.BBsentials.getConfig; - - - -public class CommandBBI extends CommandBase { - - @Override - public String getCommandName() { - return "bbi"; - } - - @Override - public String getCommandUsage(ICommandSender sender) { - return "/bbi "; - } - - @Override - public void processCommand(ICommandSender sender, String[] args) { - if (args.length == 0) { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi ")); - return; - } - - String subCommand = args[0]; - switch (subCommand) { - case "reconnect": - connectToBBserver(); - break; - - case "config": - if (args.length < 2) { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi config ")); - return; - } - - String category = args[1]; - switch (category) { - case "save": - getConfig().save(); - Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Saved config successfully")); - break; - - case "load": - BBsentials.config = Config.load(); - break; - - default: - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Unknown category: " + category)); - break; - } - break; - - case "set-key": - if (args.length < 4) { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi set-key set-server ")); - return; - } - - String key = args[1]; - if (args[2].equalsIgnoreCase("set-server")) { - String value = args[3]; - // Handle setting the key and value logic here for server - } - else { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /bbi set-key set-server ")); - } - break; - - default: - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Unknown command: " + subCommand)); - break; - } - } - - @Override - public boolean canCommandSenderUseCommand(ICommandSender sender) { - return true; - } -} diff --git a/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java b/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java new file mode 100644 index 0000000..24bca8a --- /dev/null +++ b/forge/src/main/java/de/hype/bbsentials/forge/client/MoulConfig.java @@ -0,0 +1,49 @@ +package de.hype.bbsentials.forge.client; + +import com.google.gson.annotations.Expose; +import io.github.moulberry.moulconfig.Config; +import io.github.moulberry.moulconfig.annotations.Category; +import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown; +import io.github.moulberry.moulconfig.annotations.ConfigOption; +import io.github.moulberry.moulconfig.gui.GuiScreenElementWrapper; +import io.github.moulberry.moulconfig.gui.MoulConfigEditor; +import io.github.moulberry.moulconfig.processor.BuiltinMoulConfigGuis; +import io.github.moulberry.moulconfig.processor.ConfigProcessorDriver; +import io.github.moulberry.moulconfig.processor.MoulConfigProcessor; +import net.minecraft.client.Minecraft; + +import static de.hype.bbsentials.common.client.BBsentials.config; + + +public class MoulConfig extends Config { + @Expose + @ConfigOption(name = "test", desc = "dropdown test") + @ConfigEditorDropdown(values = {"hi", "test"}) + public String test; + MoulConfigEditor editor; + MoulConfigProcessor processor; + @Expose + @Category(name = "First Category", desc = "This is the first category.") + MoulConfig main = this; + + public MoulConfig() { + processor = new MoulConfigProcessor<>(this); + editor = new MoulConfigEditor<>(processor); + BuiltinMoulConfigGuis.addProcessors(processor); + ConfigProcessorDriver.processConfig(MoulConfig.class, this, processor); + } + + @Override + public String getTitle() { + return "BBsentials " + de.hype.bbsentials.common.client.Config.apiVersion; + } + + @Override + public void saveNow() { + config.save(); + } + + public void openConfigGui() { + Minecraft.getMinecraft().displayGuiScreen(new GuiScreenElementWrapper(editor)); + } +} -- cgit