diff options
| author | 2025-08-20 20:13:18 +0300 | |
|---|---|---|
| committer | 2025-08-20 18:13:18 +0100 | |
| commit | b0c154881683d6d5cb25569db32037c35498facb (patch) | |
| tree | 8d2d08c9ea90bc9910c1e4c98d715a9ee294ba65 /enigma-server/src | |
| parent | Optimize JAR indexing (#552) (diff) | |
| download | enigma-fork-b0c154881683d6d5cb25569db32037c35498facb.tar.gz enigma-fork-b0c154881683d6d5cb25569db32037c35498facb.tar.xz enigma-fork-b0c154881683d6d5cb25569db32037c35498facb.zip | |
Support multiple input jars (#553)
* Support multiple input jars
This is needed for FabricMC/fabric-loom#1354.
* Remove unnecessary null check in GuiController.reloadAll
* Remove outdated TODO
Diffstat (limited to 'enigma-server/src')
| -rw-r--r-- | enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java b/enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java index fbee40d..f20a9d2 100644 --- a/enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java +++ b/enigma-server/src/main/java/cuchaz/enigma/network/DedicatedEnigmaServer.java | |||
| @@ -5,6 +5,7 @@ import java.io.PrintWriter; | |||
| 5 | import java.nio.file.Files; | 5 | import java.nio.file.Files; |
| 6 | import java.nio.file.Path; | 6 | import java.nio.file.Path; |
| 7 | import java.nio.file.Paths; | 7 | import java.nio.file.Paths; |
| 8 | import java.util.List; | ||
| 8 | import java.util.concurrent.BlockingQueue; | 9 | import java.util.concurrent.BlockingQueue; |
| 9 | import java.util.concurrent.Executors; | 10 | import java.util.concurrent.Executors; |
| 10 | import java.util.concurrent.LinkedBlockingDeque; | 11 | import java.util.concurrent.LinkedBlockingDeque; |
| @@ -55,7 +56,7 @@ public class DedicatedEnigmaServer extends EnigmaServer { | |||
| 55 | public static void main(String[] args) { | 56 | public static void main(String[] args) { |
| 56 | OptionParser parser = new OptionParser(); | 57 | OptionParser parser = new OptionParser(); |
| 57 | 58 | ||
| 58 | OptionSpec<Path> jarOpt = parser.accepts("jar", "Jar file to open at startup").withRequiredArg().required().withValuesConvertedBy(PathConverter.INSTANCE); | 59 | OptionSpec<Path> jarOpt = parser.accepts("jar", "Jar file to open at startup; if there are multiple jars, the order must be the same between the server and all clients").withRequiredArg().required().withValuesConvertedBy(PathConverter.INSTANCE); |
| 59 | 60 | ||
| 60 | OptionSpec<Path> mappingsOpt = parser.accepts("mappings", "Mappings file to open at startup").withRequiredArg().required().withValuesConvertedBy(PathConverter.INSTANCE); | 61 | OptionSpec<Path> mappingsOpt = parser.accepts("mappings", "Mappings file to open at startup").withRequiredArg().required().withValuesConvertedBy(PathConverter.INSTANCE); |
| 61 | 62 | ||
| @@ -68,7 +69,7 @@ public class DedicatedEnigmaServer extends EnigmaServer { | |||
| 68 | OptionSpec<Path> logFileOpt = parser.accepts("log", "The log file to write to").withRequiredArg().withValuesConvertedBy(PathConverter.INSTANCE).defaultsTo(Paths.get("log.txt")); | 69 | OptionSpec<Path> logFileOpt = parser.accepts("log", "The log file to write to").withRequiredArg().withValuesConvertedBy(PathConverter.INSTANCE).defaultsTo(Paths.get("log.txt")); |
| 69 | 70 | ||
| 70 | OptionSet parsedArgs = parser.parse(args); | 71 | OptionSet parsedArgs = parser.parse(args); |
| 71 | Path jar = parsedArgs.valueOf(jarOpt); | 72 | List<Path> jars = parsedArgs.valuesOf(jarOpt); |
| 72 | Path mappingsFile = parsedArgs.valueOf(mappingsOpt); | 73 | Path mappingsFile = parsedArgs.valueOf(mappingsOpt); |
| 73 | Path profileFile = parsedArgs.valueOf(profileOpt); | 74 | Path profileFile = parsedArgs.valueOf(profileOpt); |
| 74 | int port = parsedArgs.valueOf(portOpt); | 75 | int port = parsedArgs.valueOf(portOpt); |
| @@ -85,12 +86,12 @@ public class DedicatedEnigmaServer extends EnigmaServer { | |||
| 85 | DedicatedEnigmaServer server; | 86 | DedicatedEnigmaServer server; |
| 86 | 87 | ||
| 87 | try { | 88 | try { |
| 88 | byte[] checksum = Utils.zipSha1(parsedArgs.valueOf(jarOpt)); | 89 | byte[] checksum = Utils.zipSha1(jars.toArray(new Path[0])); |
| 89 | 90 | ||
| 90 | EnigmaProfile profile = EnigmaProfile.read(profileFile); | 91 | EnigmaProfile profile = EnigmaProfile.read(profileFile); |
| 91 | Enigma enigma = Enigma.builder().setProfile(profile).build(); | 92 | Enigma enigma = Enigma.builder().setProfile(profile).build(); |
| 92 | System.out.println("Indexing Jar..."); | 93 | System.out.println("Indexing Jar..."); |
| 93 | EnigmaProject project = enigma.openJar(jar, new ClasspathClassProvider(), ProgressListener.none()); | 94 | EnigmaProject project = enigma.openJars(jars, new ClasspathClassProvider(), ProgressListener.none()); |
| 94 | 95 | ||
| 95 | MappingFormat mappingFormat = MappingFormat.ENIGMA_DIRECTORY; | 96 | MappingFormat mappingFormat = MappingFormat.ENIGMA_DIRECTORY; |
| 96 | EntryRemapper mappings; | 97 | EntryRemapper mappings; |