mirror of
https://github.com/MiniDay/HamsterCurrency-Parent.git
synced 2025-08-23 04:35:30 +08:00
feat: 添加数据库日志功能
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
//file:noinspection VulnerableLibrariesLocal
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'maven-publish'
|
||||
}
|
||||
|
||||
group 'cn.hamster3'
|
||||
version '2.0.12-SNAPSHOT'
|
||||
version '2.1.0'
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
@@ -42,7 +43,7 @@ jar {
|
||||
destinationDir(rootProject.buildDir)
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.encoding = 'UTF-8'
|
||||
options.compilerArgs << "-Xlint:unchecked"
|
||||
}
|
||||
@@ -62,7 +63,7 @@ javadoc {
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
create("mavenJava", MavenPublication.class) {
|
||||
artifactId = "HamsterCurrency"
|
||||
artifact jar
|
||||
artifact sourcesJar
|
||||
|
@@ -38,8 +38,8 @@ public final class HamsterCurrency extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
FileManager.reload(this);
|
||||
logUtils = new LogUtils(this);
|
||||
FileManager.reload(this);
|
||||
logUtils.infoDividingLine();
|
||||
if (FileManager.isUseBC()) {
|
||||
logUtils.info("使用多服务器模式...");
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.api;
|
||||
|
||||
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 org.black_ixx.playerpoints.PlayerPoints;
|
||||
@@ -42,6 +43,7 @@ public abstract class CurrencyAPI {
|
||||
}
|
||||
data.setPlayerCurrency(currencyID, amount);
|
||||
dataManager.savePlayerData(data);
|
||||
dataManager.insertLog(new CurrencyLog(uuid, currencyID, "set", amount, amount));
|
||||
}
|
||||
|
||||
public static void addPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
||||
@@ -53,8 +55,10 @@ public abstract class CurrencyAPI {
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
data.setPlayerCurrency(currencyID, data.getPlayerCurrency(currencyID) + amount);
|
||||
double balance = data.getPlayerCurrency(currencyID) + amount;
|
||||
data.setPlayerCurrency(currencyID, balance);
|
||||
dataManager.savePlayerData(data);
|
||||
dataManager.insertLog(new CurrencyLog(uuid, currencyID, "add", amount, balance));
|
||||
}
|
||||
|
||||
public static void takePlayerCurrency(UUID uuid, String currencyID, double amount) {
|
||||
@@ -66,8 +70,10 @@ public abstract class CurrencyAPI {
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
data.setPlayerCurrency(currencyID, data.getPlayerCurrency(currencyID) - amount);
|
||||
double balance = data.getPlayerCurrency(currencyID) - amount;
|
||||
data.setPlayerCurrency(currencyID, balance);
|
||||
dataManager.savePlayerData(data);
|
||||
dataManager.insertLog(new CurrencyLog(uuid, currencyID, "take", amount, balance));
|
||||
}
|
||||
|
||||
public static boolean hasPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.command.currency;
|
||||
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
|
||||
@@ -16,7 +17,9 @@ public class CurrencyGiveCommand extends CurrencyAdminSetCommand {
|
||||
|
||||
@Override
|
||||
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) + amount);
|
||||
double balance = data.getPlayerCurrency(type.getId()) + amount;
|
||||
data.setPlayerCurrency(type.getId(), balance);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "add", amount, balance));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ import cn.hamster3.api.command.CommandExecutor;
|
||||
import cn.hamster3.currency.core.FileManager;
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.core.Message;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
||||
@@ -25,11 +26,7 @@ public class CurrencyPayCommand extends CommandExecutor {
|
||||
"向其他玩家转账",
|
||||
"currency.pay",
|
||||
Message.notHasPermission.toString(),
|
||||
new String[]{
|
||||
"玩家",
|
||||
"货币类型",
|
||||
"数额"
|
||||
}
|
||||
new String[]{"玩家", "货币类型", "数额"}
|
||||
);
|
||||
this.dataManager = dataManager;
|
||||
}
|
||||
@@ -88,10 +85,14 @@ public class CurrencyPayCommand extends CommandExecutor {
|
||||
);
|
||||
return true;
|
||||
}
|
||||
fromData.setPlayerCurrency(type.getId(), fromData.getPlayerCurrency(type.getId()) - amount);
|
||||
toData.setPlayerCurrency(type.getId(), toData.getPlayerCurrency(type.getId()) + amount);
|
||||
double fromBalance = fromData.getPlayerCurrency(type.getId()) - amount;
|
||||
fromData.setPlayerCurrency(type.getId(), fromBalance);
|
||||
double toBalance = toData.getPlayerCurrency(type.getId()) + amount;
|
||||
toData.setPlayerCurrency(type.getId(), toBalance);
|
||||
dataManager.savePlayerData(fromData);
|
||||
dataManager.savePlayerData(toData);
|
||||
dataManager.insertLog(new CurrencyLog(fromData.getUuid(), type.getId(), "payOut", amount, fromBalance));
|
||||
dataManager.insertLog(new CurrencyLog(toData.getUuid(), type.getId(), "payIn", amount, toBalance));
|
||||
sender.sendMessage(
|
||||
Message.paySuccess.toString()
|
||||
.replace("%player%", toData.getPlayerName())
|
||||
|
@@ -10,6 +10,7 @@ import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -22,10 +23,7 @@ public class CurrencySeeCommand extends CommandExecutor {
|
||||
"查看玩家的货币余额",
|
||||
"currency.see",
|
||||
Message.notHasPermission.toString(),
|
||||
new String[]{
|
||||
"货币类型",
|
||||
"玩家"
|
||||
}
|
||||
new String[]{"玩家", "货币类型"}
|
||||
);
|
||||
this.dataManager = dataManager;
|
||||
}
|
||||
@@ -38,17 +36,8 @@ public class CurrencySeeCommand extends CommandExecutor {
|
||||
@Override
|
||||
@SuppressWarnings("DuplicatedCode")
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (args.length < 2) {
|
||||
sender.sendMessage(Message.notInputCurrencyType.toString());
|
||||
return true;
|
||||
}
|
||||
CurrencyType type = dataManager.getCurrencyType(args[1]);
|
||||
if (type == null) {
|
||||
sender.sendMessage(Message.currencyTypeNotFound.toString());
|
||||
return true;
|
||||
}
|
||||
PlayerData data;
|
||||
if (args.length < 3) {
|
||||
if (args.length < 2) {
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(Message.notInputPlayerName.toString());
|
||||
return true;
|
||||
@@ -60,30 +49,51 @@ public class CurrencySeeCommand extends CommandExecutor {
|
||||
sender.sendMessage(Message.notHasPermission.toString());
|
||||
return true;
|
||||
}
|
||||
data = dataManager.getPlayerData(args[2]);
|
||||
data = dataManager.getPlayerData(args[1]);
|
||||
}
|
||||
CurrencyType type = null;
|
||||
if (args.length >= 3) {
|
||||
type = dataManager.getCurrencyType(args[2]);
|
||||
if (type == null) {
|
||||
sender.sendMessage(Message.currencyTypeNotFound.toString());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (data == null) {
|
||||
sender.sendMessage(Message.playerNotFound.toString());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (type == null) {
|
||||
for (CurrencyType currencyType : dataManager.getCurrencyTypes()) {
|
||||
String typeId = currencyType.getId();
|
||||
sender.sendMessage(
|
||||
Message.seeCurrency.toString()
|
||||
.replace("%player%", data.getPlayerName())
|
||||
.replace("%type%", type.getId())
|
||||
.replace("%amount%", String.format("%.2f", data.getPlayerCurrency(type.getId())))
|
||||
.replace("%type%", typeId)
|
||||
.replace("%amount%", String.format("%.2f", data.getPlayerCurrency(typeId)))
|
||||
);
|
||||
}
|
||||
} else {
|
||||
String typeId = type.getId();
|
||||
sender.sendMessage(
|
||||
Message.seeCurrency.toString()
|
||||
.replace("%player%", data.getPlayerName())
|
||||
.replace("%type%", typeId)
|
||||
.replace("%amount%", String.format("%.2f", data.getPlayerCurrency(typeId)))
|
||||
);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||
if (args.length == 2) {
|
||||
List<String> types = dataManager.getCurrencyTypes().stream().map(CurrencyType::getId).collect(Collectors.toList());
|
||||
return HamsterAPI.startWith(types, args[1]);
|
||||
return HamsterAPI.getOnlinePlayersName(args[1]);
|
||||
}
|
||||
if (args.length == 3) {
|
||||
return HamsterAPI.getOnlinePlayersName(args[2]);
|
||||
List<String> types = dataManager.getCurrencyTypes().stream().map(CurrencyType::getId).collect(Collectors.toList());
|
||||
return HamsterAPI.startWith(types, args[2]);
|
||||
}
|
||||
return null;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.command.currency;
|
||||
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
|
||||
@@ -17,6 +18,7 @@ public class CurrencySetCommand extends CurrencyAdminSetCommand {
|
||||
@Override
|
||||
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||
data.setPlayerCurrency(type.getId(), amount);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "set", amount, amount));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.command.currency;
|
||||
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
|
||||
@@ -16,7 +17,8 @@ public class CurrencyTakeCommand extends CurrencyAdminSetCommand {
|
||||
|
||||
@Override
|
||||
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) - amount);
|
||||
double balance = data.getPlayerCurrency(type.getId()) - amount;
|
||||
data.setPlayerCurrency(type.getId(), balance);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "take", amount, balance));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.command.vault;
|
||||
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
|
||||
@@ -16,7 +17,8 @@ public class VaultGiveCommand extends VaultAdminSetCommand {
|
||||
|
||||
@Override
|
||||
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) + amount);
|
||||
|
||||
double balance = data.getPlayerCurrency(type.getId()) + amount;
|
||||
data.setPlayerCurrency(type.getId(), balance);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "add", amount, balance));
|
||||
}
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ import cn.hamster3.api.command.CommandManager;
|
||||
import cn.hamster3.currency.core.FileManager;
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.core.Message;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
||||
@@ -88,11 +89,14 @@ public class VaultPayCommand extends CommandManager {
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
fromData.setPlayerCurrency(type.getId(), fromData.getPlayerCurrency(type.getId()) - amount);
|
||||
toData.setPlayerCurrency(type.getId(), toData.getPlayerCurrency(type.getId()) + amount);
|
||||
double fromBalance = fromData.getPlayerCurrency(type.getId()) - amount;
|
||||
fromData.setPlayerCurrency(type.getId(), fromBalance);
|
||||
double toBalance = toData.getPlayerCurrency(type.getId()) + amount;
|
||||
toData.setPlayerCurrency(type.getId(), toBalance);
|
||||
dataManager.savePlayerData(fromData);
|
||||
dataManager.savePlayerData(toData);
|
||||
dataManager.insertLog(new CurrencyLog(fromData.getUuid(), type.getId(), "payOut", amount, fromBalance));
|
||||
dataManager.insertLog(new CurrencyLog(toData.getUuid(), type.getId(), "payIn", amount, toBalance));
|
||||
sender.sendMessage(
|
||||
Message.paySuccess.toString()
|
||||
.replace("%player%", toData.getPlayerName())
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.command.vault;
|
||||
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
|
||||
@@ -17,5 +18,6 @@ public class VaultSetCommand extends VaultAdminSetCommand {
|
||||
@Override
|
||||
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||
data.setPlayerCurrency(type.getId(), amount);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "set", amount, amount));
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.command.vault;
|
||||
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
|
||||
@@ -16,6 +17,8 @@ public class VaultTakeCommand extends VaultAdminSetCommand {
|
||||
|
||||
@Override
|
||||
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) - amount);
|
||||
double balance = data.getPlayerCurrency(type.getId()) - amount;
|
||||
data.setPlayerCurrency(type.getId(), balance);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "take", amount, balance));
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.core;
|
||||
|
||||
import cn.hamster3.currency.HamsterCurrency;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
@@ -109,6 +110,10 @@ public class FileDataManager implements IDataManager {
|
||||
// 所以这里什么都不做
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertLog(CurrencyLog log) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerData getPlayerData(UUID uuid) {
|
||||
synchronized (playerData) {
|
||||
|
@@ -37,8 +37,7 @@ public abstract class FileManager {
|
||||
try {
|
||||
Message.valueOf(key).setMessage(HamsterAPI.replaceColorCode(messagesConfig.getString(key)));
|
||||
} catch (IllegalArgumentException e) {
|
||||
HamsterCurrency.getLogUtils().warning("初始化消息设置 %s 时发生了一个异常: ", key);
|
||||
e.printStackTrace();
|
||||
HamsterCurrency.getLogUtils().error(e, "初始化消息设置 %s 时发生了一个异常: ", key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package cn.hamster3.currency.core;
|
||||
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
|
||||
@@ -42,6 +43,8 @@ public interface IDataManager {
|
||||
*/
|
||||
void savePlayerData(PlayerData data);
|
||||
|
||||
void insertLog(CurrencyLog log);
|
||||
|
||||
PlayerData getPlayerData(UUID uuid);
|
||||
|
||||
PlayerData getPlayerData(String name);
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.hamster3.currency.core;
|
||||
|
||||
import cn.hamster3.currency.HamsterCurrency;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.CurrencyType;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
||||
@@ -14,10 +15,7 @@ import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.hamster3.currency.HamsterCurrency.getLogUtils;
|
||||
@@ -57,6 +55,15 @@ public class SQLDataManager implements IDataManager {
|
||||
"uuid VARCHAR(36) PRIMARY KEY," +
|
||||
"data TEXT" +
|
||||
") CHARACTER SET = utf8mb4;");
|
||||
statement.execute("CREATE TABLE IF NOT EXISTS " + database + ".hamster_currency_logs(" +
|
||||
"uuid VARCHAR(36) NOT NULL," +
|
||||
"type VARCHAR(36) NOT NULL," +
|
||||
"action VARCHAR(36) NOT NULL," +
|
||||
"amount DOUBLE NOT NULL," +
|
||||
"balance DOUBLE NOT NULL," +
|
||||
"time DATETIME NOT NULL DEFAULT NOW()," +
|
||||
"INDEX idx_uuid(uuid)" +
|
||||
") CHARACTER SET = utf8mb4;");
|
||||
statement.execute("CREATE TABLE IF NOT EXISTS " + database + ".hamster_currency_settings(" +
|
||||
"title VARCHAR(64) PRIMARY KEY," +
|
||||
"data TEXT" +
|
||||
@@ -295,6 +302,26 @@ public class SQLDataManager implements IDataManager {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertLog(CurrencyLog log) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
try (Connection connection = dataSource.getConnection()) {
|
||||
try (PreparedStatement statement = connection.prepareStatement(
|
||||
"INSERT INTO " + database + ".hamster_currency_logs VALUES(?, ?, ?, ?, ?, DEFAULT);"
|
||||
)) {
|
||||
statement.setString(1, log.getUuid().toString());
|
||||
statement.setString(2, log.getType());
|
||||
statement.setString(3, log.getAction());
|
||||
statement.setDouble(4, log.getAmount());
|
||||
statement.setDouble(5, log.getBalance());
|
||||
statement.executeUpdate();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
getLogUtils().error(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerData getPlayerData(UUID uuid) {
|
||||
synchronized (playerData) {
|
||||
|
@@ -0,0 +1,59 @@
|
||||
package cn.hamster3.currency.data;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class CurrencyLog {
|
||||
@NotNull
|
||||
private final UUID uuid;
|
||||
/**
|
||||
* 货币类型
|
||||
*/
|
||||
@NotNull
|
||||
private final String type;
|
||||
/**
|
||||
* 执行的操作
|
||||
*/
|
||||
@NotNull
|
||||
private final String action;
|
||||
/**
|
||||
* 执行操作的数额
|
||||
*/
|
||||
private final double amount;
|
||||
/**
|
||||
* 执行操作后的余额
|
||||
*/
|
||||
private final double balance;
|
||||
|
||||
public CurrencyLog(@NotNull UUID uuid, @NotNull String type, @NotNull String action, double amount, double balance) {
|
||||
this.uuid = uuid;
|
||||
this.type = type;
|
||||
this.action = action;
|
||||
this.amount = amount;
|
||||
this.balance = balance;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getAction() {
|
||||
return action;
|
||||
}
|
||||
|
||||
public double getAmount() {
|
||||
return amount;
|
||||
}
|
||||
|
||||
public double getBalance() {
|
||||
return balance;
|
||||
}
|
||||
}
|
@@ -3,6 +3,7 @@ package cn.hamster3.currency.hook;
|
||||
import cn.hamster3.currency.core.FileManager;
|
||||
import cn.hamster3.currency.core.IDataManager;
|
||||
import cn.hamster3.currency.core.Message;
|
||||
import cn.hamster3.currency.data.CurrencyLog;
|
||||
import cn.hamster3.currency.data.PlayerData;
|
||||
import net.milkbowl.vault.economy.AbstractEconomy;
|
||||
import net.milkbowl.vault.economy.EconomyResponse;
|
||||
@@ -30,11 +31,13 @@ public class VaultEconomyHook extends AbstractEconomy {
|
||||
return new EconomyResponse(amount, 0, EconomyResponse.ResponseType.FAILURE, "玩家账户不存在");
|
||||
}
|
||||
String type = FileManager.getVaultCurrencyType();
|
||||
if (data.getPlayerCurrency(type) > 0 && data.getPlayerCurrency(type) + amount < 0) {
|
||||
double balance = data.getPlayerCurrency(type) + amount;
|
||||
if (data.getPlayerCurrency(type) > 0 && balance < 0) {
|
||||
return new EconomyResponse(amount, 0, EconomyResponse.ResponseType.FAILURE, "玩家金额超出上限");
|
||||
}
|
||||
data.setPlayerCurrency(type, data.getPlayerCurrency(type) + amount);
|
||||
data.setPlayerCurrency(type, balance);
|
||||
dataManager.savePlayerData(data);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type, "add", amount, balance));
|
||||
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.SUCCESS, "");
|
||||
}
|
||||
|
||||
@@ -46,8 +49,10 @@ public class VaultEconomyHook extends AbstractEconomy {
|
||||
if (data.getPlayerCurrency(type) < amount) {
|
||||
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.FAILURE, "余额不足");
|
||||
}
|
||||
data.setPlayerCurrency(type, data.getPlayerCurrency(type) - amount);
|
||||
double balance = data.getPlayerCurrency(type) - amount;
|
||||
data.setPlayerCurrency(type, balance);
|
||||
dataManager.savePlayerData(data);
|
||||
dataManager.insertLog(new CurrencyLog(data.getUuid(), type, "take", amount, balance));
|
||||
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.SUCCESS, "扣款成功");
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user