1
0
Fork 0
mirror of https://github.com/xHyroM/lighteco.git synced 2024-12-22 04:21:06 +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:
Jozef Steinhübl 2023-10-30 16:08:31 +01:00 committed by GitHub
parent 572738dab5
commit b1d5ae7c09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 61 additions and 0 deletions

View file

@ -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")

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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!";

View file

@ -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());
}
}

View file

@ -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);
}
}

View file

@ -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);
}

View file

@ -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;
}
}