Skip to content

Commit

Permalink
feat(fabric): 群服绑定api 2
Browse files Browse the repository at this point in the history
  • Loading branch information
cnlimiter committed Feb 20, 2024
1 parent f16937b commit 16ccf52
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 9 deletions.
8 changes: 5 additions & 3 deletions fabric/src/main/java/cn/evole/mods/mcbot/McBot.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package cn.evole.mods.mcbot;

import cn.evole.mods.mcbot.data.UserBindApi;
import cn.evole.mods.mcbot.init.callbacks.IEvents;
import cn.evole.mods.mcbot.init.event.*;
import cn.evole.mods.mcbot.init.config.ModConfig;
Expand Down Expand Up @@ -71,6 +72,7 @@ public void init() {
FileUtils.checkFolder(CONFIG_FOLDER);
CONFIG_FILE = CONFIG_FOLDER.resolve("config.toml");
I18n.init();
UserBindApi.load(CONFIG_FOLDER);
Runtime.getRuntime().addShutdownHook(new Thread(McBot::killOutThreads));
}

Expand Down Expand Up @@ -102,6 +104,8 @@ public void onServerStopping(MinecraftServer server) {
bus.stop();//分发器关闭
service.stop();
app.interrupt();
UserBindApi.save(CONFIG_FOLDER);
CustomCmdHandler.INSTANCE.clear();//自定义命令持久层清空
}

public void onServerStopped(MinecraftServer server) {
Expand All @@ -113,9 +117,7 @@ private static void killOutThreads() {
bus.stop();//分发器关闭
service.stop();
app.interrupt();
CustomCmdHandler.INSTANCE.clear();//自定义命令持久层清空
} catch (Exception e) {
e.printStackTrace();
} catch (Exception ignored) {
}
}
}
16 changes: 10 additions & 6 deletions fabric/src/main/java/cn/evole/mods/mcbot/data/UserBind.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cn.evole.mods.mcbot.data;

import com.xykj.easycsv.entity.CsvProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

Expand All @@ -13,11 +14,14 @@

@Getter
@Setter
@AllArgsConstructor
public class UserBind {
@CsvProperty("学号")
private int no;
@CsvProperty("姓名")
private String name;
@CsvProperty("年龄")
private Integer age;
@CsvProperty("添加日期")
private long createTime;
@CsvProperty("qq")
private String qqId;
@CsvProperty("群号")
private String groupId;
@CsvProperty("游戏名")
private String gameName;
}
59 changes: 59 additions & 0 deletions fabric/src/main/java/cn/evole/mods/mcbot/data/UserBindApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package cn.evole.mods.mcbot.data;

import com.xykj.easycsv.EasyCsv;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;

/**
* @Project: McBot-fabric
* @Author: cnlimiter
* @CreateTime: 2024/2/20 15:35
* @Description:
*/

public class UserBindApi {
public static String BIND_NAME = "bind.csv";
private static final EasyCsv easyCsv = new EasyCsv();
public static Map<String, UserBind> users;

public static void load(Path folder){
Path bindFile = folder.resolve(BIND_NAME);
List<UserBind> userBinds = new ArrayList<>();
Map<String, UserBind> userBindMap = new HashMap<>();
try {
if (!bindFile.toFile().isFile()) Files.createFile(bindFile);
userBinds = easyCsv.readAll(bindFile.toFile().getAbsolutePath()
, UserBind.class);
} catch (IOException ignored) {
}
for (UserBind userBind : userBinds){
userBindMap.put(userBind.getQqId(), userBind);
}
users = userBindMap;
}

public static void save(Path folder){
Path bindFile = folder.resolve(BIND_NAME);
try {
Files.deleteIfExists(bindFile);
easyCsv.write(bindFile.toFile().getAbsolutePath()
, Arrays.asList(users.values().toArray()));
} catch (IOException ignored) {
}
}

public static boolean exist(String qq_id){
return users.containsKey(qq_id);
}

public static void add(String group_name, String qq_id, String game_name){
if (!exist(qq_id)) users.put(qq_id, new UserBind(System.currentTimeMillis(), qq_id, group_name, game_name));
}

public static void delete(String qq_id){
if (exist(qq_id)) users.remove(qq_id);
}
}

0 comments on commit 16ccf52

Please sign in to comment.