Skip to content

Commit

Permalink
Merge pull request #48 from Blue-Millennium/47-unoinban-module-fix
Browse files Browse the repository at this point in the history
47 unoinban module fix
  • Loading branch information
Suisuroru authored Feb 14, 2025
2 parents 0708a2e + 48a0cf3 commit ffb7c46
Show file tree
Hide file tree
Showing 18 changed files with 384 additions and 423 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
}

group = 'Blue-Millennium'
version = '1.0.0'
version = '1.0.1'

idea {
module {
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/fun/blue_millennium/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public class Main extends JavaPlugin implements Listener {
public static File DATA_FILE = new File(BASE_DIR, "data.json");
public static File CONFIG_FILE = new File(BASE_DIR, "config.properties");
public static File REPORT_DATA_FILE = new File(BASE_DIR, "report.csv");
public static File UNION_BAN_DATA_FILE = new File(BASE_DIR, "unionbandata.json");
public static GlobalEventChannel eventChannel;
public DataManager dataManager;
public ConfigManager configManager;
Expand Down Expand Up @@ -94,6 +95,16 @@ public void onLoad() {
}
}

if (!UNION_BAN_DATA_FILE.exists()) {
try {
if (!UNION_BAN_DATA_FILE.createNewFile()) {
LOGGER.warning("Failed to create unionban data file");
}
} catch (Exception e) {
LOGGER.warning("Failed to create unionban data file " + e.getMessage());
}
}

dataManager.load();
configManager.load();
moduleManager.load();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import fun.blue_millennium.Main;
import fun.blue_millennium.config.Config;
import fun.blue_millennium.data.UnionBan.UnionBanMain;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
Expand All @@ -11,9 +10,8 @@
import org.jetbrains.annotations.NotNull;

import java.util.Arrays;
import java.util.Date;

import static fun.blue_millennium.data.UnionBan.UnionBanMain.reportBanData;
import static fun.blue_millennium.data.UnionBan.LocalProcess.ReportedDataProcess.reportBanData;

/**
* @author Suisuroru
Expand Down Expand Up @@ -75,7 +73,7 @@ private void TransferToUnionBan(Player targetPlayer, CommandSender sender, Strin
String message = "玩家 " + targetPlayer.getName() + " 已被 " + sender.getName() + " 以[ " + reason + " ]的理由封禁";
BanMessage(message);
if (!Config.UnionBanCheckOnly) {
reportBanData(new UnionBanMain.BanPair<>(targetPlayer.getUniqueId(), reason, new Date(), Config.ServerName));
reportBanData(targetPlayer.getName(), targetPlayer.getUniqueId(), System.currentTimeMillis(), reason, Config.ServerName);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fun.blue_millennium.commands.execute.vanilla;

import fun.blue_millennium.config.Config;
import fun.blue_millennium.data.UnionBan.UnionBanMain;
import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
Expand All @@ -10,10 +9,8 @@
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

import java.util.Date;

import static fun.blue_millennium.commands.execute.vanilla.Ban.BanMessage;
import static fun.blue_millennium.data.UnionBan.UnionBanMain.reportBanData;
import static fun.blue_millennium.data.UnionBan.LocalProcess.ReportedDataProcess.reportBanData;

/**
* @author Suisuroru
Expand All @@ -27,9 +24,8 @@ public static void TransferToUnionPardon(String playerName, CommandSender sender
BanMessage(message);
if (!Config.UnionBanCheckOnly) {
Player targetPlayer = Bukkit.getPlayer(playerName);
String reason = "Pardon";
if (targetPlayer != null) {
reportBanData(new UnionBanMain.BanPair<>(targetPlayer.getUniqueId(), reason, new Date(), "Pardon"));
reportBanData(targetPlayer.getName(), targetPlayer.getUniqueId(), System.currentTimeMillis(), "Pardon", Config.ServerName);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

public class DataGet {
private final List<Data> dataList;
private final Gson gson = new Gson(); // 创建 Gson 实例
private final Gson gson = new Gson();

public DataGet() {
this.dataList = readDataFromFile(DATA_FILE);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package fun.blue_millennium.data.UnionBan;

import fun.blue_millennium.config.Config;
import fun.blue_millennium.data.UnionBan.LocalProcess.UnionBanDataGet;
import org.bukkit.BanEntry;
import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.ban.ProfileBanList;
import org.bukkit.profile.PlayerProfile;

import static fun.blue_millennium.Main.LOGGER;
import static fun.blue_millennium.data.UnionBan.OnlineProcess.OnlinePush.reportRemoteBanList;

public class LocalBanListImport {
public static void importBanList() {
try {
ProfileBanList banlist = Bukkit.getBanList(BanList.Type.PROFILE);
UnionBanDataGet dg = new UnionBanDataGet();
for (BanEntry<PlayerProfile> banEntry : banlist.getEntries()) {
UnionBanData data = dg.getUnionBanData(banEntry.getBanTarget().getUniqueId());
if (data == null) {
data = new UnionBanData();
data.playerName = banEntry.getBanTarget().getName();
data.playerUuid = banEntry.getBanTarget().getUniqueId();
data.time = banEntry.getExpiration().getTime();
data.reason = banEntry.getReason();
data.sourceServer = Config.ServerName;
data.localTag = true;
if (reportRemoteBanList(data)) {
data.reportTag = true;
}
dg.setPlayerData(data.playerUuid, data);
}
}
} catch (Exception e) {
LOGGER.warning("导入本地封禁列表失败: " + e.getMessage());
}
}
}
105 changes: 0 additions & 105 deletions src/main/java/fun/blue_millennium/data/UnionBan/LocalCache.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package fun.blue_millennium.data.UnionBan.LocalProcess;

import fun.blue_millennium.data.UnionBan.UnionBanData;
import org.bukkit.Bukkit;

import java.util.List;

import static fun.blue_millennium.commands.execute.vanilla.Ban.BanMessage;

public class BanDataProcess {
public static void LocalBanDataProcess() {
UnionBanDataGet dg = new UnionBanDataGet();
List<UnionBanData> dataList = dg.returnAllData();
for (UnionBanData data : dataList) {
if (!data.localTag) {
String message = "";
if (data.reason.equals("Pardon")) {
if (Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "minecraft:pardon " + data.playerUuid)) {
message = "玩家 " + data.playerName + " 已被服务器 " + data.sourceServer + "解除封禁";
}
} else {
if (Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "minecraft:ban " + data.playerUuid + " " + data.reason)) {
message = "玩家 " + data.playerName + " 已被服务器 " + data.sourceServer + "以" + data.reason + "的理由封禁";
}
}
data.reportTag = true;
dg.setPlayerData(data.playerUuid, data);
BanMessage(message);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package fun.blue_millennium.data.UnionBan.LocalProcess;

import fun.blue_millennium.data.UnionBan.OnlineProcess.OnlinePush;
import fun.blue_millennium.data.UnionBan.UnionBanData;

import java.util.ArrayList;
import java.util.List;

import static fun.blue_millennium.commands.execute.vanilla.Ban.BanMessage;
import static fun.blue_millennium.data.UnionBan.LocalProcess.BanDataProcess.LocalBanDataProcess;
import static fun.blue_millennium.data.UnionBan.OnlineProcess.OnlineGet.loadRemoteBanList;

public class OnlineDataMerge {
public static void mergeAndReportData() {
UnionBanDataGet dgl = new UnionBanDataGet();
List<UnionBanData> remote = loadRemoteBanList();
List<String> namelist1 = new ArrayList<>(List.of());
List<String> namelist2 = new ArrayList<>(List.of());
for (UnionBanData banData : remote) {
UnionBanData data = dgl.getUnionBanData(banData.playerUuid);
if (data == null) {
dgl.setPlayerData(banData.playerUuid, banData);
} else {
if (data.time < banData.time) {
dgl.setPlayerData(banData.playerUuid, banData);
namelist1.add(banData.playerName);
} else if (data.time > banData.time) {
if (OnlinePush.reportRemoteBanList(banData)) {
namelist2.add(banData.playerName);
}
}
}
}
if (!namelist1.isEmpty()) {
StringBuilder msg = new StringBuilder().append(" ");
for (String name : namelist2) {
msg.append(name).append(" ");
}
LocalBanDataProcess();
BanMessage(msg + "的封禁数据已被同步至本地服务器");
}
if (!namelist2.isEmpty()) {
StringBuilder msg = new StringBuilder().append(" ");
for (String name : namelist2) {
msg.append(name).append(" ");
}
BanMessage(msg + "的封禁数据已被上报至UnionBan服务器");
}
}
}
Loading

0 comments on commit ffb7c46

Please sign in to comment.