From 251ab6e330ba294102b4129fb973918fdbfbf7d0 Mon Sep 17 00:00:00 2001 From: _Mads Date: Sat, 10 Aug 2024 13:57:38 +0200 Subject: [PATCH] =?UTF-8?q?Tilf=C3=B8j=20casinotools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/CasinoToolsModule.java | 123 ++++++++++++++++++ .../transporter/modules/ModuleManager.java | 1 + .../modules/casinotools/SetMultiCommand.java | 41 ++++++ .../ml/volder/unikapi/loader/Laby4Loader.java | 9 ++ .../assets/sa-transporter/i18n/en_us.json | 6 + 5 files changed, 180 insertions(+) create mode 100644 core/src/main/java/ml/volder/transporter/modules/CasinoToolsModule.java create mode 100644 core/src/main/java/ml/volder/transporter/modules/casinotools/SetMultiCommand.java diff --git a/core/src/main/java/ml/volder/transporter/modules/CasinoToolsModule.java b/core/src/main/java/ml/volder/transporter/modules/CasinoToolsModule.java new file mode 100644 index 0000000..002f200 --- /dev/null +++ b/core/src/main/java/ml/volder/transporter/modules/CasinoToolsModule.java @@ -0,0 +1,123 @@ +package ml.volder.transporter.modules; + +import ml.volder.transporter.TransporterAddon; +import ml.volder.transporter.events.ItemAmountUpdatedEvent; +import ml.volder.transporter.modules.casinotools.SetMultiCommand; +import ml.volder.transporter.settings.accesors.SettingRegistryAccessor; +import ml.volder.transporter.settings.action.TransporterAction; +import ml.volder.transporter.settings.classes.TransporterSettingElementFactory; +import ml.volder.transporter.settings.classes.TransporterWidgetFactory; +import ml.volder.unikapi.UnikAPI; +import ml.volder.unikapi.api.player.PlayerAPI; +import ml.volder.unikapi.event.EventHandler; +import ml.volder.unikapi.event.EventManager; +import ml.volder.unikapi.event.Listener; +import ml.volder.unikapi.guisystem.ModTextures; +import ml.volder.unikapi.guisystem.elements.Settings; +import ml.volder.unikapi.loader.Laby4Loader; +import net.labymod.api.Laby; +import net.labymod.api.client.component.Component; +import net.labymod.api.client.component.event.ClickEvent; +import net.labymod.api.client.component.event.HoverEvent; +import net.labymod.api.client.component.format.NamedTextColor; +import net.labymod.api.client.gui.icon.Icon; +import net.labymod.api.client.gui.screen.widget.widgets.input.SliderWidget; +import net.labymod.api.client.gui.screen.widget.widgets.input.SwitchWidget; +import net.labymod.api.configuration.settings.type.SettingHeader; +import net.labymod.api.event.Subscribe; +import net.labymod.api.event.client.chat.ChatReceiveEvent; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CasinoToolsModule extends SimpleModule { + + private SliderWidget payBackMultiSlider; + private boolean appendPayback = true; + private float payBackMulti = 2; + + public CasinoToolsModule(ModuleManager.ModuleInfo moduleInfo) { + super(moduleInfo); + } + + @Override + public SimpleModule init() { + return this; + } + + @Override + public SimpleModule enable() { + Laby4Loader.registerCommands(new SetMultiCommand((multi) -> payBackMultiSlider.setValue(multi,true))); + Laby.references().eventBus().registerListener(this); + return this; + } + + @Override + public void fillSettings(SettingRegistryAccessor subSettings) { + subSettings.add(TransporterSettingElementFactory.Builder.begin() + .addWidget(TransporterWidgetFactory.createWidget( + SwitchWidget.class, + new TransporterAction((b) -> this.appendPayback = b), + getDataManager(), + "appendPayback", + true)) + .id("appendPayback") + .icon(Icon.sprite16(ModTextures.SETTINGS_ICONS_1, 4, 3)) + .build() + ); + + subSettings.add(new SettingHeader( + "header", + true, + "", + "header" + )); + + + payBackMultiSlider = TransporterWidgetFactory.createWidget( + SliderWidget.class, + new TransporterAction(v -> payBackMulti = v), + getDataManager(), + "payBackMulti", + 2F).range(0F, 10).steps(0.1F); + + subSettings.add(TransporterSettingElementFactory.Builder.begin() + .addWidget(payBackMultiSlider) + .id("payBackMulti") + .icon(Icon.sprite16(ModTextures.SETTINGS_ICONS_1, 7, 1)) + .build() + ); + } + + @Subscribe + public void onMessage(ChatReceiveEvent event) { + if(!appendPayback) + return; + + final Pattern pattern = Pattern.compile("^\\[Money] ([0-9A-Za-z_]+) has sent you ([0-9.]+) Emerald\\.$"); + final Matcher matcher = pattern.matcher(event.chatMessage().getPlainText()); + if (matcher.find()) { + double amount; + try { + amount = Double.parseDouble(matcher.group(2).replace(".", "")); + } catch (NumberFormatException exception) { + return; + } + int payBackAmount = (int) Math.round(payBackMulti*amount); + String command = "/pay " + matcher.group(1) + " " + payBackAmount; + event.chatMessage().edit( + event.chatMessage().component().append( + Component.text(" (" + payBackAmount + ")", NamedTextColor.GRAY) + .clickEvent(ClickEvent.suggestCommand(command)) + .hoverEvent(HoverEvent.showText(Component.text("Klik her for at sende!"))) + )); + } + } + +} diff --git a/core/src/main/java/ml/volder/transporter/modules/ModuleManager.java b/core/src/main/java/ml/volder/transporter/modules/ModuleManager.java index 1734716..cde8ac9 100644 --- a/core/src/main/java/ml/volder/transporter/modules/ModuleManager.java +++ b/core/src/main/java/ml/volder/transporter/modules/ModuleManager.java @@ -177,6 +177,7 @@ public void registerModules() { registerModule("signToolsModule", "Sign Tools", "En feature til at forbedre skilte så man kan kopiere og indsætte.", SignToolsModule.class); moduleInfo = registerModule("balanceTrackerModule", "Balance", "En feature der tracker hvor mange EMs du har.", BalanceModule.class); moduleInfo.dependsOnList.add(ServerModule.class); + registerModule("casinoToolsModule", "Casino Tools", "En feature med funktionalitet relateret til casino", CasinoToolsModule.class); //registerModule("transporterStatsModule", "Transporter Stats", "En feature der tracker diverse stats.", TransporterStatsModule.class); UnikAPI.LOGGER.finest("Registered " + registeredModules.size() + " modules successfully in " + LoadTimer.finishLoadingTask("registerModules") + "!"); } diff --git a/core/src/main/java/ml/volder/transporter/modules/casinotools/SetMultiCommand.java b/core/src/main/java/ml/volder/transporter/modules/casinotools/SetMultiCommand.java new file mode 100644 index 0000000..225d456 --- /dev/null +++ b/core/src/main/java/ml/volder/transporter/modules/casinotools/SetMultiCommand.java @@ -0,0 +1,41 @@ +package ml.volder.transporter.modules.casinotools; + +import net.labymod.api.client.chat.command.Command; +import net.labymod.api.client.component.Component; +import net.labymod.api.client.component.format.NamedTextColor; + +import java.util.function.Consumer; + +public class SetMultiCommand extends Command { + + private Consumer changeListener; + + public SetMultiCommand(Consumer changeListener) { + super("setmulti", "setmultiplier"); + this.changeListener = changeListener; + } + + @Override + public boolean execute(String prefix, String[] arguments) { + if(arguments.length < 1){ + this.displayMessage(Component.text("Korekt brug: /setmulti ", NamedTextColor.RED)); + return true; + } + double multi; + try { + multi = Double.parseDouble(arguments[0]); + } catch (NumberFormatException exception) { + this.displayMessage(Component.text("Multiplieren skal være et tal!", NamedTextColor.RED)); + return true; + } + if(multi < 0) { + this.displayMessage(Component.text("Multiplieren kan ikke være under 0!", NamedTextColor.RED)); + return true; + } + + changeListener.accept(multi); + this.displayMessage(Component.text("Multiplieren blev ændret til " + multi, NamedTextColor.GREEN)); + + return true; + } +} diff --git a/core/src/main/java/ml/volder/unikapi/loader/Laby4Loader.java b/core/src/main/java/ml/volder/unikapi/loader/Laby4Loader.java index 21dd080..efdff23 100644 --- a/core/src/main/java/ml/volder/unikapi/loader/Laby4Loader.java +++ b/core/src/main/java/ml/volder/unikapi/loader/Laby4Loader.java @@ -9,6 +9,7 @@ import ml.volder.unikapi.widgets.ModuleSystem; import net.labymod.api.Laby; import net.labymod.api.addon.LabyAddon; +import net.labymod.api.client.chat.command.Command; import net.labymod.api.models.addon.annotation.AddonMain; import net.labymod.api.reference.ReferenceStorageAccessor; @@ -41,6 +42,14 @@ protected void enable() { this.registerSettingCategory(); } + public static void registerCommands(Command... command) { + if(instance == null) + return; + for (Command cmd : command) { + instance.registerCommand(cmd); + } + } + @Override protected Class configurationClass() { return TransporterAddonConfig.class; diff --git a/core/src/main/resources/assets/sa-transporter/i18n/en_us.json b/core/src/main/resources/assets/sa-transporter/i18n/en_us.json index 91fbfe0..befb03d 100644 --- a/core/src/main/resources/assets/sa-transporter/i18n/en_us.json +++ b/core/src/main/resources/assets/sa-transporter/i18n/en_us.json @@ -115,6 +115,12 @@ "onlyActiveInLobby.name": "Kun aktiv i lobbyer!", "transporterMenuKeybind.name": "Åben menu", "withdrawAmount.name": "Antal items der skal trækkes ud" + }, + "casinoToolsModule": { + "name": "§fTransporter Addon §7- §fCasino Tools", + "appendPayback.name": "Tilføj send tilbage knap?", + "header.header.name": "/setmulti kan også bruges til at sætte en multiplier for tilbagebetalingen.", + "payBackMulti.name": "Tilbagebetalings Multiplier" } } }