Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tilføj CasinoTools Module #54

Merged
merged 1 commit into from
Aug 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading