Skip to content

Commit

Permalink
Remove hardcoded 128 block train update limit
Browse files Browse the repository at this point in the history
  • Loading branch information
Kenny-Hui committed Dec 27, 2024
1 parent f0481a8 commit b9176a1
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 6 deletions.
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,19 @@ Currently supports 1.19.2 - 1.19.4
- Use elapsed time to ensure server train runs at a consistent rate regardless of TPS.

## Config
The config file are automatically generated in `config/mtrotp.json` once the client starts up.
The client config file are automatically generated in `config/mtrotp.json` once the client starts up.

| Config Key | Default Value | Description | Effect |
|---------------------|---------------|----------------------------------------------------------------------------------------------------|----------|
| cullTrain | true | Use frustum culling to skip rendering train cars that are outside of camera bounds to improve FPS. | Varies |
| dashboardLazyRender | true | Optimize the dashboard world map to improve FPS. | Varies |

The server config file are automatically generated in `config/mtrotp_server.json` once the server starts up.

| Config Key | Default Value | Description | Effect |
|---------------------|---------------|-----------------------------------------------------------------------------------------------|--------|
| trainUpdateDistance | 128 | This removes the hardcoded 128 blocks radius train update in MTR, allowing for customization. | N/A |

## Bugs/Suggestions
You may open an GitHub issue [here](https://github.com/DistrictOfJoban/MTR-OTP/issues)

Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/lx862/mtrotp/MTROTP.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.lx862.mtrotp;

import com.lx862.mtrotp.config.ServerConfig;
import net.fabricmc.api.ModInitializer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand All @@ -9,6 +10,7 @@ public class MTROTP implements ModInitializer {
@Override
public void onInitialize() {
TickManager.initialize();
ServerConfig.load();
LOGGER.info("[MTR-OTP] MTR-OTP initialized \\(^▽^)/");
}
}
7 changes: 3 additions & 4 deletions src/main/java/com/lx862/mtrotp/config/ClientConfig.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.lx862.mtrotp.config;

import com.google.gson.*;
import com.lx862.mtrotp.MTROTP;
import com.lx862.mtrotp.MTROTPClient;
import net.fabricmc.loader.api.FabricLoader;

Expand All @@ -17,12 +16,12 @@ public class ClientConfig {

public static void load() {
if(!Files.exists(CONFIG_PATH)) {
MTROTPClient.LOGGER.info("[MTR-OTP] Config not found, generating one...");
MTROTPClient.LOGGER.info("[MTR-OTP] Client config not found, generating one...");
writeConfig();
return;
}

MTROTPClient.LOGGER.info("[MTR-OTP] Reading config...");
MTROTPClient.LOGGER.info("[MTR-OTP] Reading client config...");
try {
final JsonObject jsonConfig = new JsonParser().parse(String.join("", Files.readAllLines(CONFIG_PATH))).getAsJsonObject();
try {
Expand All @@ -39,7 +38,7 @@ public static void load() {
}

public static void writeConfig() {
MTROTPClient.LOGGER.info("[MTR-OTP] Writing Config...");
MTROTPClient.LOGGER.info("[MTR-OTP] Writing client config...");
final JsonObject jsonConfig = new JsonObject();
jsonConfig.addProperty("cullTrain", cullTrain);
jsonConfig.addProperty("dashboardLazyRender", dashboardLazyRender);
Expand Down
47 changes: 47 additions & 0 deletions src/main/java/com/lx862/mtrotp/config/ServerConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.lx862.mtrotp.config;

import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.lx862.mtrotp.MTROTPClient;
import net.fabricmc.loader.api.FabricLoader;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;

public class ServerConfig {
private static final Path CONFIG_PATH = Paths.get(FabricLoader.getInstance().getConfigDir().toString(), "mtrotp_server.json");
public static int trainUpdateDistance = 128;

public static void load() {
if(!Files.exists(CONFIG_PATH)) {
MTROTPClient.LOGGER.info("[MTR-OTP] Server config not found, generating one...");
writeConfig();
return;
}

MTROTPClient.LOGGER.info("[MTR-OTP] Reading server config...");
try {
final JsonObject jsonConfig = JsonParser.parseString(String.join("", Files.readAllLines(CONFIG_PATH))).getAsJsonObject();
try {
trainUpdateDistance = jsonConfig.get("trainUpdateDistance").getAsInt();
} catch (Exception ignored) {}
} catch (Exception e) {
e.printStackTrace();
}
}

public static void writeConfig() {
MTROTPClient.LOGGER.info("[MTR-OTP] Writing server config...");
final JsonObject jsonConfig = new JsonObject();
jsonConfig.addProperty("trainUpdateDistance", trainUpdateDistance);

try {
Files.write(CONFIG_PATH, Collections.singleton(new GsonBuilder().setPrettyPrinting().create().toJson(jsonConfig)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
15 changes: 15 additions & 0 deletions src/main/java/com/lx862/mtrotp/mixin/TrainServerMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.lx862.mtrotp.mixin;

import com.lx862.mtrotp.config.ServerConfig;
import mtr.data.TrainServer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

@Mixin(value = TrainServer.class, remap = false)
public class TrainServerMixin {
@ModifyArg(method = "handlePositions", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/AABB;inflate(D)Lnet/minecraft/world/phys/AABB;"))
public double modifyAABBBoundary(double d) {
return ServerConfig.trainUpdateDistance;
}
}
3 changes: 2 additions & 1 deletion src/main/resources/mtrotp.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"package": "com.lx862.mtrotp.mixin",
"compatibilityLevel": "JAVA_17",
"mixins": [
"SidingMixin"
"SidingMixin",
"TrainServerMixin"
],
"client": [
"JonModelTrainRendererMixin",
Expand Down

0 comments on commit b9176a1

Please sign in to comment.