Skip to content
This repository has been archived by the owner on Dec 2, 2023. It is now read-only.

Commit

Permalink
不再依赖cloth config api
Browse files Browse the repository at this point in the history
  • Loading branch information
DancingSnow0517 committed Jan 19, 2023
1 parent fea852e commit b75ffe5
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 39 deletions.
7 changes: 0 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ repositories {
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
maven { url "https://maven.shedaniel.me/" }
maven { url "https://maven.terraformersmc.com/releases/" }
}

dependencies {
Expand All @@ -24,11 +22,6 @@ dependencies {

// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

// Cloth Config
modApi("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") {
exclude(group: "net.fabricmc.fabric-api")
}
}

processResources {
Expand Down
2 changes: 0 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,3 @@ archives_base_name=MCDR-Completion
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.72.0+1.19.2

cloth_config_version=8.2.88
85 changes: 80 additions & 5 deletions src/main/java/cn/dancingsnow/mcdrc/config/ModConfig.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,85 @@
package cn.dancingsnow.mcdrc.config;

import cn.dancingsnow.mcdrc.server.MCDRCommandServer;
import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;
import com.google.gson.JsonParseException;

@Config(name = MCDRCommandServer.MOD_ID)
public class ModConfig implements ConfigData {
public String node_path = "config/node.json";
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;


public class ModConfig {

private final Path path;

public ModConfig(String path) {
this(Path.of(path));
}

public ModConfig(Path path) {
this.path = path;
}
private ConfigData data = new ConfigData();

public boolean save() {
if (!Files.exists(path)) {
try {
Files.createFile(path);
} catch (IOException e) {
e.printStackTrace();
MCDRCommandServer.LOGGER.error("Save {} error: createFile fail.", path);
return false;
}
}

try (BufferedWriter bfw = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
bfw.write(MCDRCommandServer.GSON.toJson(getData()));
} catch (IOException e) {
e.printStackTrace();
MCDRCommandServer.LOGGER.error("Save {} error", path);
return false;
}
return true;
}

public boolean load() {
if (!Files.exists(path)) {
return save();
}
try (BufferedReader bfr = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
setData(MCDRCommandServer.GSON.fromJson(bfr, ConfigData.class));
} catch (IOException e) {
e.printStackTrace();
MCDRCommandServer.LOGGER.error("Load {} error: newBufferedReader fail.", path);
return false;
} catch (JsonParseException e) {
MCDRCommandServer.LOGGER.error("Json {} parser fail!!", path);
return false;
}
return true;
}

public ConfigData getData() {
return data;
}

public void setData(ConfigData data) {
this.data = data;
}

public String getNodePath() {
return data.node_path;
}

public void setNodePath(String node_path) {
data.node_path = node_path;
save();
}

public static class ConfigData {
public String node_path = "config/node.json";
}
}
51 changes: 29 additions & 22 deletions src/main/java/cn/dancingsnow/mcdrc/server/MCDRCommandServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,54 +2,61 @@

import cn.dancingsnow.mcdrc.command.NodeData;
import cn.dancingsnow.mcdrc.config.ModConfig;
import cn.dancingsnow.mcdrc.networking.CommandNetwork;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
import net.fabricmc.api.DedicatedServerModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.text.Text;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.io.FileReader;
import java.io.Reader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

import static net.minecraft.server.command.CommandManager.literal;

public class MCDRCommandServer implements DedicatedServerModInitializer {
public static final String MOD_ID = "mcdrc";

public static final Gson GSON = new GsonBuilder().disableHtmlEscaping().create();

public static final Gson GSON = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
public static Logger LOGGER = LogManager.getLogger();

public static ModConfig modConfig;
public static ModConfig modConfig = new ModConfig("config/%s.json".formatted(MOD_ID));
public static NodeData nodeData = null;

@Override
public void onInitializeServer() {
AutoConfig.register(ModConfig.class, GsonConfigSerializer::new);
modConfig = AutoConfig.getConfigHolder(ModConfig.class).getConfig();
Path config = Path.of("config");
if (!Files.exists(config)) {
try {
Files.createDirectory(config);
} catch (IOException e) {
e.printStackTrace();
throw new IllegalStateException("MCDR-Completion init server fail");
}
}
if (!modConfig.load()) {
LOGGER.error("MCDR-Completion load config fail.");
throw new IllegalStateException("MCDR-Completion init server fail");
}

modConfig.save();

CommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess, environment) -> {
dispatcher.register(literal("mcdrc").requires(serverCommandSource -> serverCommandSource.hasPermissionLevel(2))
.then(literal("reload").executes(context -> {
context.getSource().sendFeedback(Text.literal("Reloading nodes..."), true);
loadNodeData();
return 1;
})));
}));
CommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess, environment) -> dispatcher.register(
literal("mcdrc")
.requires(serverCommandSource -> serverCommandSource.hasPermissionLevel(2))
.then(literal("reload").executes(context -> {
context.getSource().sendFeedback(Text.literal("Reloading nodes..."), true);
loadNodeData();
return 1;
})))));

NodeChangeWatcher.init();
loadNodeData();
}

public static void loadNodeData() {
try {
Reader reader = new FileReader(modConfig.node_path);
NodeData data = GSON.fromJson(reader, NodeData.class);
NodeData data = GSON.fromJson(Files.newBufferedReader(Path.of(modConfig.getNodePath())), NodeData.class);
if (data != null) nodeData = data;
} catch (Exception e) {
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ private NodeChangeWatcher() {
this.setPriority(Thread.MIN_PRIORITY);
}

private final Path nodePath = Path.of(MCDRCommandServer.modConfig.node_path);
private final Path nodePath = Path.of(MCDRCommandServer.modConfig.getNodePath());
private WatchService watchService;

@Override
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"DancingSnow"
],
"contact": {
"homepage": "https://modrinth.com/mod/mcdr-completion",
"sources": "https://github.com/DancingSnow0517/MCDR-Command",
"issues": "https://github.com/DancingSnow0517/MCDR-Command/issues"
},
Expand All @@ -30,7 +31,6 @@
"depends": {
"fabricloader": ">=0.14.12",
"fabric": "*",
"minecraft": "1.19.2",
"cloth-config": "*"
"minecraft": "1.19.2"
}
}

0 comments on commit b75ffe5

Please sign in to comment.