mirror of
https://github.com/xHyroM/lighteco.git
synced 2024-12-22 20:41:05 +01:00
feat: command manager, better arguments abstraction
This commit is contained in:
parent
0108fde1d0
commit
7001c04915
24 changed files with 257 additions and 687 deletions
|
@ -1,59 +0,0 @@
|
|||
package dev.xhyrom.lighteco.bukkit.commands;
|
||||
|
||||
import dev.jorel.commandapi.CommandAPICommand;
|
||||
import dev.jorel.commandapi.arguments.OfflinePlayerArgument;
|
||||
import dev.jorel.commandapi.executors.CommandArguments;
|
||||
import dev.xhyrom.lighteco.bukkit.chat.BukkitCommandSender;
|
||||
import dev.xhyrom.lighteco.bukkit.manager.BukkitCommandManager;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class BalanceCommand implements Command {
|
||||
private final BukkitCommandManager manager;
|
||||
private final String name;
|
||||
private final Currency currency;
|
||||
private final String permissionBase;
|
||||
|
||||
@Override
|
||||
public CommandAPICommand[] multipleBuild() {
|
||||
return new CommandAPICommand[]{
|
||||
new CommandAPICommand(name)
|
||||
.withPermission(permissionBase + "balance.others")
|
||||
.withArguments(new OfflinePlayerArgument("target"))
|
||||
.executes((sender, args) -> {
|
||||
this.handleBalance(sender, args, currency);
|
||||
}),
|
||||
new CommandAPICommand(name)
|
||||
.withPermission(permissionBase + "balance")
|
||||
.executesPlayer((sender, args) -> {
|
||||
this.handleBalance(sender, args, currency);
|
||||
})
|
||||
};
|
||||
}
|
||||
|
||||
public void handleBalance(CommandSender originalSender, CommandArguments args, Currency currency) {
|
||||
BukkitCommandSender sender = new BukkitCommandSender(originalSender, this.manager.audienceFactory);
|
||||
OfflinePlayer target = (OfflinePlayer) args.get("target");
|
||||
|
||||
if (target == null) {
|
||||
this.manager.onBalance(sender, currency);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.manager.plugin.getUserManager().loadUser(target.getUniqueId())
|
||||
.thenAccept(result -> {
|
||||
String username = result.getUsername() == null ?
|
||||
target.getName() != null
|
||||
? target.getName()
|
||||
: args.getRaw("target")
|
||||
: result.getUsername();
|
||||
result.setUsername(username);
|
||||
|
||||
this.manager.onBalance(sender, currency, result);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
package dev.xhyrom.lighteco.bukkit.commands;
|
||||
|
||||
import dev.jorel.commandapi.CommandAPICommand;
|
||||
|
||||
public interface Command {
|
||||
default CommandAPICommand build() {
|
||||
return null;
|
||||
}
|
||||
|
||||
default CommandAPICommand[] multipleBuild() {
|
||||
return new CommandAPICommand[0];
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
package dev.xhyrom.lighteco.bukkit.commands;
|
||||
|
||||
import dev.jorel.commandapi.CommandAPICommand;
|
||||
import dev.jorel.commandapi.arguments.DoubleArgument;
|
||||
import dev.jorel.commandapi.arguments.IntegerArgument;
|
||||
import dev.jorel.commandapi.arguments.OfflinePlayerArgument;
|
||||
import dev.jorel.commandapi.executors.CommandArguments;
|
||||
import dev.xhyrom.lighteco.bukkit.chat.BukkitCommandSender;
|
||||
import dev.xhyrom.lighteco.bukkit.manager.BukkitCommandManager;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class GiveCommand implements Command {
|
||||
private final BukkitCommandManager manager;
|
||||
private final Currency currency;
|
||||
private final String permissionBase;
|
||||
|
||||
@Override
|
||||
public CommandAPICommand build() {
|
||||
return new CommandAPICommand("give")
|
||||
.withPermission(permissionBase + "give")
|
||||
.withArguments(
|
||||
new OfflinePlayerArgument("target"),
|
||||
currency.getProxy().fractionalDigits() > 0
|
||||
? new DoubleArgument("amount", 1)
|
||||
: new IntegerArgument("amount", 1)
|
||||
)
|
||||
.executes((sender, args) -> {
|
||||
this.handleGive(sender, args, currency);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void handleGive(CommandSender originalSender, CommandArguments args, Currency currency) {
|
||||
BukkitCommandSender sender = new BukkitCommandSender(originalSender, this.manager.audienceFactory);
|
||||
OfflinePlayer target = (OfflinePlayer) args.get("target");
|
||||
BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(args.getRaw("amount")));
|
||||
|
||||
if (!this.manager.canUse(sender, currency)) return;
|
||||
|
||||
this.manager.plugin.getUserManager().loadUser(target.getUniqueId())
|
||||
.thenAccept(result -> {
|
||||
String name = target.getName() != null ? target.getName() : args.getRaw("target");
|
||||
result.setUsername(name);
|
||||
|
||||
this.manager.onGive(sender, currency, result, amount);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
package dev.xhyrom.lighteco.bukkit.commands;
|
||||
|
||||
import dev.jorel.commandapi.CommandAPICommand;
|
||||
import dev.jorel.commandapi.arguments.DoubleArgument;
|
||||
import dev.jorel.commandapi.arguments.IntegerArgument;
|
||||
import dev.jorel.commandapi.arguments.OfflinePlayerArgument;
|
||||
import dev.jorel.commandapi.executors.CommandArguments;
|
||||
import dev.xhyrom.lighteco.bukkit.chat.BukkitCommandSender;
|
||||
import dev.xhyrom.lighteco.bukkit.manager.BukkitCommandManager;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class PayCommand implements Command {
|
||||
private final BukkitCommandManager manager;
|
||||
private final Currency currency;
|
||||
private final String permissionBase;
|
||||
|
||||
@Override
|
||||
public CommandAPICommand build() {
|
||||
return new CommandAPICommand("pay")
|
||||
.withPermission(permissionBase + "pay")
|
||||
.withArguments(
|
||||
new OfflinePlayerArgument("target"),
|
||||
currency.getProxy().fractionalDigits() > 0
|
||||
? new DoubleArgument("amount", 1)
|
||||
: new IntegerArgument("amount", 1)
|
||||
)
|
||||
.executesPlayer((sender, args) -> {
|
||||
this.handlePay(sender, args, currency);
|
||||
});
|
||||
}
|
||||
|
||||
private void handlePay(CommandSender originalSender, CommandArguments args, Currency currency) {
|
||||
BukkitCommandSender sender = new BukkitCommandSender(originalSender, this.manager.audienceFactory);
|
||||
OfflinePlayer target = (OfflinePlayer) args.get("target");
|
||||
BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(args.getRaw("amount")));
|
||||
|
||||
if (!this.manager.canUse(sender, currency)) return;
|
||||
|
||||
this.manager.plugin.getUserManager().loadUser(target.getUniqueId())
|
||||
.thenAccept(result -> {
|
||||
String username = result.getUsername() == null ?
|
||||
target.getName() != null
|
||||
? target.getName()
|
||||
: args.getRaw("target")
|
||||
: result.getUsername();
|
||||
result.setUsername(username);
|
||||
|
||||
this.manager.onPay(sender, currency, result, amount);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
package dev.xhyrom.lighteco.bukkit.commands;
|
||||
|
||||
import dev.jorel.commandapi.CommandAPICommand;
|
||||
import dev.jorel.commandapi.arguments.DoubleArgument;
|
||||
import dev.jorel.commandapi.arguments.IntegerArgument;
|
||||
import dev.jorel.commandapi.arguments.OfflinePlayerArgument;
|
||||
import dev.jorel.commandapi.executors.CommandArguments;
|
||||
import dev.xhyrom.lighteco.bukkit.chat.BukkitCommandSender;
|
||||
import dev.xhyrom.lighteco.bukkit.manager.BukkitCommandManager;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class SetCommand implements Command {
|
||||
private final BukkitCommandManager manager;
|
||||
private final Currency currency;
|
||||
private final String permissionBase;
|
||||
|
||||
@Override
|
||||
public CommandAPICommand build() {
|
||||
return new CommandAPICommand("set")
|
||||
.withPermission(permissionBase + "set")
|
||||
.withArguments(
|
||||
new OfflinePlayerArgument("target"),
|
||||
currency.getProxy().fractionalDigits() > 0
|
||||
? new DoubleArgument("amount", 0)
|
||||
: new IntegerArgument("amount", 0)
|
||||
)
|
||||
.executes((sender, args) -> {
|
||||
this.handleSet(sender, args, currency);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void handleSet(CommandSender originalSender, CommandArguments args, Currency currency) {
|
||||
BukkitCommandSender sender = new BukkitCommandSender(originalSender, this.manager.audienceFactory);
|
||||
OfflinePlayer target = (OfflinePlayer) args.get("target");
|
||||
BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(args.getRaw("amount")));
|
||||
|
||||
if (!this.manager.canUse(sender, currency)) return;
|
||||
|
||||
this.manager.plugin.getUserManager().loadUser(target.getUniqueId())
|
||||
.thenAccept(result -> {
|
||||
String name = target.getName() != null ? target.getName() : args.getRaw("target");
|
||||
result.setUsername(name);
|
||||
|
||||
this.manager.onSet(sender, currency, result, amount);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
package dev.xhyrom.lighteco.bukkit.commands;
|
||||
|
||||
import dev.jorel.commandapi.CommandAPICommand;
|
||||
import dev.jorel.commandapi.arguments.DoubleArgument;
|
||||
import dev.jorel.commandapi.arguments.IntegerArgument;
|
||||
import dev.jorel.commandapi.arguments.OfflinePlayerArgument;
|
||||
import dev.jorel.commandapi.executors.CommandArguments;
|
||||
import dev.xhyrom.lighteco.bukkit.chat.BukkitCommandSender;
|
||||
import dev.xhyrom.lighteco.bukkit.manager.BukkitCommandManager;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class TakeCommand implements Command {
|
||||
private final BukkitCommandManager manager;
|
||||
private final Currency currency;
|
||||
private final String permissionBase;
|
||||
|
||||
@Override
|
||||
public CommandAPICommand build() {
|
||||
return new CommandAPICommand("take")
|
||||
.withPermission(permissionBase + "take")
|
||||
.withArguments(
|
||||
new OfflinePlayerArgument("target"),
|
||||
currency.getProxy().fractionalDigits() > 0
|
||||
? new DoubleArgument("amount", 1)
|
||||
: new IntegerArgument("amount", 1)
|
||||
)
|
||||
.executes((sender, args) -> {
|
||||
this.handleTake(sender, args, currency);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void handleTake(CommandSender originalSender, CommandArguments args, Currency currency) {
|
||||
BukkitCommandSender sender = new BukkitCommandSender(originalSender, this.manager.audienceFactory);
|
||||
OfflinePlayer target = (OfflinePlayer) args.get("target");
|
||||
BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(args.getRaw("amount")));
|
||||
|
||||
if (!this.manager.canUse(sender, currency)) return;
|
||||
|
||||
this.manager.plugin.getUserManager().loadUser(target.getUniqueId())
|
||||
.thenAccept(result -> {
|
||||
String name = target.getName() != null ? target.getName() : args.getRaw("target");
|
||||
result.setUsername(name);
|
||||
|
||||
this.manager.onTake(sender, currency, result, amount);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,77 +1,52 @@
|
|||
package dev.xhyrom.lighteco.bukkit.manager;
|
||||
|
||||
import dev.jorel.commandapi.CommandAPICommand;
|
||||
import dev.xhyrom.lighteco.bukkit.commands.*;
|
||||
import dev.xhyrom.lighteco.common.manager.command.AbstractCommandManager;
|
||||
import dev.xhyrom.lighteco.bukkit.chat.BukkitCommandSender;
|
||||
import dev.xhyrom.lighteco.common.command.CommandManager;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandMap;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class BukkitCommandManager extends AbstractCommandManager {
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class BukkitCommandManager extends CommandManager {
|
||||
public final BukkitAudiences audienceFactory;
|
||||
private CommandMap commandMap;
|
||||
|
||||
public BukkitCommandManager(LightEcoPlugin plugin) {
|
||||
super(plugin);
|
||||
|
||||
this.audienceFactory = BukkitAudiences.create((JavaPlugin) this.plugin.getBootstrap().getLoader());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCurrencyCommand(@NonNull Currency currency) {
|
||||
registerCommands(currency.getIdentifier(), currency);
|
||||
try {
|
||||
Field field = Bukkit.getServer().getClass().getDeclaredField("commandMap");
|
||||
|
||||
for (String alias : currency.getIdentifierAliases()) {
|
||||
registerCommands(alias, currency);
|
||||
field.setAccessible(true);
|
||||
this.commandMap = (CommandMap) field.get(Bukkit.getServer());
|
||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCurrencyCommand(@NonNull Currency currency, boolean main) {
|
||||
if (!main) {
|
||||
registerCurrencyCommand(currency);
|
||||
return;
|
||||
}
|
||||
public void register(Currency currency, boolean main) {
|
||||
super.register(currency, main);
|
||||
|
||||
String permissionBase = "lighteco.currency." + currency.getIdentifier() + ".command.";
|
||||
|
||||
// Register main command
|
||||
registerCurrencyCommand(currency);
|
||||
|
||||
// Expose pay as main command
|
||||
if (currency.isPayable())
|
||||
new PayCommand(this, currency, permissionBase).build().register();
|
||||
|
||||
// Expose balance as main command
|
||||
for (CommandAPICommand cmd : new BalanceCommand(
|
||||
this,
|
||||
"balance",
|
||||
currency,
|
||||
permissionBase
|
||||
).multipleBuild()) {
|
||||
cmd.register();
|
||||
}
|
||||
commandMap.register(currency.getIdentifier(), new Command(currency.getIdentifier()) {
|
||||
@Override
|
||||
public boolean execute(@NotNull CommandSender commandSender, @NotNull String s, @NotNull String[] strings) {
|
||||
bukkitCommandManagerExecute(new BukkitCommandSender(commandSender, audienceFactory), s, strings);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void registerCommands(@NonNull String name, @NonNull Currency currency) {
|
||||
String permissionBase = "lighteco.currency." + currency.getIdentifier() + ".command.";
|
||||
|
||||
BalanceCommand balanceCommand = new BalanceCommand(this, "balance", currency, permissionBase);
|
||||
|
||||
CommandAPICommand cmd = new CommandAPICommand(name)
|
||||
.withSubcommand(new SetCommand(this, currency, permissionBase).build())
|
||||
.withSubcommand(new GiveCommand(this, currency, permissionBase).build())
|
||||
.withSubcommand(new TakeCommand(this, currency, permissionBase).build())
|
||||
.withSubcommands(balanceCommand.multipleBuild())
|
||||
// We want balance to be the default command
|
||||
.executesPlayer((sender, args) -> {
|
||||
balanceCommand.handleBalance(sender, args, currency);
|
||||
});
|
||||
|
||||
if (currency.isPayable())
|
||||
cmd = cmd.withSubcommand(new PayCommand(this, currency, permissionBase).build());
|
||||
|
||||
cmd.register();
|
||||
private void bukkitCommandManagerExecute(dev.xhyrom.lighteco.common.model.chat.CommandSender sender, String name, String[] args) {
|
||||
super.execute(sender, name, args);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@ import dev.xhyrom.lighteco.api.model.currency.Currency;
|
|||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
public class ApiCommandManager extends ApiAbstractManager<dev.xhyrom.lighteco.common.manager.command.CommandManager> implements CommandManager {
|
||||
public ApiCommandManager(LightEcoPlugin plugin, dev.xhyrom.lighteco.common.manager.command.CommandManager handle) {
|
||||
public class ApiCommandManager extends ApiAbstractManager<dev.xhyrom.lighteco.common.command.CommandManager> implements CommandManager {
|
||||
public ApiCommandManager(LightEcoPlugin plugin, dev.xhyrom.lighteco.common.command.CommandManager handle) {
|
||||
super(plugin, handle);
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ public class ApiCommandManager extends ApiAbstractManager<dev.xhyrom.lighteco.co
|
|||
dev.xhyrom.lighteco.common.model.currency.Currency internal = this.plugin.getCurrencyManager()
|
||||
.getIfLoaded(currency.getIdentifier());
|
||||
|
||||
this.handle.registerCurrencyCommand(internal);
|
||||
this.handle.register(internal);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -23,6 +23,6 @@ public class ApiCommandManager extends ApiAbstractManager<dev.xhyrom.lighteco.co
|
|||
dev.xhyrom.lighteco.common.model.currency.Currency internal = this.plugin.getCurrencyManager()
|
||||
.getIfLoaded(currency.getIdentifier());
|
||||
|
||||
this.handle.registerCurrencyCommand(internal, main);
|
||||
this.handle.register(internal, main);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package dev.xhyrom.lighteco.common.command;
|
||||
|
||||
import dev.xhyrom.lighteco.common.command.abstraction.Command;
|
||||
import dev.xhyrom.lighteco.common.command.argument.Arguments;
|
||||
import dev.xhyrom.lighteco.common.commands.BalanceCommand;
|
||||
import dev.xhyrom.lighteco.common.commands.BalanceOtherCommand;
|
||||
import dev.xhyrom.lighteco.common.commands.CurrencyParentCommand;
|
||||
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||
import net.kyori.adventure.text.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandManager {
|
||||
protected final LightEcoPlugin plugin;
|
||||
private final List<Command> commands = new ArrayList<>();
|
||||
|
||||
public CommandManager(LightEcoPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public void register(Currency currency) {
|
||||
register(currency, false);
|
||||
}
|
||||
|
||||
public void register(Currency currency, boolean main) {
|
||||
commands.add(new CurrencyParentCommand(currency));
|
||||
if (main) {
|
||||
commands.add(BalanceCommand.create(currency));
|
||||
commands.add(BalanceOtherCommand.create(currency));
|
||||
}
|
||||
}
|
||||
|
||||
public void execute(CommandSender sender, String name, String[] args) {
|
||||
Command command = this.commands.stream()
|
||||
.filter(cmd -> cmd.getName().equalsIgnoreCase(name) && cmd.getArgs().size() == args.length)
|
||||
.findFirst().orElse(null);
|
||||
|
||||
if (command == null) {
|
||||
sender.sendMessage(Component.text("Command not found.")); // TODO: change
|
||||
return;
|
||||
}
|
||||
|
||||
command.execute(this.plugin, sender, new Arguments(List.of(args)));
|
||||
}
|
||||
}
|
|
@ -2,24 +2,25 @@ package dev.xhyrom.lighteco.common.command.abstraction;
|
|||
|
||||
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.plugin.LightEcoPlugin;
|
||||
import lombok.Getter;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Getter
|
||||
public abstract class Command {
|
||||
@Getter
|
||||
@NonNull
|
||||
private final String name;
|
||||
|
||||
@Getter
|
||||
@Nullable
|
||||
private final String permission;
|
||||
|
||||
@Getter
|
||||
@NonNull
|
||||
private final List<Argument<?>> args;
|
||||
|
||||
|
@ -30,4 +31,15 @@ public abstract class Command {
|
|||
}
|
||||
|
||||
public abstract void execute(LightEcoPlugin plugin, CommandSender sender, Arguments args);
|
||||
|
||||
protected CurrencyMessageConfig getCurrencyMessageConfig(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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package dev.xhyrom.lighteco.common.command.abstraction;
|
||||
|
||||
import dev.xhyrom.lighteco.common.command.argument.Arguments;
|
||||
import dev.xhyrom.lighteco.common.command.argument.type.StringArgument;
|
||||
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
|
||||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||
import lombok.Getter;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@Getter
|
||||
public class ParentCommand extends Command {
|
||||
private final Command[] children;
|
||||
|
||||
public ParentCommand(@NonNull String name, @Nullable String permission, @NonNull Command... children) {
|
||||
super(name, permission, new StringArgument("child"));
|
||||
|
||||
this.children = children;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(LightEcoPlugin plugin, CommandSender sender, Arguments args) {
|
||||
String childName = args.string("child");
|
||||
Command child = Arrays.stream(getChildren())
|
||||
.filter(cmd -> cmd.getName().equalsIgnoreCase(childName))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (child == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
child.execute(plugin, sender, args.subList(1));
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package dev.xhyrom.lighteco.common.command.argument;
|
||||
|
||||
public enum ArgumentType {
|
||||
STRING,
|
||||
OFFLINE_USER,
|
||||
INTEGER,
|
||||
DOUBLE;
|
||||
|
|
|
@ -2,24 +2,40 @@ package dev.xhyrom.lighteco.common.command.argument;
|
|||
|
||||
import dev.xhyrom.lighteco.common.model.user.User;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class Arguments {
|
||||
private final Map<String, ?> arguments;
|
||||
private final List<String> arguments;
|
||||
private final Map<String, ?> mappedArguments;
|
||||
|
||||
public Arguments(Map<String, ?> arguments) {
|
||||
public Arguments(List<String> arguments) {
|
||||
this.arguments = arguments;
|
||||
|
||||
this.mappedArguments = Map.of();
|
||||
}
|
||||
|
||||
public String string(String name) {
|
||||
return (String) this.mappedArguments.get(name);
|
||||
}
|
||||
|
||||
public User offlineUser(String name) {
|
||||
return (User) this.arguments.get(name);
|
||||
return (User) this.mappedArguments.get(name);
|
||||
}
|
||||
|
||||
public int integer(String name) {
|
||||
return (int) this.arguments.get(name);
|
||||
return (int) this.mappedArguments.get(name);
|
||||
}
|
||||
|
||||
public double dbl(String name) {
|
||||
return (double) this.arguments.get(name);
|
||||
return (double) this.mappedArguments.get(name);
|
||||
}
|
||||
|
||||
public String raw(int index) {
|
||||
return (String) this.arguments.get(index);
|
||||
}
|
||||
|
||||
public Arguments subList(int fromIndex) {
|
||||
return new Arguments(this.arguments.subList(fromIndex, this.arguments.size()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
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);
|
||||
public class DoubleArgument extends NumberArgument<Double> {
|
||||
protected DoubleArgument(String name, Double min, Double max) {
|
||||
super(name, min, max);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -20,7 +18,7 @@ public class DoubleArgument extends Argument<Double> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Double parse(LightEcoPlugin plugin, String input) {
|
||||
public Double parse(String input) {
|
||||
return Double.parseDouble(input);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
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);
|
||||
public class IntegerArgument extends NumberArgument<Integer> {
|
||||
protected IntegerArgument(String name, Integer min, Integer max) {
|
||||
super(name, min, max);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -20,7 +18,7 @@ public class IntegerArgument extends Argument<Integer> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Integer parse(LightEcoPlugin plugin, String input) {
|
||||
public Integer parse(String input) {
|
||||
return Integer.parseInt(input);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package dev.xhyrom.lighteco.common.command.argument.type;
|
||||
|
||||
import dev.xhyrom.lighteco.common.command.argument.Argument;
|
||||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||
|
||||
abstract class NumberArgument<T> extends Argument<T> {
|
||||
private final T min;
|
||||
private final T max;
|
||||
|
||||
protected NumberArgument(String name, T min, T max) {
|
||||
super(name);
|
||||
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
public abstract T parse(String input);
|
||||
|
||||
@Override
|
||||
public T parse(LightEcoPlugin plugin, String input) {
|
||||
T value = parse(input);
|
||||
if (value == null || (min != null && compare(value, min) < 0) || (max != null && compare(value, max) > 0)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
private int compare(T a, T b) {
|
||||
return ((Comparable<T>) a).compareTo(b);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
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.model.user.User;
|
||||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class StringArgument extends Argument<String> {
|
||||
public StringArgument(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<String> getPrimitiveType() {
|
||||
return String.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArgumentType getArgumentType() {
|
||||
return ArgumentType.STRING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parse(LightEcoPlugin plugin, String input) {
|
||||
return input;
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ 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.command.argument.type.OfflineUserArgument;
|
||||
import dev.xhyrom.lighteco.common.config.message.CurrencyMessageConfig;
|
||||
import dev.xhyrom.lighteco.common.model.chat.CommandSender;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
|
@ -19,12 +20,12 @@ 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 static BalanceCommand create(@NonNull Currency currency) {
|
||||
return new BalanceCommand(currency.getIdentifier() + ".balance", currency);
|
||||
}
|
||||
|
||||
public BalanceCommand(@Nullable String permission, @NonNull Currency currency, @NonNull Argument<?>... args) {
|
||||
super("balance", permission + ".balance", args);
|
||||
public BalanceCommand(@Nullable String permission, @NonNull Currency currency) {
|
||||
super("balance", permission, new Argument<?>[0]);
|
||||
|
||||
this.currency = currency;
|
||||
}
|
||||
|
@ -36,21 +37,10 @@ public class BalanceCommand extends Command {
|
|||
|
||||
sender.sendMessage(
|
||||
MiniMessage.miniMessage().deserialize(
|
||||
getConfig(plugin, currency).balance,
|
||||
getCurrencyMessageConfig(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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package dev.xhyrom.lighteco.common.commands;
|
||||
|
||||
import dev.xhyrom.lighteco.common.command.abstraction.Command;
|
||||
import dev.xhyrom.lighteco.common.command.argument.Arguments;
|
||||
import dev.xhyrom.lighteco.common.command.argument.type.OfflineUserArgument;
|
||||
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;
|
||||
|
@ -12,12 +14,17 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
|||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Map;
|
||||
|
||||
public class BalanceOtherCommand extends BalanceCommand {
|
||||
public class BalanceOtherCommand extends Command {
|
||||
private final Currency currency;
|
||||
|
||||
public static BalanceOtherCommand create(@NonNull Currency currency) {
|
||||
return new BalanceOtherCommand(currency.getIdentifier() + ".balance.others", currency);
|
||||
}
|
||||
|
||||
public BalanceOtherCommand(@Nullable String permission, @NonNull Currency currency) {
|
||||
super(permission + ".balance.others", currency, new OfflineUserArgument("target"));
|
||||
super("balance", permission, new OfflineUserArgument("target"));
|
||||
|
||||
this.currency = currency;
|
||||
}
|
||||
|
@ -29,7 +36,7 @@ public class BalanceOtherCommand extends BalanceCommand {
|
|||
|
||||
sender.sendMessage(
|
||||
MiniMessage.miniMessage().deserialize(
|
||||
getConfig(plugin, currency).balanceOthers,
|
||||
getCurrencyMessageConfig(plugin, currency).balanceOthers,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("target", target.getUsername()),
|
||||
Placeholder.parsed("balance", balance.toPlainString())
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package dev.xhyrom.lighteco.common.commands;
|
||||
|
||||
import dev.xhyrom.lighteco.common.command.abstraction.ParentCommand;
|
||||
import dev.xhyrom.lighteco.common.model.currency.Currency;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
public class CurrencyParentCommand extends ParentCommand {
|
||||
public CurrencyParentCommand(@NonNull Currency currency) {
|
||||
super(
|
||||
currency.getIdentifier(),
|
||||
currency.getIdentifier(),
|
||||
BalanceCommand.create(currency),
|
||||
BalanceOtherCommand.create(currency)
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,275 +0,0 @@
|
|||
package dev.xhyrom.lighteco.common.manager.command;
|
||||
|
||||
import dev.xhyrom.lighteco.api.exception.CannotBeGreaterThan;
|
||||
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 java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public abstract class AbstractCommandManager implements CommandManager {
|
||||
public final LightEcoPlugin plugin;
|
||||
private final MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
private final Map<String, CurrencyMessageConfig> config;
|
||||
private final ArrayList<UUID> mustWait = new ArrayList<>();
|
||||
|
||||
protected AbstractCommandManager(LightEcoPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
this.config = this.plugin.getConfig().messages.currency;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUse(CommandSender sender, Currency currency) {
|
||||
// Console doesn't need to wait
|
||||
if (sender.getUniqueId() == null) return true;
|
||||
|
||||
if (mustWait.contains(sender.getUniqueId())) {
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).wait
|
||||
)
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void addToMustWait(UUID ...uuids) {
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid != null)
|
||||
mustWait.add(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
private void removeFromMustWait(UUID ...uuids) {
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid != null)
|
||||
mustWait.remove(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
private CurrencyMessageConfig getConfig(Currency currency) {
|
||||
CurrencyMessageConfig currencyMessageConfig = this.config.get(currency.getIdentifier());
|
||||
|
||||
if (currencyMessageConfig == null) {
|
||||
return this.config.get("default");
|
||||
}
|
||||
|
||||
return currencyMessageConfig;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBalance(CommandSender sender, Currency currency) {
|
||||
User user = this.plugin.getUserManager().getIfLoaded(sender.getUniqueId());
|
||||
BigDecimal balance = user.getBalance(currency);
|
||||
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
getConfig(currency).balance,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("balance", balance.toPlainString())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBalance(CommandSender sender, Currency currency, User target) {
|
||||
BigDecimal balance = target.getBalance(currency);
|
||||
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
getConfig(currency).balanceOthers,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("target", target.getUsername()),
|
||||
Placeholder.parsed("balance", balance.toPlainString())
|
||||
)
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSet(CommandSender sender, Currency currency, User target, BigDecimal amount) {
|
||||
addToMustWait(sender.getUniqueId(), target.getUniqueId());
|
||||
amount = amount.setScale(currency.getProxy().fractionalDigits(), RoundingMode.DOWN);
|
||||
|
||||
try {
|
||||
target.setBalance(currency, amount);
|
||||
} catch (CannotBeGreaterThan e) {
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).cannotBeGreaterThan,
|
||||
Placeholder.parsed("max", this.plugin.getConfig().maximumBalance.toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).set,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("target", target.getUsername()),
|
||||
Placeholder.parsed("amount", amount.toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGive(CommandSender sender, Currency currency, User target, BigDecimal amount) {
|
||||
addToMustWait(sender.getUniqueId(), target.getUniqueId());
|
||||
amount = amount.setScale(currency.getProxy().fractionalDigits(), RoundingMode.DOWN);
|
||||
|
||||
try {
|
||||
target.deposit(currency, amount);
|
||||
} catch (CannotBeGreaterThan e) {
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).cannotBeGreaterThan,
|
||||
Placeholder.parsed("max", this.plugin.getConfig().maximumBalance.toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).give,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("target", target.getUsername()),
|
||||
Placeholder.parsed("amount", amount.toPlainString()),
|
||||
Placeholder.parsed("balance", target.getBalance(currency).toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTake(CommandSender sender, Currency currency, User target, BigDecimal amount) {
|
||||
addToMustWait(sender.getUniqueId(), target.getUniqueId());
|
||||
amount = amount.setScale(currency.getProxy().fractionalDigits(), RoundingMode.DOWN);
|
||||
|
||||
try {
|
||||
target.withdraw(currency, amount);
|
||||
} catch (CannotBeGreaterThan e) {
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).cannotBeGreaterThan,
|
||||
Placeholder.parsed("max", this.plugin.getConfig().maximumBalance.toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).take,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("target", target.getUsername()),
|
||||
Placeholder.parsed("amount", amount.toPlainString()),
|
||||
Placeholder.parsed("balance", target.getBalance(currency).toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPay(CommandSender sender, Currency currency, User target, BigDecimal amount) {
|
||||
if (sender.getUniqueId() != null && (sender.getUniqueId() == target.getUniqueId())) {
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(this.getConfig(currency).cannotPaySelf)
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
amount = amount.setScale(currency.getProxy().fractionalDigits(), RoundingMode.DOWN);
|
||||
|
||||
User user = this.plugin.getUserManager().getIfLoaded(sender.getUniqueId());
|
||||
|
||||
if (user.getBalance(currency).compareTo(amount) < 0) {
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(this.getConfig(currency).notEnoughMoney)
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
addToMustWait(sender.getUniqueId(), target.getUniqueId());
|
||||
|
||||
// calculate tax using Currency#calculateTax
|
||||
BigDecimal tax = currency.getProxy().calculateTax(user.getProxy(), amount);
|
||||
tax = tax.setScale(currency.getProxy().fractionalDigits(), RoundingMode.DOWN);
|
||||
|
||||
// subtract tax from amount
|
||||
BigDecimal taxedAmount = amount.subtract(tax);
|
||||
|
||||
try {
|
||||
target.deposit(currency, taxedAmount);
|
||||
user.withdraw(currency, amount);
|
||||
} catch (CannotBeGreaterThan e) {
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
this.getConfig(currency).cannotBeGreaterThan,
|
||||
Placeholder.parsed("max", this.plugin.getConfig().maximumBalance.toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
String template = tax.compareTo(BigDecimal.ZERO) > 0
|
||||
? this.getConfig(currency).payWithTax
|
||||
: this.getConfig(currency).pay;
|
||||
|
||||
String templateReceived = tax.compareTo(BigDecimal.ZERO) > 0
|
||||
? this.getConfig(currency).payReceivedWithTax
|
||||
: this.getConfig(currency).payReceived;
|
||||
|
||||
sender.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
template,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("target", target.getUsername()),
|
||||
Placeholder.parsed("amount", amount.toPlainString()),
|
||||
Placeholder.parsed("taxed_amount", taxedAmount.toPlainString()),
|
||||
Placeholder.parsed("sender_balance", user.getBalance(currency).toPlainString()),
|
||||
Placeholder.parsed("receiver_balance", target.getBalance(currency).toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
target.sendMessage(
|
||||
miniMessage.deserialize(
|
||||
templateReceived,
|
||||
Placeholder.parsed("currency", currency.getIdentifier()),
|
||||
Placeholder.parsed("sender", user.getUsername()),
|
||||
Placeholder.parsed("amount", amount.toPlainString()),
|
||||
Placeholder.parsed("taxed_amount", taxedAmount.toPlainString()),
|
||||
Placeholder.parsed("sender_balance", user.getBalance(currency).toPlainString()),
|
||||
Placeholder.parsed("receiver_balance", target.getBalance(currency).toPlainString())
|
||||
)
|
||||
);
|
||||
|
||||
removeFromMustWait(target.getUniqueId(), sender.getUniqueId());
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
package dev.xhyrom.lighteco.common.manager.command;
|
||||
|
||||
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 org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public interface CommandManager {
|
||||
void registerCurrencyCommand(@NonNull Currency currency);
|
||||
void registerCurrencyCommand(@NonNull Currency currency, boolean main);
|
||||
|
||||
boolean canUse(CommandSender sender, Currency currency);
|
||||
|
||||
void onBalance(CommandSender sender, Currency currency);
|
||||
void onBalance(CommandSender sender, Currency currency, User target);
|
||||
|
||||
void onSet(CommandSender sender, Currency currency, User target, BigDecimal amount);
|
||||
void onGive(CommandSender sender, Currency currency, User target, BigDecimal amount);
|
||||
void onTake(CommandSender sender, Currency currency, User target, BigDecimal amount);
|
||||
void onPay(CommandSender sender, Currency currency, User target, BigDecimal amount);
|
||||
}
|
|
@ -2,9 +2,9 @@ package dev.xhyrom.lighteco.common.plugin;
|
|||
|
||||
import dev.xhyrom.lighteco.api.manager.ContextManager;
|
||||
import dev.xhyrom.lighteco.api.platform.Platform;
|
||||
import dev.xhyrom.lighteco.common.command.CommandManager;
|
||||
import dev.xhyrom.lighteco.common.config.Config;
|
||||
import dev.xhyrom.lighteco.common.dependencies.DependencyManager;
|
||||
import dev.xhyrom.lighteco.common.manager.command.CommandManager;
|
||||
import dev.xhyrom.lighteco.common.manager.currency.CurrencyManager;
|
||||
import dev.xhyrom.lighteco.common.manager.user.UserManager;
|
||||
import dev.xhyrom.lighteco.common.messaging.InternalMessagingService;
|
||||
|
|
|
@ -3,7 +3,7 @@ package dev.xhyrom.lighteco.sponge;
|
|||
import dev.xhyrom.lighteco.api.LightEco;
|
||||
import dev.xhyrom.lighteco.api.manager.ContextManager;
|
||||
import dev.xhyrom.lighteco.api.platform.Platform;
|
||||
import dev.xhyrom.lighteco.common.manager.command.CommandManager;
|
||||
import dev.xhyrom.lighteco.common.command.CommandManager;
|
||||
import dev.xhyrom.lighteco.common.manager.currency.StandardCurrencyManager;
|
||||
import dev.xhyrom.lighteco.common.manager.user.StandardUserManager;
|
||||
import dev.xhyrom.lighteco.common.messaging.MessagingFactory;
|
||||
|
|
Loading…
Reference in a new issue