1
0
Fork 0
mirror of https://github.com/xHyroM/lighteco.git synced 2024-11-22 15:01:05 +01:00

feat: balance, balance other cmds in common & double, integer arg

This commit is contained in:
Jozef Steinhübl 2024-01-23 19:08:04 +01:00
parent 723fd6abd4
commit 35dc14a261
No known key found for this signature in database
GPG key ID: E944BC293F5FF7E7
8 changed files with 184 additions and 9 deletions

View file

@ -1,6 +1,9 @@
package dev.xhyrom.lighteco.common.command.abstraction; package dev.xhyrom.lighteco.common.command.abstraction;
import dev.xhyrom.lighteco.common.command.argument.Argument; import dev.xhyrom.lighteco.common.command.argument.Argument;
import dev.xhyrom.lighteco.common.command.argument.Arguments;
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
import lombok.Getter; import lombok.Getter;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -25,4 +28,6 @@ public abstract class Command {
this.permission = permission; this.permission = permission;
this.args = List.of(args); this.args = List.of(args);
} }
public abstract void execute(LightEcoPlugin plugin, CommandSender sender, Arguments args);
} }

View file

@ -6,15 +6,13 @@ import lombok.Getter;
public abstract class Argument<T> { public abstract class Argument<T> {
@Getter @Getter
private final String name; private final String name;
protected final LightEcoPlugin plugin;
protected Argument(LightEcoPlugin plugin, String name) { protected Argument(String name) {
this.plugin = plugin;
this.name = name; this.name = name;
} }
public abstract Class<T> getPrimitiveType(); public abstract Class<T> getPrimitiveType();
public abstract ArgumentType getArgumentType(); public abstract ArgumentType getArgumentType();
public abstract T parse(String input); public abstract T parse(LightEcoPlugin plugin, String input);
} }

View file

@ -0,0 +1,25 @@
package dev.xhyrom.lighteco.common.command.argument;
import dev.xhyrom.lighteco.common.model.user.User;
import java.util.Map;
public class Arguments {
private final Map<String, ?> arguments;
public Arguments(Map<String, ?> arguments) {
this.arguments = arguments;
}
public User offlineUser(String name) {
return (User) this.arguments.get(name);
}
public int integer(String name) {
return (int) this.arguments.get(name);
}
public double dbl(String name) {
return (double) this.arguments.get(name);
}
}

View file

@ -0,0 +1,26 @@
package dev.xhyrom.lighteco.common.command.argument.type;
import dev.xhyrom.lighteco.common.command.argument.Argument;
import dev.xhyrom.lighteco.common.command.argument.ArgumentType;
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
public class DoubleArgument extends Argument<Double> {
protected DoubleArgument(String name) {
super(name);
}
@Override
public Class<Double> getPrimitiveType() {
return Double.class;
}
@Override
public ArgumentType getArgumentType() {
return ArgumentType.DOUBLE;
}
@Override
public Double parse(LightEcoPlugin plugin, String input) {
return Double.parseDouble(input);
}
}

View file

@ -0,0 +1,26 @@
package dev.xhyrom.lighteco.common.command.argument.type;
import dev.xhyrom.lighteco.common.command.argument.Argument;
import dev.xhyrom.lighteco.common.command.argument.ArgumentType;
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
public class IntegerArgument extends Argument<Integer> {
protected IntegerArgument(String name) {
super(name);
}
@Override
public Class<Integer> getPrimitiveType() {
return Integer.class;
}
@Override
public ArgumentType getArgumentType() {
return ArgumentType.INTEGER;
}
@Override
public Integer parse(LightEcoPlugin plugin, String input) {
return Integer.parseInt(input);
}
}

View file

@ -8,8 +8,8 @@ import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
import java.util.UUID; import java.util.UUID;
public class OfflineUserArgument extends Argument<User> { public class OfflineUserArgument extends Argument<User> {
public OfflineUserArgument(LightEcoPlugin plugin, String name) { public OfflineUserArgument(String name) {
super(plugin, name); super(name);
} }
@Override @Override
@ -23,12 +23,12 @@ public class OfflineUserArgument extends Argument<User> {
} }
@Override @Override
public User parse(String input) { public User parse(LightEcoPlugin plugin, String input) {
UUID uniqueId = this.plugin.getBootstrap().lookupUniqueId(input).orElse(null); UUID uniqueId = plugin.getBootstrap().lookupUniqueId(input).orElse(null);
if (uniqueId == null) { if (uniqueId == null) {
return null; return null;
} }
return this.plugin.getUserManager().loadUser(uniqueId).join(); return plugin.getUserManager().loadUser(uniqueId).join();
} }
} }

View file

@ -0,0 +1,56 @@
package dev.xhyrom.lighteco.common.commands;
import dev.xhyrom.lighteco.common.command.abstraction.Command;
import dev.xhyrom.lighteco.common.command.argument.Argument;
import dev.xhyrom.lighteco.common.command.argument.Arguments;
import dev.xhyrom.lighteco.common.config.message.CurrencyMessageConfig;
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
import dev.xhyrom.lighteco.common.model.currency.Currency;
import dev.xhyrom.lighteco.common.model.user.User;
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.math.BigDecimal;
import java.util.Map;
public class BalanceCommand extends Command {
private final Currency currency;
public BalanceCommand(@Nullable String permission, @NonNull Currency currency) {
this(permission, currency, new Argument<?>[0]);
}
public BalanceCommand(@Nullable String permission, @NonNull Currency currency, @NonNull Argument<?>... args) {
super("balance", permission + ".balance", args);
this.currency = currency;
}
@Override
public void execute(LightEcoPlugin plugin, CommandSender sender, Arguments args) {
User user = plugin.getUserManager().getIfLoaded(sender.getUniqueId());
BigDecimal balance = user.getBalance(currency);
sender.sendMessage(
MiniMessage.miniMessage().deserialize(
getConfig(plugin, currency).balance,
Placeholder.parsed("currency", currency.getIdentifier()),
Placeholder.parsed("balance", balance.toPlainString())
)
);
}
protected CurrencyMessageConfig getConfig(LightEcoPlugin plugin, Currency currency) {
Map<String, CurrencyMessageConfig> config = plugin.getConfig().messages.currency;
CurrencyMessageConfig currencyMessageConfig = config.get(currency.getIdentifier());
if (currencyMessageConfig == null) {
return config.get("default");
}
return currencyMessageConfig;
}
}

View file

@ -0,0 +1,39 @@
package dev.xhyrom.lighteco.common.commands;
import dev.xhyrom.lighteco.common.command.argument.Arguments;
import dev.xhyrom.lighteco.common.command.argument.type.OfflineUserArgument;
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
import dev.xhyrom.lighteco.common.model.currency.Currency;
import dev.xhyrom.lighteco.common.model.user.User;
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.math.BigDecimal;
public class BalanceOtherCommand extends BalanceCommand {
private final Currency currency;
public BalanceOtherCommand(@Nullable String permission, @NonNull Currency currency) {
super(permission + ".balance.others", currency, new OfflineUserArgument("target"));
this.currency = currency;
}
@Override
public void execute(LightEcoPlugin plugin, CommandSender sender, Arguments args) {
User target = args.offlineUser("target");
BigDecimal balance = target.getBalance(currency);
sender.sendMessage(
MiniMessage.miniMessage().deserialize(
getConfig(plugin, currency).balanceOthers,
Placeholder.parsed("currency", currency.getIdentifier()),
Placeholder.parsed("target", target.getUsername()),
Placeholder.parsed("balance", balance.toPlainString())
)
);
}
}