mirror of
https://github.com/xHyroM/lighteco.git
synced 2024-11-21 14:31:09 +01:00
feat(pay): send message to target (#6)
* feat(pay): send message for target * fix: set audience on enable
This commit is contained in:
parent
572738dab5
commit
b1d5ae7c09
9 changed files with 61 additions and 0 deletions
|
@ -3,6 +3,12 @@ plugins {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
api("net.kyori:adventure-api:4.12.0") {
|
||||
exclude(module = "adventure-bom")
|
||||
exclude(module = "checker-qual")
|
||||
exclude(module = "annotations")
|
||||
}
|
||||
|
||||
compileOnly("org.projectlombok:lombok:1.18.28")
|
||||
annotationProcessor("org.projectlombok:lombok:1.18.28")
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package dev.xhyrom.lighteco.api.model.user;
|
||||
|
||||
import dev.xhyrom.lighteco.api.model.currency.Currency;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
|
@ -59,4 +60,12 @@ public interface User {
|
|||
* @throws IllegalArgumentException if the amount is negative
|
||||
*/
|
||||
void withdraw(@NonNull Currency currency, @NonNull BigDecimal amount) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Send a message to this user.
|
||||
* Message will be silently dropped if the user is offline.
|
||||
*
|
||||
* @param message the message
|
||||
*/
|
||||
void sendMessage(Component message);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@ import dev.xhyrom.lighteco.common.plugin.bootstrap.LoaderBootstrap;
|
|||
import dev.xhyrom.lighteco.common.plugin.logger.PluginLogger;
|
||||
import dev.xhyrom.lighteco.common.plugin.scheduler.SchedulerAdapter;
|
||||
import lombok.Getter;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
@ -27,6 +29,7 @@ public class BukkitLightEcoBootstrap implements LightEcoBootstrap, LoaderBootstr
|
|||
private final PluginLogger logger;
|
||||
@Getter
|
||||
private final SchedulerAdapter scheduler;
|
||||
private BukkitAudiences audience;
|
||||
|
||||
public BukkitLightEcoBootstrap(JavaPlugin loader) {
|
||||
this.loader = loader;
|
||||
|
@ -46,6 +49,8 @@ public class BukkitLightEcoBootstrap implements LightEcoBootstrap, LoaderBootstr
|
|||
public void onEnable() {
|
||||
CommandAPI.onEnable();
|
||||
this.plugin.enable();
|
||||
|
||||
this.audience = BukkitAudiences.create(loader);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -76,4 +81,9 @@ public class BukkitLightEcoBootstrap implements LightEcoBootstrap, LoaderBootstr
|
|||
public InputStream getResourceStream(String filename) {
|
||||
return this.loader.getResource(filename);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Audience getPlayerAudience(UUID uniqueId) {
|
||||
return audience.player(uniqueId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package dev.xhyrom.lighteco.common.api.impl;
|
|||
|
||||
import dev.xhyrom.lighteco.api.model.currency.Currency;
|
||||
import dev.xhyrom.lighteco.api.model.user.User;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
|
@ -60,4 +61,9 @@ public class ApiUser implements User {
|
|||
|
||||
this.handler.withdraw(internal, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(Component message) {
|
||||
this.handler.sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,8 @@ public class CurrencyMessageConfig extends OkaeriConfig {
|
|||
|
||||
public String pay = "<currency> <dark_gray>| <gray>Paid <gold><amount> <yellow>to <gold><target>";
|
||||
public String payWithTax = "<currency> <dark_gray>| <gray>Paid <gold><amount> <yellow>to <gold><target> <dark_gray>(<gold><taxed_amount> <yellow>after tax<dark_gray>)";
|
||||
public String payReceived = "<currency> <dark_gray>| <gray>Received <gold><amount> <yellow>from <gold><sender>";
|
||||
public String payReceivedWithTax = "<currency> <dark_gray>| <gray>Received <gold><amount> <yellow>from <gold><sender> <dark_gray>(<gold><taxed_amount> <yellow>after tax<dark_gray>)";
|
||||
|
||||
public String wait = "<red>Please wait a moment before using this command again.";
|
||||
public String notEnoughMoney = "<red>You don't have enough money!";
|
||||
|
|
|
@ -242,6 +242,9 @@ public abstract class AbstractCommandManager implements CommandManager {
|
|||
? 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(
|
||||
|
@ -255,6 +258,18 @@ public abstract class AbstractCommandManager implements CommandManager {
|
|||
)
|
||||
);
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import dev.xhyrom.lighteco.common.model.currency.Currency;
|
|||
import dev.xhyrom.lighteco.common.plugin.LightEcoPlugin;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
@ -96,4 +97,8 @@ public class User {
|
|||
|
||||
this.setBalance(currency, this.getBalance(currency).subtract(amount));
|
||||
}
|
||||
|
||||
public void sendMessage(@NonNull Component message) {
|
||||
this.plugin.getBootstrap().getPlayerAudience(this.getUniqueId()).sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package dev.xhyrom.lighteco.common.plugin.bootstrap;
|
|||
|
||||
import dev.xhyrom.lighteco.common.plugin.logger.PluginLogger;
|
||||
import dev.xhyrom.lighteco.common.plugin.scheduler.SchedulerAdapter;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Path;
|
||||
|
@ -16,4 +17,5 @@ public interface LightEcoBootstrap {
|
|||
boolean isPlayerOnline(UUID uniqueId);
|
||||
List<UUID> getOnlinePlayers();
|
||||
InputStream getResourceStream(String filename);
|
||||
Audience getPlayerAudience(UUID uniqueId);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import dev.xhyrom.lighteco.common.plugin.bootstrap.LightEcoBootstrap;
|
|||
import dev.xhyrom.lighteco.common.plugin.bootstrap.LoaderBootstrap;
|
||||
import dev.xhyrom.lighteco.common.plugin.logger.PluginLogger;
|
||||
import dev.xhyrom.lighteco.common.plugin.scheduler.SchedulerAdapter;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.spongepowered.plugin.builtin.jvm.Plugin;
|
||||
|
||||
|
@ -73,4 +74,9 @@ public class SpongeLightEcoBootstrap implements LightEcoBootstrap, LoaderBootstr
|
|||
public InputStream getResourceStream(String filename) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Audience getPlayerAudience(UUID uniqueId) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue