From f3981decce59a85e1a95169166f342bd65b55568 Mon Sep 17 00:00:00 2001 From: Matthias <12-build@web.de> Date: Sat, 18 Nov 2023 21:44:43 +0100 Subject: [PATCH 1/6] feat(monstera): migration to monstera --- build.gradle.kts | 38 ++++++++++++------- src/main/kotlin/com/tcreative/addons/Main.kt | 18 ++++----- .../tcreative/addons/soldier/SoldierMelee.kt | 16 ++++---- .../tcreative/addons/soldier/SoldierRange.kt | 12 +++--- .../tcreative/addons/soldier/SoldierShared.kt | 37 +++++++++--------- .../kotlin/com/tcreative/addons/vase/Vase.kt | 8 ++-- 6 files changed, 68 insertions(+), 61 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 42fd56e..6d29494 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - kotlin("jvm") version "1.7.20" + kotlin("jvm") version "1.9.20" id("application") } @@ -11,24 +11,29 @@ val localEnvFile = File( if (localEnvFile.exists()) { //set project extras apply(from = localEnvFile.path) +} else { + //gitlab project that has access to the repo + project.extra.set("gitlab_token", System.getenv("CI_JOB_TOKEN") as String) } -group = "com.timoliacreative" +group = "com.lotsofpixelsstudios" version = "1" +fun MavenArtifactRepository.authTcGitlab() { + credentials(HttpHeaderCredentials::class) { + name = if (localEnvFile.exists()) "Private-Token" else "Job-Token" + value = project.extra["gitlab_token"] as String + } + authentication { + create("header") + } +} + repositories { mavenCentral() maven { - url = uri(project.extra["maven_repo_url"] as String) - name = "Reposilite" - - credentials { - username = project.extra["maven_repo_user"] as String - password = project.extra["maven_repo_pw"] as String - } - authentication { - create("basic") - } + url = uri("https://git.timoliacreative.de/api/v4/projects/102/packages/maven") + authTcGitlab() } } @@ -38,8 +43,13 @@ application { dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib") - implementation(group = "com.timoliacreative", name = "tranclate", version = "2.6.0.8") - implementation(group = "com.timoliacreative", name = "tranclate-std-lib", version = "0.8.0.0") + implementation("com.lotsofpixelsstudios:monstera:0.2.4") + implementation("com.lotsofpixelsstudios:monstera-std-lib:0.10-monstera-2") + + // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic + implementation("ch.qos.logback:logback-classic:1.4.11") + // https://mvnrepository.com/artifact/org.slf4j/slf4j-api + implementation("org.slf4j:slf4j-api:2.0.9") //test testImplementation(kotlin("test")) diff --git a/src/main/kotlin/com/tcreative/addons/Main.kt b/src/main/kotlin/com/tcreative/addons/Main.kt index 6c208a9..680ab41 100644 --- a/src/main/kotlin/com/tcreative/addons/Main.kt +++ b/src/main/kotlin/com/tcreative/addons/Main.kt @@ -1,24 +1,23 @@ package com.tcreative.addons +import com.lop.devtools.monstera.addon.addon +import com.lop.devtools.monstera.addon.dev.zipper.zipWorld +import com.lop.devtools.monstera.config +import com.lop.devtools.monstera.files.getResource import com.tcreative.addons.soldier.soldierMelee import com.tcreative.addons.soldier.soldierRange import com.tcreative.addons.soldier.soldierSpawnRules import com.tcreative.addons.vase.vase -import com.tcreative.devtools.tranclate.builder.getResource -import com.tcreative.devtools.tranclate.builder.zipper.zipWorld -import com.tcreative.devtools.tranclate.systemaddon.AddonConfig -import com.tcreative.devtools.tranclate.systemaddon.addon fun main(args: Array) { - val config = AddonConfig { - projectName = "Odyssey Demo" + val config = config("Odyssey Demo") { projectShort = "od" world = getResource("world/od_world") - version = arrayListOf(1, 1, 0) + version = arrayListOf(1, 2, 0) packIcon = getResource("general/pack.png") } - val prop = addon(config) { + addon(config) { manifestMinEnginVersion = arrayListOf(1, 18, 0) soldierRange(this) @@ -31,8 +30,7 @@ fun main(args: Array) { if (args.contains("zip-world")) { //create a usable mcaddon or mcworld file zipWorld( - getResource("world/od_world"), - properties = prop, + config, targetName = "odyssey" ) } diff --git a/src/main/kotlin/com/tcreative/addons/soldier/SoldierMelee.kt b/src/main/kotlin/com/tcreative/addons/soldier/SoldierMelee.kt index 5a69f40..de31d42 100644 --- a/src/main/kotlin/com/tcreative/addons/soldier/SoldierMelee.kt +++ b/src/main/kotlin/com/tcreative/addons/soldier/SoldierMelee.kt @@ -1,13 +1,12 @@ package com.tcreative.addons.soldier -import com.tcreative.devtools.tranclate.addon.molang.Query -import com.tcreative.devtools.tranclate.addon.molang.and -import com.tcreative.devtools.tranclate.builder.getResource -import com.tcreative.devtools.tranclate.systemaddon.Addon +import com.lop.devtools.monstera.addon.Addon +import com.lop.devtools.monstera.addon.molang.Query +import com.lop.devtools.monstera.addon.molang.and +import com.lop.devtools.monstera.files.getResource fun soldierMelee(systemAddon: Addon) { - systemAddon.entity { - name("soldier_melee", "Soldier") + systemAddon.entity("soldier_melee", "Soldier") { loadTextures(this) resource { animation(getResource("entity/animations/soldier_npc.animation.json")) @@ -18,7 +17,7 @@ fun soldierMelee(systemAddon: Addon) { } } sharedResAnimControllers(this) - animationController("attack") { + animationController("attack_debug") { initialState = "default" animStates { animState("default") { @@ -49,8 +48,9 @@ fun soldierMelee(systemAddon: Addon) { attack { damage = 7 } + equipItem() equipment { - table("soldier_melee") { + table(addon, "soldier_melee") { pool(rolls = 1) { entry(type = "item", name = "minecraft:golden_sword", weight = 1) { diff --git a/src/main/kotlin/com/tcreative/addons/soldier/SoldierRange.kt b/src/main/kotlin/com/tcreative/addons/soldier/SoldierRange.kt index b1f7a9f..80e98b4 100644 --- a/src/main/kotlin/com/tcreative/addons/soldier/SoldierRange.kt +++ b/src/main/kotlin/com/tcreative/addons/soldier/SoldierRange.kt @@ -1,12 +1,10 @@ package com.tcreative.addons.soldier -import com.tcreative.devtools.tranclate.builder.getResource -import com.tcreative.devtools.tranclate.systemaddon.Addon -import com.tcreative.devtools.tranclate.systemaddon.SystemAddon +import com.lop.devtools.monstera.addon.Addon +import com.lop.devtools.monstera.files.getResource fun soldierRange(systemAddon: Addon) { - systemAddon.entity { - name("soldier_range", "Soldier") + systemAddon.entity("soldier_range", "Soldier") { loadTextures(this) resource { animation(getResource("entity/animations/soldier_npc.animation.json")) @@ -36,14 +34,14 @@ fun soldierRange(systemAddon: Addon) { damage = 5 } equipment { - table("soldier_range") { + table(addon, "soldier_range") { pool(rolls = 1) { entry(type = "item", name = "minecraft:bow", weight = 1) { } } } } loot { - genTable("soldier") { + genTable("soldier", addon) { pool { entry(type = "item", name = "arrow", weight = 10) { functionSetCount(4) diff --git a/src/main/kotlin/com/tcreative/addons/soldier/SoldierShared.kt b/src/main/kotlin/com/tcreative/addons/soldier/SoldierShared.kt index b487c61..b0147c4 100644 --- a/src/main/kotlin/com/tcreative/addons/soldier/SoldierShared.kt +++ b/src/main/kotlin/com/tcreative/addons/soldier/SoldierShared.kt @@ -1,18 +1,18 @@ package com.tcreative.addons.soldier -import com.tcreative.devtools.tranclate.Props.namespace -import com.tcreative.devtools.tranclate.addon.beh.entites.BehEntityComponentGroups -import com.tcreative.devtools.tranclate.addon.beh.entites.BehEntityComponents -import com.tcreative.devtools.tranclate.addon.beh.entites.data.Subject -import com.tcreative.devtools.tranclate.addon.beh.entites.events.BehEntityEvents -import com.tcreative.devtools.tranclate.addon.beh.spawnrules.PopulationControl -import com.tcreative.devtools.tranclate.addon.molang.Query -import com.tcreative.devtools.tranclate.builder.getResource -import com.tcreative.devtools.tranclate.builder.spawnRules -import com.tcreative.devtools.tranclate.systemaddon.entityapi.AddonEntity -import com.tcreative.devtools.tranclate.systemaddon.entityapi.resource.AddonEntityRes +import com.lop.devtools.monstera.addon.Addon +import com.lop.devtools.monstera.addon.entity.Entity +import com.lop.devtools.monstera.addon.entity.resource.ResourceEntity +import com.lop.devtools.monstera.addon.molang.Query +import com.lop.devtools.monstera.files.beh.entitiy.BehEntityComponentGroups +import com.lop.devtools.monstera.files.beh.entitiy.BehEntityComponents +import com.lop.devtools.monstera.files.beh.entitiy.data.Subject +import com.lop.devtools.monstera.files.beh.entitiy.events.BehEntityEvents +import com.lop.devtools.monstera.files.beh.spawnrules.BehSpawnRules +import com.lop.devtools.monstera.files.beh.spawnrules.PopulationControl +import com.lop.devtools.monstera.files.getResource -fun loadTextures(addonEntity: AddonEntity) { +fun loadTextures(addonEntity: Entity) { with(addonEntity) { resource { textureLayer( @@ -53,8 +53,9 @@ fun spawnEvent(behEntityEvents: BehEntityEvents) { } } -fun soldierSpawnRules() { - spawnRules("soldier_melee") { +fun Addon.soldierSpawnRules() { + val namespace = config.namespace + BehSpawnRules().apply { description("$namespace:soldier_melee", PopulationControl.MONSTER) condition { spawnOnSurface() @@ -63,8 +64,8 @@ fun soldierSpawnRules() { minSize(2) } } - } - spawnRules("soldier_range") { + }.unsafe.build("soldier_melee", config.paths.behSpawnRules) + BehSpawnRules().apply { description("$namespace:soldier_range", PopulationControl.MONSTER) condition { spawnOnSurface() @@ -73,7 +74,7 @@ fun soldierSpawnRules() { minSize(1) } } - } + }.unsafe.build("soldier_range", config.paths.behSpawnRules) } fun sharedComponents(components: BehEntityComponents) { @@ -135,7 +136,7 @@ fun sharedComponents(components: BehEntityComponents) { } } -fun sharedResAnimControllers(ent: AddonEntityRes) { +fun sharedResAnimControllers(ent: ResourceEntity) { with(ent) { animationController("general") { initialState = "default" diff --git a/src/main/kotlin/com/tcreative/addons/vase/Vase.kt b/src/main/kotlin/com/tcreative/addons/vase/Vase.kt index b69149e..ee625fd 100644 --- a/src/main/kotlin/com/tcreative/addons/vase/Vase.kt +++ b/src/main/kotlin/com/tcreative/addons/vase/Vase.kt @@ -1,15 +1,15 @@ package com.tcreative.addons.vase -import com.tcreative.devtools.stdlib.furnitures.furniture -import com.tcreative.devtools.tranclate.builder.getResource -import com.tcreative.devtools.tranclate.systemaddon.Addon +import com.lop.devtools.monstera.addon.Addon +import com.lop.devtools.monstera.files.getResource +import com.lop.devtools.stdlib.furnitures.furniture fun vase(addon: Addon) { furniture("vase", "Vase", addon) { texture = getResource("vase/vase2.png") geometry = getResource("vase/vase2.geo.json") icon { - eggByFile(getResource("vase/vase2_item.png")) + eggByFile(getResource("vase/vase2_item.png"), addon) } height = 0.6f width = 0.2f From bd6b2f0e35437cbe9f9d185eda1440dceb431aa6 Mon Sep 17 00:00:00 2001 From: Matthias <12-build@web.de> Date: Sat, 18 Nov 2023 21:55:41 +0100 Subject: [PATCH 2/6] reslove merge conflict --- src/main/kotlin/com/tcreative/addons/Main.kt | 2 ++ src/main/kotlin/com/tcreative/addons/vase/VaseBlock.kt | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/tcreative/addons/Main.kt b/src/main/kotlin/com/tcreative/addons/Main.kt index 680ab41..637fb35 100644 --- a/src/main/kotlin/com/tcreative/addons/Main.kt +++ b/src/main/kotlin/com/tcreative/addons/Main.kt @@ -8,6 +8,7 @@ import com.tcreative.addons.soldier.soldierMelee import com.tcreative.addons.soldier.soldierRange import com.tcreative.addons.soldier.soldierSpawnRules import com.tcreative.addons.vase.vase +import com.tcreative.addons.vase.vaseBlock fun main(args: Array) { val config = config("Odyssey Demo") { @@ -25,6 +26,7 @@ fun main(args: Array) { soldierSpawnRules() vase(this) + vaseBlock() } if (args.contains("zip-world")) { diff --git a/src/main/kotlin/com/tcreative/addons/vase/VaseBlock.kt b/src/main/kotlin/com/tcreative/addons/vase/VaseBlock.kt index e238b68..9801a07 100644 --- a/src/main/kotlin/com/tcreative/addons/vase/VaseBlock.kt +++ b/src/main/kotlin/com/tcreative/addons/vase/VaseBlock.kt @@ -1,11 +1,10 @@ package com.tcreative.addons.vase -import com.tcreative.devtools.tranclate.builder.getResource -import com.tcreative.devtools.tranclate.systemaddon.Addon +import com.lop.devtools.monstera.addon.Addon +import com.lop.devtools.monstera.files.getResource fun Addon.vaseBlock() { - block { - name("vase_1", "Small Vase") + block("vase_1", "Small Vase") { geometry(getResource("vase/vase1.geo.json")) texture(getResource("vase/vase1_1.png")) } From 015b87484289f9cd339c7449ac93eeee9e689a72 Mon Sep 17 00:00:00 2001 From: Matthias <12-build@web.de> Date: Sun, 19 Nov 2023 19:05:22 +0100 Subject: [PATCH 3/6] temp fix localappdata is null --- .github/workflows/gradle_build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index 5649045..b4977c2 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -24,6 +24,7 @@ jobs: - name: Credentials env: GRADLE_PROPERTIES: ${{ secrets.GRADLE_PROPERTIES }} + LOCALAPPDATA: '' shell: bash run: | mkdir -p ~/.gradle/ From 555725dc6734e4da86398e91c863e3b1b024ab84 Mon Sep 17 00:00:00 2001 From: Matthias <12-build@web.de> Date: Sun, 19 Nov 2023 19:05:52 +0100 Subject: [PATCH 4/6] also add to package --- .github/workflows/gradle_build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index b4977c2..f797c44 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -38,4 +38,5 @@ jobs: with: files: "zipVersions/*.mcworld" env: - GITHUB_TOKEN: ${{ github.token }} \ No newline at end of file + GITHUB_TOKEN: ${{ github.token }} + LOCALAPPDATA: '' \ No newline at end of file From bb387726d520d07e54547e856ae8a01b4ee28e17 Mon Sep 17 00:00:00 2001 From: Matthias <12-build@web.de> Date: Sun, 19 Nov 2023 19:08:54 +0100 Subject: [PATCH 5/6] wrong yaml node --- .github/workflows/gradle_build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index f797c44..6ca91fc 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -32,11 +32,13 @@ jobs: - name: Run project with Gradle run: | ./gradlew --warning-mode all run --no-daemon --args="zip-world package" + env: + GITHUB_TOKEN: ${{ github.token }} + LOCALAPPDATA: '' - name: release uses: softprops/action-gh-release@v1 id: create_release with: files: "zipVersions/*.mcworld" env: - GITHUB_TOKEN: ${{ github.token }} - LOCALAPPDATA: '' \ No newline at end of file + GITHUB_TOKEN: ${{ github.token }} \ No newline at end of file From e606d3ac6b8823c60e4e80d025b78f5adfe9ef61 Mon Sep 17 00:00:00 2001 From: Matthias <12-build@web.de> Date: Sun, 19 Nov 2023 19:09:13 +0100 Subject: [PATCH 6/6] without GitHub token --- .github/workflows/gradle_build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index 6ca91fc..73d6d9b 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -33,7 +33,6 @@ jobs: run: | ./gradlew --warning-mode all run --no-daemon --args="zip-world package" env: - GITHUB_TOKEN: ${{ github.token }} LOCALAPPDATA: '' - name: release uses: softprops/action-gh-release@v1