Skip to content

Commit e4f2ed2

Browse files
committed
small update
1 parent 265f37d commit e4f2ed2

File tree

13 files changed

+58
-40
lines changed

13 files changed

+58
-40
lines changed

src/main/java/org/cubexmc/ecobalancer/EcoBalancer.java

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import java.util.logging.Logger;
2727
import java.util.logging.SimpleFormatter;
2828

29+
import static java.lang.Math.min;
30+
2931
import java.util.zip.GZIPOutputStream;
3032

3133
import org.cubexmc.ecobalancer.metrics.Metrics;
@@ -211,7 +213,6 @@ public static Economy getEconomy() {
211213
}
212214

213215
public void checkBalance(CommandSender sender, long currentTime, OfflinePlayer player, boolean log) {
214-
UUID playerId = player.getUniqueId();
215216
long lastPlayed = player.getLastPlayed();
216217
long daysOffline = (currentTime - lastPlayed) / (1000 * 60 * 60 * 24);
217218
double balance = econ.hasAccount(player) ? econ.getBalance(player) : 0;
@@ -231,19 +232,19 @@ public void checkBalance(CommandSender sender, long currentTime, OfflinePlayer p
231232
placeholders.put("balance", String.format("%.2f", balance));
232233
placeholders.put("days_offline", String.valueOf(daysOffline));
233234

234-
235-
if (deductBasedOnTime) {
236-
// 计算玩家离线天数
237-
if (balance < 0) {
238-
econ.depositPlayer(player, -1 * balance);
239-
placeholders.put("new_balance", String.format("%.2f", econ.getBalance(player)));
240-
if (sender != null) {
241-
sender.sendMessage(getFormattedMessage("messages.set_balance.reason", placeholders));
242-
sender.sendMessage(getFormattedMessage("messages.set_balance.balance_set", placeholders));
243-
}
244-
if (log)
245-
fileLogger.info(getFormattedMessage("logs.negative_balance", placeholders));
246-
} else {
235+
// fix all negative balance
236+
if (balance < 0.0) {
237+
econ.depositPlayer(player, -1 * balance);
238+
placeholders.put("new_balance", String.format("%.2f", econ.getBalance(player)));
239+
if (sender != null) {
240+
sender.sendMessage(getFormattedMessage("messages.set_balance.reason", placeholders));
241+
sender.sendMessage(getFormattedMessage("messages.set_balance.balance_set", placeholders));
242+
}
243+
if (log)
244+
fileLogger.info(getFormattedMessage("logs.negative_balance", placeholders));
245+
} else if (deductionRate > 0.0) {
246+
if (deductBasedOnTime) {
247+
// 计算玩家离线天数
247248
if (daysOffline > inactiveDaysToClear) {
248249
// 清除超过inactiveDaysToClear天未上线的玩家
249250
econ.withdrawPlayer(player, balance);
@@ -253,32 +254,37 @@ public void checkBalance(CommandSender sender, long currentTime, OfflinePlayer p
253254
sender.sendMessage(getFormattedMessage("messages.offline_extreme.balance_set", placeholders));
254255
}
255256
if (log)
256-
fileLogger.info(getFormattedMessage("logs.inactive_extreme", placeholders));
257+
fileLogger.info(getFormattedMessage("logs.offline_extreme", placeholders));
257258
} else if (daysOffline > inactiveDaysToDeduct) {
258259
// 对于超过50天未上线的玩家,按税率扣除
259-
double deduction = balance * deductionRate;
260+
double deduction = min(balance, balance * deductionRate); // in case deductionRate is greater than 1
260261
placeholders.put("deduction", String.format("%.2f", deduction));
261262
econ.withdrawPlayer(player, deduction);
262263
if (sender != null) {
263264
sender.sendMessage(getFormattedMessage("messages.offline_moderate.reason", placeholders));
264265
sender.sendMessage(getFormattedMessage("messages.offline_moderate.deduction_made", placeholders));
265266
}
266267
if (log)
267-
fileLogger.info(getFormattedMessage("logs.inactive_moderate", placeholders));
268+
fileLogger.info(getFormattedMessage("logs.offline_moderate", placeholders));
268269
} else {
269270
if (sender != null) {
270271
sender.sendMessage(getFormattedMessage("messages.offline_active", placeholders));
271272
}
272273
}
274+
} else {
275+
double deduction = min(balance, balance * deductionRate); // in case deductionRate is greater than 1
276+
placeholders.put("deduction", String.format("%.2f", deduction));
277+
econ.withdrawPlayer(player, deduction);
278+
if (sender != null)
279+
sender.sendMessage(getFormattedMessage("messages.deduction_made", placeholders));
280+
if (log)
281+
fileLogger.info(getFormattedMessage("logs.deduction_made", placeholders));
273282
}
274283
} else {
275-
double deduction = balance * deductionRate;
276-
placeholders.put("deduction", String.format("%.2f", deduction));
277-
econ.withdrawPlayer(player, deduction);
278284
if (sender != null)
279-
sender.sendMessage(getFormattedMessage("messages.deduction_made", placeholders));
285+
sender.sendMessage(getFormattedMessage("messages.zero_balance", placeholders));
280286
if (log)
281-
fileLogger.info(getFormattedMessage("logs.deduction_made", placeholders));
287+
fileLogger.info(getFormattedMessage("logs.zero_balance", placeholders));
282288
}
283289
}
284290

src/main/java/org/cubexmc/ecobalancer/commands/CheckPlayerCommand.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package org.cubexmc.ecobalancer.commands;
22

3-
import net.milkbowl.vault.economy.Economy;
43
import org.bukkit.Bukkit;
5-
import org.bukkit.ChatColor;
64
import org.bukkit.OfflinePlayer;
75
import org.bukkit.command.Command;
86
import org.bukkit.command.CommandExecutor;
97
import org.bukkit.command.CommandSender;
108
import org.bukkit.entity.Player;
119
import org.cubexmc.ecobalancer.EcoBalancer;
1210

13-
import java.util.UUID;
14-
1511
public class CheckPlayerCommand implements CommandExecutor {
1612
EcoBalancer plugin;
1713

@@ -44,8 +40,12 @@ public boolean onCommand(CommandSender sender, Command command, String s, String
4440
}
4541

4642
private void checkPlayer(CommandSender sender, String playerName) {
47-
long currentTime = System.currentTimeMillis();
4843
OfflinePlayer target = Bukkit.getOfflinePlayer(playerName);
49-
plugin.checkBalance(sender, currentTime, target, true);
44+
if (target.hasPlayedBefore()) {
45+
long currentTime = System.currentTimeMillis();
46+
plugin.checkBalance(sender, currentTime, target, true);
47+
} else {
48+
sender.sendMessage(plugin.getFormattedMessage("messages.player_not_found", null));
49+
}
5050
}
5151
}

src/main/resources/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
check-time: "20:00" # 格式为 HH:mm # Time format is HH:mm
22
check-schedule:
33
type: 'weekly' # 选项: 'daily', 'weekly', 'monthly' # Options: 'daily', 'weekly', 'monthly'
4-
days-of-week: [1, 3, 5] # 周一, 周三, 周五 (1 = 周六, 7 = 周日) # Monday, Wednesday, Friday (1 = Saturday, 7 = Sunday)
4+
days-of-week: [1, 3, 5] # 周一, 周三, 周五 (6 = 周六, 7 = 周日) # Monday, Wednesday, Friday (6 = Saturday, 7 = Sunday)
55
dates-of-month: [1] # 每月一号 # 1st day of each month
66
deduct-based-on-time: true
77
# 下面两个选项仅在 deduct-based-on-time 为 true 时生效 # The following two options only take effect when deduct-based-on-time is true

src/main/resources/lang.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@ messages:
2828
players_processing: "&7处理了 &6%batch% &7个玩家,共处理:&6%end%"
2929
players_processed: "&7共&6%end% &7个玩家,处理总数:&6%end%"
3030
all_players_processed: "&a所有玩家都已被洗劫。"
31+
zero_balance: "&e玩家 &6%player% &e的余额为 &60&e。"
32+
player_not_found: "&c没找到该玩家 (大小写敏感)。"
3133
logs:
3234
negative_balance: "[负额度] 已将 %player% 的余额置为%balance%。"
33-
inactive_extreme: "[及不活跃] 已将 %player% 的余额置为%new_balance%。"
34-
inactive_moderate: "[较不活跃] 已从 %player% 的余额中扣除 %deduction%。"
35+
offline_extreme: "[及不活跃] 已将 %player% 的余额置为%new_balance%。"
36+
offline_moderate: "[较不活跃] 已从 %player% 的余额中扣除 %deduction%。"
3537
deduction_made: "已从 %player% 的余额中扣除 %deduction%。"
3638
players_processed: "处理了 %start% 个玩家,共处理:%end%"
3739
all_players_processed: "所有玩家都已被洗劫。"
3840
batch_processed: "处理了 %total_players% 个玩家,共处理:%end%"
41+
zero_balance: "&e玩家 &6%player% &e的余额为 &60&e。"

src/main/resources/lang_en.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@ messages:
2929
players_processing: "&7Processed &6%batch% &7players, total processed: &6%end%"
3030
players_processed: "&7Total &6%end% &7players, total processed: &6%end%"
3131
all_players_processed: "&aAll players have been cleaned."
32+
zero_balance: "&ePlayer &6%player% &e's balance is &60&e."
33+
player_not_found: "&cPlayer not found (case sensitive)."
3234
logs:
3335
negative_balance: "[Negative Balance] Set %player%'s balance to %balance%."
34-
inactive_extreme: "[Extremely Inactive] Set %player%'s balance to %new_balance%."
35-
inactive_moderate: "[Moderately Inactive] Deducted %deduction% from %player%'s balance."
36+
offline_extreme: "[Extremely Inactive] Set %player%'s balance to %new_balance%."
37+
offline_moderate: "[Moderately Inactive] Deducted %deduction% from %player%'s balance."
3638
deduction_made: "Deducted %deduction% from %player%'s balance."
3739
players_processed: "Processed %start% players, total processed: %end%"
3840
all_players_processed: "All players have been cleaned."
39-
batch_processed: "Processed %total_players% players, total processed: %end%"
41+
batch_processed: "Processed %total_players% players, total processed: %end%"
42+
zero_balance: "&ePlayer &6%player% &e's balance is &60&e."

target/classes/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
check-time: "20:00" # 格式为 HH:mm # Time format is HH:mm
22
check-schedule:
33
type: 'weekly' # 选项: 'daily', 'weekly', 'monthly' # Options: 'daily', 'weekly', 'monthly'
4-
days-of-week: [1, 3, 5] # 周一, 周三, 周五 (1 = 周六, 7 = 周日) # Monday, Wednesday, Friday (1 = Saturday, 7 = Sunday)
4+
days-of-week: [1, 3, 5] # 周一, 周三, 周五 (6 = 周六, 7 = 周日) # Monday, Wednesday, Friday (6 = Saturday, 7 = Sunday)
55
dates-of-month: [1] # 每月一号 # 1st day of each month
66
deduct-based-on-time: true
77
# 下面两个选项仅在 deduct-based-on-time 为 true 时生效 # The following two options only take effect when deduct-based-on-time is true

target/classes/lang.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@ messages:
2828
players_processing: "&7处理了 &6%batch% &7个玩家,共处理:&6%end%"
2929
players_processed: "&7共&6%end% &7个玩家,处理总数:&6%end%"
3030
all_players_processed: "&a所有玩家都已被洗劫。"
31+
zero_balance: "&e玩家 &6%player% &e的余额为 &60&e。"
32+
player_not_found: "&c没找到该玩家 (大小写敏感)。"
3133
logs:
3234
negative_balance: "[负额度] 已将 %player% 的余额置为%balance%。"
33-
inactive_extreme: "[及不活跃] 已将 %player% 的余额置为%new_balance%。"
34-
inactive_moderate: "[较不活跃] 已从 %player% 的余额中扣除 %deduction%。"
35+
offline_extreme: "[及不活跃] 已将 %player% 的余额置为%new_balance%。"
36+
offline_moderate: "[较不活跃] 已从 %player% 的余额中扣除 %deduction%。"
3537
deduction_made: "已从 %player% 的余额中扣除 %deduction%。"
3638
players_processed: "处理了 %start% 个玩家,共处理:%end%"
3739
all_players_processed: "所有玩家都已被洗劫。"
3840
batch_processed: "处理了 %total_players% 个玩家,共处理:%end%"
41+
zero_balance: "&e玩家 &6%player% &e的余额为 &60&e。"

target/classes/lang_en.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@ messages:
2929
players_processing: "&7Processed &6%batch% &7players, total processed: &6%end%"
3030
players_processed: "&7Total &6%end% &7players, total processed: &6%end%"
3131
all_players_processed: "&aAll players have been cleaned."
32+
zero_balance: "&ePlayer &6%player% &e's balance is &60&e."
33+
player_not_found: "&cPlayer not found (case sensitive)."
3234
logs:
3335
negative_balance: "[Negative Balance] Set %player%'s balance to %balance%."
34-
inactive_extreme: "[Extremely Inactive] Set %player%'s balance to %new_balance%."
35-
inactive_moderate: "[Moderately Inactive] Deducted %deduction% from %player%'s balance."
36+
offline_extreme: "[Extremely Inactive] Set %player%'s balance to %new_balance%."
37+
offline_moderate: "[Moderately Inactive] Deducted %deduction% from %player%'s balance."
3638
deduction_made: "Deducted %deduction% from %player%'s balance."
3739
players_processed: "Processed %start% players, total processed: %end%"
3840
all_players_processed: "All players have been cleaned."
39-
batch_processed: "Processed %total_players% players, total processed: %end%"
41+
batch_processed: "Processed %total_players% players, total processed: %end%"
42+
zero_balance: "&ePlayer &6%player% &e's balance is &60&e."
Binary file not shown.
Binary file not shown.
Binary file not shown.
203 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)