Skip to content

Commit

Permalink
Merge pull request #54 from TFSMads/feature/casinotools
Browse files Browse the repository at this point in the history
Tilføj CasinoTools Module
  • Loading branch information
TFSMads authored Aug 10, 2024
2 parents f1dd45c + 251ab6e commit b48d236
Show file tree
Hide file tree
Showing 5 changed files with 180 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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<Boolean>((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<Float>(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!")))
));
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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") + "!");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Double> changeListener;

public SetMultiCommand(Consumer<Double> 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 <multi>", 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;
}
}
9 changes: 9 additions & 0 deletions core/src/main/java/ml/volder/unikapi/loader/Laby4Loader.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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<TransporterAddonConfig> configurationClass() {
return TransporterAddonConfig.class;
Expand Down
6 changes: 6 additions & 0 deletions core/src/main/resources/assets/sa-transporter/i18n/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -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 <multiplier> kan også bruges til at sætte en multiplier for tilbagebetalingen.",
"payBackMulti.name": "Tilbagebetalings Multiplier"
}
}
}
Expand Down

0 comments on commit b48d236

Please sign in to comment.