diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga index 4f36d4c03..d7a0dfe49 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/ascii_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78d028fa4e538319dddbc59716480837d2ac12debf788dacda5b935275593db7 +oid sha256:677781e28cfb0892fda6902e47477fd7c5495e931010b0109079906e806d4232 size 327698 diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_bulgarian_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_bulgarian_variable.tga index acbe4482a..8839264be 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_bulgarian_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_bulgarian_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09f3bc2f8788c9b21e6c53d31d65b091da57824246f6d11317d29278135119cb +oid sha256:97a1a2549218e98e75f98d1f39462b60d14cfe44eb5be6265b08194902ac6134 size 122898 diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_serbian_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_serbian_variable.tga index da29c2dce..3bf452075 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_serbian_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_serbian_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eced230d7aa447faf1431033fe86ff3bf17ada385a1a345808ac5d50961bf6a0 +oid sha256:030737c8b254a3fd20d501302e8986a6c5573e44a2e7653e25b12df168f9dfb9 size 122898 diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_variable.tga index 8835eeb55..9e72242c4 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/cyrilic_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9847b297ac125373f0d7c8fadf33f59591ca5d6c1545eaa877ecc0c3b48f9876 +oid sha256:fa8e45c8835a2647723f5eafbdc5c578e47d39ccc7dfbf019d2f64b7e826b247 size 389138 diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/latinExtB_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/latinExtB_variable.tga index 3de01b05e..fd7ac7624 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/latinExtB_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/latinExtB_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:587aa0491704f6bffb0cf741d4fd18aad8c1929d3b559a7bd738de5b65f541f9 +oid sha256:87cc9a99b95788c240c88bf7ade4ca0fb5f71986112e976a13b2c252deeef68b size 266258 diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/latinExt_additional_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/latinExt_additional_variable.tga index 729e55a88..7059e37e4 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/latinExt_additional_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/latinExt_additional_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c242b02f1744c7150a3fc5e171477afa9ea30bc0f5d0c45733d14b1a2bddcea4 +oid sha256:fa4b0b03ac474f93056e650c207215579bb61a3bed8ea5c982818e929ceb5c4c size 327698 diff --git a/assets/mods/LoadOrder.csv b/assets/mods/LoadOrder.csv index 1d47f6ac0..2fd792740 100644 --- a/assets/mods/LoadOrder.csv +++ b/assets/mods/LoadOrder.csv @@ -3,4 +3,4 @@ # You can disable basegame, but we don't recommend. basegame -#dwarventech +dwarventech diff --git a/assets/mods/basegame/KotlinScriptTest.kts b/assets/mods/basegame/KotlinScriptTest.kts deleted file mode 100644 index f8d6610b3..000000000 --- a/assets/mods/basegame/KotlinScriptTest.kts +++ /dev/null @@ -1 +0,0 @@ -println("Hello, script !") \ No newline at end of file diff --git a/assets/mods/basegame/LuaScriptTest.lua b/assets/mods/basegame/LuaScriptTest.lua deleted file mode 100644 index 406f745b9..000000000 --- a/assets/mods/basegame/LuaScriptTest.lua +++ /dev/null @@ -1 +0,0 @@ -print "Hello, world!" \ No newline at end of file diff --git a/assets/mods/basegame/basegame_groovy_delete_pending b/assets/mods/basegame/basegame_groovy_delete_pending deleted file mode 100644 index 6b11c7931..000000000 --- a/assets/mods/basegame/basegame_groovy_delete_pending +++ /dev/null @@ -1,11 +0,0 @@ -import net.torvald.terrarum.ModMgr - -/** - * Created by minjaesong on 2017-04-26. - */ - -static void invoke(String module) { - ModMgr.GameBlockLoader.invoke(module) - ModMgr.GameItemLoader.invoke(module) - ModMgr.GameLanguageLoader.invoke(module) -} diff --git a/assets/mods/basegame/test.groovy b/assets/mods/basegame/test.groovy deleted file mode 100644 index dcff01b73..000000000 --- a/assets/mods/basegame/test.groovy +++ /dev/null @@ -1,3 +0,0 @@ - -println("Hello, world!!") -return 42 \ No newline at end of file diff --git a/lib/TerrarumSansBitmap.jar b/lib/TerrarumSansBitmap.jar index 5c7f32e67..1ca4a70fb 100644 Binary files a/lib/TerrarumSansBitmap.jar and b/lib/TerrarumSansBitmap.jar differ diff --git a/src/net/torvald/terrarum/ModMgr.kt b/src/net/torvald/terrarum/ModMgr.kt index 3c663f754..af65209c9 100644 --- a/src/net/torvald/terrarum/ModMgr.kt +++ b/src/net/torvald/terrarum/ModMgr.kt @@ -102,116 +102,119 @@ object ModMgr { fun getTitleScreen(batch: SpriteBatch): IngameInstance? = entryPointClasses.getOrNull(0)?.getTitleScreen(batch) init { - // load modules - val loadOrderCSVparser = CSVParser.parse( - FileSystems.getDefault().getPath("$modDir/LoadOrder.csv").toFile(), - Charsets.UTF_8, - CSVFormat.DEFAULT.withCommentMarker('#') - ) - val loadOrder = loadOrderCSVparser.records - loadOrderCSVparser.close() + val loadOrderFile = FileSystems.getDefault().getPath("$modDir/LoadOrder.csv").toFile() + if (loadOrderFile.exists()) { + + // load modules + val loadOrderCSVparser = CSVParser.parse( + loadOrderFile, + Charsets.UTF_8, + CSVFormat.DEFAULT.withCommentMarker('#') + ) + val loadOrder = loadOrderCSVparser.records + loadOrderCSVparser.close() - loadOrder.forEachIndexed { index, it -> - val moduleName = it[0] - this.loadOrder.add(moduleName) - printmsg(this, "Loading module $moduleName") + loadOrder.forEachIndexed { index, it -> + val moduleName = it[0] + this.loadOrder.add(moduleName) + printmsg(this, "Loading module $moduleName") - try { - val modMetadata = Properties() - modMetadata.load(FileInputStream("$modDir/$moduleName/$metaFilename")) + try { + val modMetadata = Properties() + modMetadata.load(FileInputStream("$modDir/$moduleName/$metaFilename")) - if (File("$modDir/$moduleName/$defaultConfigFilename").exists()) { - val defaultConfig = JsonFetcher("$modDir/$moduleName/$defaultConfigFilename") - // read config and store it to the game + if (File("$modDir/$moduleName/$defaultConfigFilename").exists()) { + val defaultConfig = JsonFetcher("$modDir/$moduleName/$defaultConfigFilename") + // read config and store it to the game - // write to user's config file - } + // write to user's config file + } - val properName = modMetadata.getProperty("propername") - val description = modMetadata.getProperty("description") - val author = modMetadata.getProperty("author") - val packageName = modMetadata.getProperty("package") - val entryPoint = modMetadata.getProperty("entrypoint") - val releaseDate = modMetadata.getProperty("releasedate") - val version = modMetadata.getProperty("version") - val jar = modMetadata.getProperty("jar") - val dependency = modMetadata.getProperty("dependency").split(Regex(""";[ ]*""")).toTypedArray() - val isDir = FileSystems.getDefault().getPath("$modDir/$moduleName").toFile().isDirectory - moduleInfo[moduleName] = ModuleMetadata(index, isDir, Gdx.files.internal("$modDir/$moduleName/icon.png"), properName, description, author, packageName, entryPoint, releaseDate, version, jar, dependency) + val properName = modMetadata.getProperty("propername") + val description = modMetadata.getProperty("description") + val author = modMetadata.getProperty("author") + val packageName = modMetadata.getProperty("package") + val entryPoint = modMetadata.getProperty("entrypoint") + val releaseDate = modMetadata.getProperty("releasedate") + val version = modMetadata.getProperty("version") + val jar = modMetadata.getProperty("jar") + val dependency = modMetadata.getProperty("dependency").split(Regex(""";[ ]*""")).toTypedArray() + val isDir = FileSystems.getDefault().getPath("$modDir/$moduleName").toFile().isDirectory + moduleInfo[moduleName] = ModuleMetadata(index, isDir, Gdx.files.internal("$modDir/$moduleName/icon.png"), properName, description, author, packageName, entryPoint, releaseDate, version, jar, dependency) - printdbg(this, moduleInfo[moduleName]) + printdbg(this, moduleInfo[moduleName]) - // run entry script in entry point - if (entryPoint.isNotBlank()) { - var newClass: Class<*>? = null - try { - // for modules that has JAR defined - if (jar.isNotBlank()) { - val urls = arrayOf() + // run entry script in entry point + if (entryPoint.isNotBlank()) { + var newClass: Class<*>? = null + try { + // for modules that has JAR defined + if (jar.isNotBlank()) { + val urls = arrayOf() - val cl = JarFileLoader(urls) - cl.addFile("${File(modDir).absolutePath}/$moduleName/$jar") - moduleClassloader[moduleName] = cl - newClass = cl.loadClass(entryPoint) + val cl = JarFileLoader(urls) + cl.addFile("${File(modDir).absolutePath}/$moduleName/$jar") + moduleClassloader[moduleName] = cl + newClass = cl.loadClass(entryPoint) + } + // for modules that are not (meant to be used by the "basegame" kind of modules) + else { + newClass = Class.forName(entryPoint) + } + } + catch (e: Throwable) { + printdbgerr(this, "$moduleName failed to load, skipping...") + printdbgerr(this, "\t$e") + print(App.csiR); e.printStackTrace(System.out); print(App.csi0) + + logError(LoadErrorType.YOUR_FAULT, moduleName, e) + + moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + } + + if (newClass != null) { + val newClassConstructor = newClass.getConstructor(/* no args defined */) + val newClassInstance = newClassConstructor.newInstance(/* no args defined */) + + entryPointClasses.add(newClassInstance as ModuleEntryPoint) + (newClassInstance as ModuleEntryPoint).invoke() + + printdbg(this, "$moduleName loaded successfully") } - // for modules that are not (meant to be used by the "basegame" kind of modules) else { - newClass = Class.forName(entryPoint) + moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + printdbg(this, "$moduleName did not load...") } - } - catch (e: Throwable) { - printdbgerr(this, "$moduleName failed to load, skipping...") - printdbgerr(this, "\t$e") - print(App.csiR); e.printStackTrace(System.out); print(App.csi0) - logError(LoadErrorType.YOUR_FAULT, moduleName, e) - - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } } - if (newClass != null) { - val newClassConstructor = newClass.getConstructor(/* no args defined */) - val newClassInstance = newClassConstructor.newInstance(/* no args defined */) + printdbg(this, "Module $moduleName processed") + } + catch (noSuchModule: FileNotFoundException) { + printdbgerr(this, "No such module: $moduleName, skipping...") - entryPointClasses.add(newClassInstance as ModuleEntryPoint) - (newClassInstance as ModuleEntryPoint).invoke() + logError(LoadErrorType.NOT_EVEN_THERE, moduleName) - printdbg(this, "$moduleName loaded successfully") - } - else { - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } - printdbg(this, "$moduleName did not load...") - } + moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + } + catch (e: Throwable) { + printdbgerr(this, "There was an error while loading module $moduleName") + printdbgerr(this, "\t$e") + print(App.csiR); e.printStackTrace(System.out); print(App.csi0) + + logError(LoadErrorType.YOUR_FAULT, moduleName, e) + + moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } + } + finally { } - - printdbg(this, "Module $moduleName processed") - } - catch (noSuchModule: FileNotFoundException) { - printdbgerr(this, "No such module: $moduleName, skipping...") - - logError(LoadErrorType.NOT_EVEN_THERE, moduleName) - - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } - } - catch (e: Throwable) { - printdbgerr(this, "There was an error while loading module $moduleName") - printdbgerr(this, "\t$e") - print(App.csiR); e.printStackTrace(System.out); print(App.csi0) - - logError(LoadErrorType.YOUR_FAULT, moduleName, e) - - moduleInfo.remove(moduleName)?.let { moduleInfoErrored[moduleName] = it } - } - finally { - } } - } operator fun invoke() { } diff --git a/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt b/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt index 4bcd8f507..fcc839b40 100644 --- a/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt +++ b/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt @@ -27,10 +27,10 @@ Aucun module n’est actuellement chargé. Veuillez reconfigurer votre ordre de chargement sur : 現在ロードされたモジュールがありません。 -次のパスでロードオーダーを再設定してください。 +次のファイルでロードオーダーを再設定してください。 현재 불러와진 모듈이 없습니다. -다음의 경로에서 불러오기 순서를 재설정하십시오. +다음의 파일에서 불러오기 순서를 재설정하십시오. В настоящее время модуль не загружен. Измените конфигурацию вашего порядка загрузки на: