Skip to content

Commit 4fc3cca

Browse files
authored
Merge pull request #1 from Junn1o/test
test
2 parents fb2444f + 360ae00 commit 4fc3cca

File tree

16 files changed

+251
-57
lines changed

16 files changed

+251
-57
lines changed

build.gradle

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@ repositories {
1717
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
1818
// for more information about repositories.
1919
maven { url "https://jitpack.io" }
20+
maven {
21+
name = "Terraformers"
22+
url = "https://maven.terraformersmc.com/"
23+
}
2024
maven { url "https://maven.shedaniel.me/" }
21-
maven { url "https://maven.terraformersmc.com/releases/" }
22-
2325
}
2426

2527
loom {
2628
splitEnvironmentSourceSets()
2729

2830
mods {
29-
"antifreecam" {
31+
"anticonfig" {
3032
sourceSet sourceSets.main
3133
sourceSet sourceSets.client
3234
}
@@ -47,9 +49,9 @@ dependencies {
4749
implementation include('com.electronwill.night-config:core:3.6.6')
4850
implementation include('com.electronwill.night-config:toml:3.6.6')
4951
implementation include('com.electronwill.night-config:json:3.6.6')
50-
modCompileOnly ("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}") {
51-
exclude(group: "net.fabricmc.fabric-api")
52-
}
52+
modImplementation("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}")
53+
//modImplementation "me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}"
54+
//include "me.shedaniel.cloth:cloth-config-fabric:${project.cloth_version}"
5355
}
5456

5557
processResources {

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ loom_version=1.10-SNAPSHOT
1111

1212
# Mod Properties
1313
mod_version=1.0.0
14-
maven_group=com.junnio.antifreecam
15-
archives_base_name=antifreecam
14+
maven_group=com.junnio.anticonfig
15+
archives_base_name=anticonfig
1616

1717
# Dependencies
1818
fabric_version=0.119.2+1.21.4
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,54 @@
1-
package com.junnio.antifreecam;
1+
package com.junnio.anticonfig;
22

3-
import com.junnio.antifreecam.config.ConfigSync;
4-
import com.junnio.antifreecam.config.ModConfig;
3+
import com.electronwill.nightconfig.core.file.FileConfig;
4+
import com.electronwill.nightconfig.json.JsonFormat;
5+
import com.electronwill.nightconfig.toml.TomlFormat;
6+
import com.junnio.anticonfig.config.ConfigSync;
7+
import com.junnio.anticonfig.config.ModConfig;
58
import me.shedaniel.clothconfig2.gui.ClothConfigScreen;
69
import net.fabricmc.api.ClientModInitializer;
710
import net.fabricmc.fabric.api.client.networking.v1.ClientLoginNetworking;
811
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
12+
import net.fabricmc.loader.api.FabricLoader;
913
import net.minecraft.network.PacketByteBuf;
1014
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
1115
import org.slf4j.Logger;
1216
import org.slf4j.LoggerFactory;
1317

18+
import java.nio.file.Path;
1419
import java.util.HashMap;
1520
import java.util.Map;
1621
import java.util.concurrent.CompletableFuture;
1722

18-
public class AntifreecamClient implements ClientModInitializer {
19-
private static final Logger LOGGER = LoggerFactory.getLogger("AntiFreecam");
23+
public class AnticonfigClient implements ClientModInitializer {
24+
private static final Logger LOGGER = LoggerFactory.getLogger("ClientModInitializer");
2025

2126
@Override
2227
public void onInitializeClient() {
23-
// Load mod config
24-
ModConfig.load();
25-
26-
// Register configs from ModConfig
27-
ModConfig config = ModConfig.getInstance();
28-
for (String configFile : config.getConfigFilesToCheck()) {
29-
ConfigSync.registerConfigToCheck(configFile);
30-
}
31-
3228
// Register config sync handler
3329
ClientLoginNetworking.registerGlobalReceiver(ConfigSync.CONFIG_SYNC_ID, (client, handler, buf, listenerAdder) -> {
3430
// Read server configs
3531
Map<String, String> serverConfigs = buf.readMap(PacketByteBuf::readString, PacketByteBuf::readString);
36-
32+
ConfigScreenHandler.setServerConfigs(serverConfigs);
3733
// Prepare client configs
3834
Map<String, String> clientConfigs = new HashMap<>();
35+
Path configDir = FabricLoader.getInstance().getConfigDir();
36+
37+
// Read only the configs that server requested
3938
for (String filename : serverConfigs.keySet()) {
40-
String content = ConfigSync.getConfigContent(filename);
41-
if (content != null) {
42-
clientConfigs.put(filename, content);
43-
} else {
39+
Path configPath = configDir.resolve(filename);
40+
try {
41+
FileConfig config;
42+
if (filename.endsWith(".json")) {
43+
config = FileConfig.of(configPath, JsonFormat.minimalInstance());
44+
} else if (filename.endsWith(".toml")) {
45+
config = FileConfig.of(configPath, TomlFormat.instance());
46+
} else {
47+
continue;
48+
}
49+
config.load();
50+
clientConfigs.put(filename, config.valueMap().toString());
51+
} catch (Exception e) {
4452
LOGGER.warn("Failed to read client config: {}", filename);
4553
}
4654
}
@@ -51,12 +59,15 @@ public void onInitializeClient() {
5159

5260
return CompletableFuture.completedFuture(response);
5361
});
62+
// Screen events for config changes
5463
ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> {
5564
if (screen instanceof ClothConfigScreen) {
5665
ScreenEvents.remove(screen).register((closedScreen) -> {
57-
System.out.println("Cloth Config screen closed!");
66+
System.out.println("Screen closed");
67+
ConfigScreenHandler.onConfigScreenClose();
5868
});
5969
}
6070
});
6171
}
72+
6273
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.junnio.anticonfig;
2+
3+
import com.electronwill.nightconfig.core.file.FileConfig;
4+
import com.electronwill.nightconfig.json.JsonFormat;
5+
import com.electronwill.nightconfig.toml.TomlFormat;
6+
import com.junnio.anticonfig.config.ConfigSync;
7+
import com.junnio.anticonfig.config.ModConfig;
8+
import com.junnio.anticonfig.net.ConfigScreenSync;
9+
import com.junnio.anticonfig.net.ConfigSyncPayload;
10+
import me.shedaniel.clothconfig2.api.ConfigScreen;
11+
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
12+
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
13+
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
14+
import net.fabricmc.loader.api.FabricLoader;
15+
import net.minecraft.network.PacketByteBuf;
16+
import org.slf4j.Logger;
17+
import org.slf4j.LoggerFactory;
18+
19+
import java.nio.file.Files;
20+
import java.nio.file.Path;
21+
import java.util.HashMap;
22+
import java.util.Map;
23+
24+
public class ConfigScreenHandler {
25+
private static final Logger LOGGER = LoggerFactory.getLogger("ConfigScreenHandler");
26+
private static Map<String, String> lastServerConfigs = new HashMap<>();
27+
28+
public static void init() {
29+
PayloadTypeRegistry.playC2S().register(ConfigSyncPayload.ID, ConfigSyncPayload.CODEC);
30+
}
31+
32+
// Method to store server's config list when received during login
33+
public static void setServerConfigs(Map<String, String> serverConfigs) {
34+
lastServerConfigs = new HashMap<>(serverConfigs);
35+
}
36+
37+
public static void onConfigScreenClose() {
38+
Map<String, String> configsToSync = new HashMap<>();
39+
Path configDir = FabricLoader.getInstance().getConfigDir();
40+
41+
try {
42+
// Only read configs that were requested by server during login
43+
for (String filename : lastServerConfigs.keySet()) {
44+
Path configPath = configDir.resolve(filename);
45+
if (Files.exists(configPath)) {
46+
FileConfig config;
47+
if (filename.endsWith(".json")) {
48+
config = FileConfig.of(configPath, JsonFormat.minimalInstance());
49+
} else if (filename.endsWith(".toml")) {
50+
config = FileConfig.of(configPath, TomlFormat.instance());
51+
} else {
52+
continue;
53+
}
54+
config.load();
55+
configsToSync.put(filename, config.valueMap().toString());
56+
}
57+
}
58+
59+
ConfigSyncPayload payload = new ConfigSyncPayload(configsToSync);
60+
ClientPlayNetworking.send(payload);
61+
62+
} catch (Exception e) {
63+
LOGGER.error("Failed to sync configs after screen close", e);
64+
}
65+
}
66+
}

src/client/java/com/junnio/antifreecam/mixin/client/ExampleClientMixin.java renamed to src/client/java/com/junnio/anticonfig/mixin/client/ExampleClientMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.junnio.antifreecam.mixin.client;
1+
package com.junnio.anticonfig.mixin.client;
22

33
import net.minecraft.client.MinecraftClient;
44
import org.spongepowered.asm.mixin.Mixin;

src/client/resources/antifreecam.client.mixins.json renamed to src/client/resources/anticonfig.client.mixins.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"required": true,
3-
"package": "com.junnio.antifreecam.mixin.client",
3+
"package": "com.junnio.anticonfig.mixin.client",
44
"compatibilityLevel": "JAVA_21",
55
"client": [
66
"ExampleClientMixin"

src/main/java/com/junnio/antifreecam/Antifreecam.java renamed to src/main/java/com/junnio/anticonfig/Anticonfig.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
1-
package com.junnio.antifreecam;
1+
package com.junnio.anticonfig;
22

3-
import com.junnio.antifreecam.config.ConfigSync;
4-
import com.junnio.antifreecam.config.ModConfig;
5-
import com.junnio.antifreecam.net.NetworkManager;
3+
import com.junnio.anticonfig.config.ConfigSync;
4+
import com.junnio.anticonfig.config.ModConfig;
5+
import com.junnio.anticonfig.net.ConfigScreenSync;
6+
import com.junnio.anticonfig.net.NetworkManager;
67
import net.fabricmc.api.ModInitializer;
78
import net.minecraft.util.Identifier;
89
import org.slf4j.Logger;
910
import org.slf4j.LoggerFactory;
1011

11-
public class Antifreecam implements ModInitializer {
12-
public static final String MODID = "antifreecam";
12+
public class Anticonfig implements ModInitializer {
13+
public static final String MODID = "anticonfig";
1314
public static final Logger LOGGER = LoggerFactory.getLogger(MODID);
1415

1516
@Override
1617
public void onInitialize() {
1718
ModConfig.load();
1819
NetworkManager.init();
1920
ConfigSync.registerConfigsFromModConfig();
21+
ConfigScreenSync.initServer();
2022
}
2123

2224
public static Identifier id(String path) {

src/main/java/com/junnio/antifreecam/config/ConfigSync.java renamed to src/main/java/com/junnio/anticonfig/config/ConfigSync.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.junnio.antifreecam.config;
1+
package com.junnio.anticonfig.config;
22

33
import com.electronwill.nightconfig.core.Config;
44
import com.electronwill.nightconfig.core.file.FileConfig;
@@ -16,8 +16,8 @@
1616
import java.util.Map;
1717

1818
public class ConfigSync {
19-
private static final Logger LOGGER = LoggerFactory.getLogger("AntiFreecam");
20-
public static final Identifier CONFIG_SYNC_ID = Identifier.of("antifreecam", "config_sync");
19+
private static final Logger LOGGER = LoggerFactory.getLogger("AntiConfig");
20+
public static final Identifier CONFIG_SYNC_ID = Identifier.of("anticonfig", "config_sync");
2121
private static final Map<String, FileConfig> CONFIGS_TO_CHECK = new HashMap<>();
2222

2323
public static void registerConfigToCheck(String filename) {

src/main/java/com/junnio/antifreecam/config/ModConfig.java renamed to src/main/java/com/junnio/anticonfig/config/ModConfig.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.junnio.antifreecam.config;
1+
package com.junnio.anticonfig.config;
22

33
import com.google.gson.Gson;
44
import com.google.gson.GsonBuilder;
@@ -13,8 +13,8 @@
1313
import java.util.List;
1414

1515
public class ModConfig {
16-
private static final Logger LOGGER = LoggerFactory.getLogger("AntiFreecam");
17-
private static final String CONFIG_FILE = "antifreecam.json";
16+
private static final Logger LOGGER = LoggerFactory.getLogger("AntiConfig");
17+
private static final String CONFIG_FILE = "anticonfig.json";
1818
private static ModConfig INSTANCE;
1919
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
2020

@@ -43,7 +43,7 @@ public static void load() {
4343
try {
4444
String json = Files.readString(configPath);
4545
INSTANCE = GSON.fromJson(json, ModConfig.class);
46-
LOGGER.info("Loaded AntiFreecam config");
46+
LOGGER.info("Loaded AntiConfig config");
4747
} catch (IOException e) {
4848
LOGGER.error("Failed to read config file", e);
4949
INSTANCE = new ModConfig();
@@ -59,7 +59,7 @@ public static void save() {
5959
try {
6060
String json = GSON.toJson(INSTANCE);
6161
Files.writeString(configPath, json);
62-
LOGGER.info("Saved AntiFreecam config");
62+
LOGGER.info("Saved AntiConfig config");
6363
} catch (IOException e) {
6464
LOGGER.error("Failed to save config file", e);
6565
}

src/main/java/com/junnio/antifreecam/mixin/ExampleMixin.java renamed to src/main/java/com/junnio/anticonfig/mixin/ExampleMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.junnio.antifreecam.mixin;
1+
package com.junnio.anticonfig.mixin;
22

33
import net.minecraft.server.MinecraftServer;
44
import org.spongepowered.asm.mixin.Mixin;

0 commit comments

Comments
 (0)