feat: 添加事件支持

This commit is contained in:
2024-01-21 20:08:10 +08:00
parent c6bc7927ea
commit a093d411ec
4 changed files with 69 additions and 2 deletions

View File

@@ -5,7 +5,7 @@ plugins {
}
group 'cn.hamster3'
version '2.1.2'
version '2.2.0'
repositories {
maven {
@@ -53,7 +53,7 @@ publishing {
artifactId = "HamsterCurrency"
artifact jar
artifact sourcesJar
artifact javadocJar
//artifact javadocJar
}
}

View File

@@ -27,17 +27,23 @@ import org.bukkit.plugin.java.JavaPlugin;
import java.sql.SQLException;
public final class HamsterCurrency extends JavaPlugin {
private static HamsterCurrency instance;
private static LogUtils logUtils;
private IDataManager dataManager;
private CurrencyListener listener;
private boolean loaded;
public static HamsterCurrency getInstance() {
return instance;
}
public static LogUtils getLogUtils() {
return logUtils;
}
@Override
public void onLoad() {
instance = this;
logUtils = new LogUtils(this);
FileManager.reload(this);
logUtils.infoDividingLine();

View File

@@ -1,9 +1,11 @@
package cn.hamster3.currency.api;
import cn.hamster3.currency.HamsterCurrency;
import cn.hamster3.currency.core.IDataManager;
import cn.hamster3.currency.data.CurrencyLog;
import cn.hamster3.currency.data.CurrencyType;
import cn.hamster3.currency.data.PlayerData;
import cn.hamster3.currency.event.CurrencyChangeEvent;
import org.black_ixx.playerpoints.PlayerPoints;
import org.bukkit.Bukkit;
@@ -41,6 +43,8 @@ public abstract class CurrencyAPI {
if (data == null) {
return;
}
CurrencyChangeEvent event = new CurrencyChangeEvent(uuid, currencyID, data.getPlayerCurrency(currencyID), amount);
Bukkit.getScheduler().runTaskAsynchronously(HamsterCurrency.getInstance(), () -> Bukkit.getPluginManager().callEvent(event));
data.setPlayerCurrency(currencyID, amount);
dataManager.savePlayerData(data);
dataManager.insertLog(new CurrencyLog(uuid, data.getPlayerName(), currencyID, "set", amount, amount));
@@ -56,6 +60,8 @@ public abstract class CurrencyAPI {
return;
}
double balance = data.getPlayerCurrency(currencyID) + amount;
CurrencyChangeEvent event = new CurrencyChangeEvent(uuid, currencyID, data.getPlayerCurrency(currencyID), balance);
Bukkit.getScheduler().runTaskAsynchronously(HamsterCurrency.getInstance(), () -> Bukkit.getPluginManager().callEvent(event));
data.setPlayerCurrency(currencyID, balance);
dataManager.savePlayerData(data);
dataManager.insertLog(new CurrencyLog(uuid, data.getPlayerName(), currencyID, "add", amount, balance));
@@ -71,6 +77,8 @@ public abstract class CurrencyAPI {
return;
}
double balance = data.getPlayerCurrency(currencyID) - amount;
CurrencyChangeEvent event = new CurrencyChangeEvent(uuid, currencyID, data.getPlayerCurrency(currencyID), balance);
Bukkit.getScheduler().runTaskAsynchronously(HamsterCurrency.getInstance(), () -> Bukkit.getPluginManager().callEvent(event));
data.setPlayerCurrency(currencyID, balance);
dataManager.savePlayerData(data);
dataManager.insertLog(new CurrencyLog(uuid, data.getPlayerName(), currencyID, "take", amount, balance));

View File

@@ -0,0 +1,53 @@
package cn.hamster3.currency.event;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import java.util.UUID;
@SuppressWarnings("unused")
public class CurrencyChangeEvent extends Event {
private static final HandlerList handlerList = new HandlerList();
@NotNull
private final UUID playerUUID;
@NotNull
private final String currencyID;
private final double oldAmount;
private final double newAmount;
public CurrencyChangeEvent(@NotNull UUID playerUUID, @NotNull String currencyID, double oldAmount, double newAmount) {
super(true);
this.playerUUID = playerUUID;
this.currencyID = currencyID;
this.oldAmount = oldAmount;
this.newAmount = newAmount;
}
public static HandlerList getHandlerList() {
return handlerList;
}
@NotNull
public UUID getPlayerUUID() {
return playerUUID;
}
@NotNull
public String getCurrencyID() {
return currencyID;
}
public double getOldAmount() {
return oldAmount;
}
public double getNewAmount() {
return newAmount;
}
@Override
public HandlerList getHandlers() {
return handlerList;
}
}