perf: 优化代码
This commit is contained in:
4
README.md
Normal file
4
README.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# HamsterCurrency
|
||||||
|
|
||||||
|
仓鼠经济:适用于 Minecraft 跨服支持的服务器多货币经济插件
|
||||||
|
|
@@ -21,6 +21,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
@SuppressWarnings("CallToPrintStackTrace")
|
||||||
public class CurrencyPlugin extends JavaPlugin {
|
public class CurrencyPlugin extends JavaPlugin {
|
||||||
public static final String BALL_CHANNEL = "HamsterCurrency";
|
public static final String BALL_CHANNEL = "HamsterCurrency";
|
||||||
@Getter
|
@Getter
|
||||||
@@ -65,7 +66,7 @@ public class CurrencyPlugin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.warning("未找到 Vault 插件! 取消注册 Vault 经济系统");
|
logger.info("未找到 Vault 插件! 取消注册 Vault 经济系统");
|
||||||
}
|
}
|
||||||
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||||
logger.info("检测到 PlaceholderAPI 已安装");
|
logger.info("检测到 PlaceholderAPI 已安装");
|
||||||
@@ -73,7 +74,7 @@ public class CurrencyPlugin extends JavaPlugin {
|
|||||||
logger.info("已挂载 PlaceholderAPI 变量");
|
logger.info("已挂载 PlaceholderAPI 变量");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.warning("未检测到 PlaceholderAPI");
|
logger.info("未检测到 PlaceholderAPI");
|
||||||
}
|
}
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
logger.info("仓鼠经济初始化完成,总计耗时 " + time + " ms");
|
logger.info("仓鼠经济初始化完成,总计耗时 " + time + " ms");
|
||||||
|
@@ -6,16 +6,18 @@ import cn.hamster3.mc.plugin.currency.core.CurrencyDataManager;
|
|||||||
import cn.hamster3.mc.plugin.currency.data.CurrencyType;
|
import cn.hamster3.mc.plugin.currency.data.CurrencyType;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当 currencyID 为 PlayerPoints 且服务器安装了点券插件时,会自动更改为 PlayerPoints 接口
|
* 当 currencyID 为 PlayerPoints 且服务器安装了点券插件时,会自动更改为 PlayerPoints 接口
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({"unused", "CallToPrintStackTrace"})
|
@SuppressWarnings({"unused", "UnusedReturnValue"})
|
||||||
public final class CurrencyAPI {
|
public final class CurrencyAPI {
|
||||||
private CurrencyAPI() {
|
private CurrencyAPI() {
|
||||||
}
|
}
|
||||||
@@ -27,58 +29,79 @@ public final class CurrencyAPI {
|
|||||||
return CurrencyDataManager.getPlayerCurrency(uuid, currencyID);
|
return CurrencyDataManager.getPlayerCurrency(uuid, currencyID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setPlayerCurrency(UUID uuid, @NotNull String currencyID, double amount) {
|
public static boolean hasPlayerCurrency(UUID uuid, @NotNull String currencyID, double amount) {
|
||||||
|
return getPlayerCurrency(uuid, currencyID) >= amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static CompletableFuture<Void> setPlayerCurrency(@NotNull UUID uuid, @NotNull String currencyID, double amount) {
|
||||||
if (currencyID.equals("PlayerPoints") && Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) {
|
if (currencyID.equals("PlayerPoints") && Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) {
|
||||||
PointAPI.setPoint(uuid, (int) amount);
|
PointAPI.setPoint(uuid, (int) amount);
|
||||||
return;
|
return CompletableFuture.completedFuture(null);
|
||||||
}
|
}
|
||||||
|
CompletableFuture<Void> future = new CompletableFuture<>();
|
||||||
CurrencyPlugin.async(() -> {
|
CurrencyPlugin.async(() -> {
|
||||||
try {
|
try {
|
||||||
CurrencyDataManager.setPlayerCurrency(uuid, currencyID, amount, true);
|
CurrencyDataManager.setPlayerCurrency(uuid, currencyID, amount, true);
|
||||||
|
future.complete(null);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
future.completeExceptionally(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
@NotNull
|
||||||
|
public static CompletableFuture<Void> addPlayerCurrency(@NotNull UUID uuid, @NotNull String currencyID, double amount) {
|
||||||
if (currencyID.equals("PlayerPoints") && Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) {
|
if (currencyID.equals("PlayerPoints") && Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) {
|
||||||
PointAPI.givePoint(uuid, (int) amount);
|
PointAPI.givePoint(uuid, (int) amount);
|
||||||
return;
|
return CompletableFuture.completedFuture(null);
|
||||||
}
|
}
|
||||||
|
CompletableFuture<Void> future = new CompletableFuture<>();
|
||||||
CurrencyPlugin.async(() -> {
|
CurrencyPlugin.async(() -> {
|
||||||
try {
|
try {
|
||||||
double currency = CurrencyDataManager.getPlayerCurrency(uuid, currencyID);
|
double currency = CurrencyDataManager.getPlayerCurrency(uuid, currencyID);
|
||||||
currency += amount;
|
currency += amount;
|
||||||
CurrencyDataManager.setPlayerCurrency(uuid, currencyID, currency, true);
|
CurrencyDataManager.setPlayerCurrency(uuid, currencyID, currency, true);
|
||||||
|
future.complete(null);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
future.completeExceptionally(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void takePlayerCurrency(UUID uuid, String currencyID, double amount) {
|
@NotNull
|
||||||
|
public static CompletableFuture<Void> takePlayerCurrency(@NotNull UUID uuid, @NotNull String currencyID, double amount) {
|
||||||
if (currencyID.equals("PlayerPoints") && Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) {
|
if (currencyID.equals("PlayerPoints") && Bukkit.getPluginManager().isPluginEnabled("PlayerPoints")) {
|
||||||
PointAPI.takePoint(uuid, (int) amount);
|
PointAPI.takePoint(uuid, (int) amount);
|
||||||
return;
|
return CompletableFuture.completedFuture(null);
|
||||||
}
|
}
|
||||||
|
CompletableFuture<Void> future = new CompletableFuture<>();
|
||||||
CurrencyPlugin.async(() -> {
|
CurrencyPlugin.async(() -> {
|
||||||
try {
|
try {
|
||||||
double currency = CurrencyDataManager.getPlayerCurrency(uuid, currencyID);
|
double currency = CurrencyDataManager.getPlayerCurrency(uuid, currencyID);
|
||||||
currency -= amount;
|
currency -= amount;
|
||||||
CurrencyDataManager.setPlayerCurrency(uuid, currencyID, currency, true);
|
CurrencyDataManager.setPlayerCurrency(uuid, currencyID, currency, true);
|
||||||
|
future.complete(null);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
future.completeExceptionally(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
@Nullable
|
||||||
return getPlayerCurrency(uuid, currencyID) >= amount;
|
public static CurrencyType getCurrencyType(@NotNull String id) {
|
||||||
|
return CurrencyDataManager.getCurrencyType(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CurrencyType> getAllCurrencyType() {
|
public static CurrencyType getVaultCurrencyType() {
|
||||||
|
return CurrencyDataManager.getVaultCurrencyType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static List<CurrencyType> getAllCurrencyType() {
|
||||||
return new ArrayList<>(CurrencyDataManager.getCurrencyTypes());
|
return new ArrayList<>(CurrencyDataManager.getCurrencyTypes());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
@@ -8,9 +8,9 @@ public class ConfigManager {
|
|||||||
@Getter
|
@Getter
|
||||||
private static boolean enableVaultCommands;
|
private static boolean enableVaultCommands;
|
||||||
@Getter
|
@Getter
|
||||||
private static String currencyNamePlural;
|
private static String vaultNamePlural;
|
||||||
@Getter
|
@Getter
|
||||||
private static String currencyNameSingular;
|
private static String vaultNameSingular;
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
CurrencyPlugin plugin = CurrencyPlugin.getInstance();
|
CurrencyPlugin plugin = CurrencyPlugin.getInstance();
|
||||||
@@ -20,8 +20,8 @@ public class ConfigManager {
|
|||||||
FileConfiguration pluginConfig = plugin.getConfig();
|
FileConfiguration pluginConfig = plugin.getConfig();
|
||||||
|
|
||||||
enableVaultCommands = pluginConfig.getBoolean("enable-vault-commands", true);
|
enableVaultCommands = pluginConfig.getBoolean("enable-vault-commands", true);
|
||||||
currencyNamePlural = pluginConfig.getString("vault-settings.currency-name-plural", "金币");
|
vaultNamePlural = pluginConfig.getString("vault-settings.currency-name-plural", "金币");
|
||||||
currencyNameSingular = pluginConfig.getString("vault-settings.currency-name-singular", "金币");
|
vaultNameSingular = pluginConfig.getString("vault-settings.currency-name-singular", "金币");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -119,7 +119,6 @@ public final class CurrencyDataManager {
|
|||||||
return CURRENCY_TYPES.get(id);
|
return CURRENCY_TYPES.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public static CurrencyType getVaultCurrencyType() {
|
public static CurrencyType getVaultCurrencyType() {
|
||||||
for (CurrencyType type : CURRENCY_TYPES.values()) {
|
for (CurrencyType type : CURRENCY_TYPES.values()) {
|
||||||
if (type.isVault()) {
|
if (type.isVault()) {
|
||||||
|
@@ -1,31 +0,0 @@
|
|||||||
package cn.hamster3.mc.plugin.currency.data;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class PlayerData {
|
|
||||||
@NotNull
|
|
||||||
private UUID uuid;
|
|
||||||
@NotNull
|
|
||||||
private String playerName;
|
|
||||||
@NotNull
|
|
||||||
private Map<String , Double> currency;
|
|
||||||
|
|
||||||
public PlayerData(@NotNull UUID uuid, @NotNull String playerName) {
|
|
||||||
this.uuid = uuid;
|
|
||||||
this.playerName = playerName;
|
|
||||||
currency = new ConcurrentHashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlayerData(@NotNull UUID uuid, @NotNull String playerName, @NotNull Map<String, Double> currency) {
|
|
||||||
this.uuid = uuid;
|
|
||||||
this.playerName = playerName;
|
|
||||||
this.currency = currency;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -15,6 +15,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@SuppressWarnings("CallToPrintStackTrace")
|
||||||
public class VaultEconomyHook extends AbstractEconomy {
|
public class VaultEconomyHook extends AbstractEconomy {
|
||||||
private static final EconomyResponse NOT_IMPLEMENTED_RESPONSE =
|
private static final EconomyResponse NOT_IMPLEMENTED_RESPONSE =
|
||||||
new EconomyResponse(
|
new EconomyResponse(
|
||||||
@@ -52,12 +53,12 @@ public class VaultEconomyHook extends AbstractEconomy {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String currencyNamePlural() {
|
public String currencyNamePlural() {
|
||||||
return ConfigManager.getCurrencyNamePlural();
|
return ConfigManager.getVaultNamePlural();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String currencyNameSingular() {
|
public String currencyNameSingular() {
|
||||||
return ConfigManager.getCurrencyNameSingular();
|
return ConfigManager.getVaultNameSingular();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -10,6 +10,7 @@ import org.bukkit.event.player.PlayerLoginEvent;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@SuppressWarnings("CallToPrintStackTrace")
|
||||||
public class CurrencyListener implements Listener {
|
public class CurrencyListener implements Listener {
|
||||||
public static final CurrencyListener INSTANCE = new CurrencyListener();
|
public static final CurrencyListener INSTANCE = new CurrencyListener();
|
||||||
|
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
# 是否启用 vault 默认的指令
|
# 是否启用 vault 默认的指令
|
||||||
enable-vault-commands: true
|
enable-vault-commands: true
|
||||||
|
|
||||||
|
# VaultAPI 相关配置
|
||||||
vault-settings:
|
vault-settings:
|
||||||
currency-name-plural: 金币
|
# Vault 显示货币名称(单数)
|
||||||
currency-name-singular: 金币
|
currency-name-singular: 金币
|
||||||
|
# Vault 显示货币名称(复数)
|
||||||
|
currency-name-plural: 金币
|
||||||
|
@@ -22,12 +22,15 @@ commands:
|
|||||||
aliases: [ hcurrency, currency ]
|
aliases: [ hcurrency, currency ]
|
||||||
balance:
|
balance:
|
||||||
aliases: [ bal, seemoney ]
|
aliases: [ bal, seemoney ]
|
||||||
balanceTop:
|
permission: hamster.currency.see
|
||||||
aliases: [ baltop ]
|
balance-top:
|
||||||
payMoney:
|
aliases: [ balancetop, baltop ]
|
||||||
aliases: [ pay ]
|
permission: hamster.currency.top
|
||||||
|
pay-money:
|
||||||
|
aliases: [ paymoney, pay ]
|
||||||
economy:
|
economy:
|
||||||
aliases: [ eco, money ]
|
aliases: [ eco, money ]
|
||||||
|
permission: hamster.currency.see
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
hamster.currency.admin:
|
hamster.currency.admin:
|
||||||
|
Reference in New Issue
Block a user