55import java .net .URI ;
66import java .nio .file .Path ;
77import java .util .Collections ;
8+ import java .util .Optional ;
89import java .util .concurrent .Callable ;
910import java .util .regex .Matcher ;
1011import java .util .regex .Pattern ;
3637@ Slf4j
3738public class InstallPaperCommand implements Callable <Integer > {
3839
40+ public static final String VERSION_METADATA_NAME = "version.json" ;
3941 @ ArgGroup
4042 Inputs inputs = new Inputs ();
4143
@@ -164,11 +166,12 @@ private Result downloadCustom(URI downloadUrl) {
164166 .flatMap (serverJar -> {
165167 final String version ;
166168 try {
167- version = extractVersionFromJar (serverJar );
169+ version = Optional .ofNullable (extractVersionFromJar (serverJar ))
170+ .orElseGet (() -> {
171+ log .warn ("Version metadata {} was missing from server jar: {}" , VERSION_METADATA_NAME , serverJar );
172+ return "custom" ;
173+ });
168174
169- if (version == null ) {
170- return Mono .error (new GenericException ("Version metadata was not available from custom server jar" ));
171- }
172175 } catch (IOException e ) {
173176 return Mono .error (new GenericException ("Failed to extract version from custom server jar" , e ));
174177 }
@@ -188,7 +191,7 @@ private Result downloadCustom(URI downloadUrl) {
188191 }
189192
190193 private String extractVersionFromJar (Path serverJar ) throws IOException {
191- final VersionMeta versionMeta = IoStreams .readFileFromZip (serverJar , "version.json" , in ->
194+ final VersionMeta versionMeta = IoStreams .readFileFromZip (serverJar , VERSION_METADATA_NAME , in ->
192195 ObjectMappers .defaultMapper ().readValue (in , VersionMeta .class )
193196 );
194197 if (versionMeta == null ) {
0 commit comments