diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fe8553f..fb925d2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,13 +23,13 @@ stages: build: stage: build script: - - "cd wrapper && python3 PixLyzer.py --only-version=22w14a --dont-compile --only-map" + - "cd wrapper && python3 PixLyzer.py --only-version=22w15a --dont-compile --only-map" - 'cd ../ && mvn clean $MAVEN_CLI_OPTS verify' latest: stage: latest script: - - "cd wrapper && python3 PixLyzer.py --only-version=22w14a --dont-compile" + - "cd wrapper && python3 PixLyzer.py --only-version=22w15a --dont-compile" 1.18.2: stage: 1.18.2 diff --git a/pom.xml b/pom.xml index e8dc940..03833d0 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ 1.8 1.8 1.8 - 22w14a + 22w15a @@ -248,9 +248,9 @@ com.mojang datafixerupper - 4.1.27 + 5.0.28 system - ${project.basedir}/wrapper/data/data/dependencies/libraries/com/mojang/datafixerupper/4.1.27/datafixerupper-4.1.27.jar + ${project.basedir}/wrapper/data/data/dependencies/libraries/com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar diff --git a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt index a3058b3..ffbe2e3 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt @@ -87,13 +87,7 @@ object BlockGenerator : Generator( } - val offsetType = OFFSET_TYPE_NAME_METHOD.invoke(BLOCK_GET_OFFSET_TYPE.invoke(block)) as String - if (offsetType != "NONE") { - blockData["offset_type"] = offsetType.lowercase(Locale.getDefault()) - BLOCK_GET_MAX_OFFSET?.invoke(block)?.let { - blockData["max_model_offset"] = it as Float - } - } + block.putOffsetType(blockData) if (block::class.java.of("CampfireBlock")) { block.variable("emitsParticles")?.let { @@ -205,6 +199,8 @@ object BlockGenerator : Generator( for (state in stateMap[block]!!) { val stateData = compound() + state.putOffsetType(stateData) + if (state.luminance != 0) { stateData["luminance"] = state.luminance } @@ -423,6 +419,20 @@ object BlockGenerator : Generator( private val EMPTY_BLOCK_POSITION = BlockPos(0, 0, 0) + private fun Any.putOffsetType(data: MutableMap) { + if ((this is Block && BLOCK_GET_OFFSET_TYPE == null) || (this is BlockState && BLOCK_STATE_OFFSET_FIELD == null)) { + return + } + val type = (BLOCK_GET_OFFSET_TYPE ?: BLOCK_STATE_OFFSET_FIELD)?.invoke(this) ?: return + val offsetType = OFFSET_TYPE_NAME_METHOD.invoke(type) as String + if (offsetType != "NONE") { + data["offset_type"] = offsetType.lowercase(Locale.getDefault()) + BLOCK_GET_MAX_OFFSET?.invoke(this)?.let { + data["max_model_offset"] = it as Float + } + } + } + private val BLOCK_STATE_GET_RAYCAST_SHAPE = try { BlockState::class.java.getMethod("getRaycastShape", World::class.java, BlockPos::class.java) } catch (exception: Exception) { @@ -439,7 +449,7 @@ object BlockGenerator : Generator( private val BLOCK_SETTINGS_FIELD = getField(getClass("net.minecraft.block.AbstractBlock"), "settings") private val BLOCK_GET_MAX_OFFSET = getGetter(getClass("net.minecraft.block.AbstractBlock"), "getMaxModelOffset") - private val BLOCK_GET_OFFSET_TYPE = getClass("net.minecraft.block.AbstractBlock", "net.minecraft.block.Block")!!.getMethod("getOffsetType") + private val BLOCK_GET_OFFSET_TYPE = getClass("net.minecraft.block.AbstractBlock", "net.minecraft.block.Block")!!.getGetter("getOffsetType") private val OFFSET_TYPE_NAME_METHOD = getClass("net.minecraft.block.AbstractBlock\$OffsetType", "net.minecraft.block.Block\$OffsetType")!!.getMethod("name") @@ -480,6 +490,7 @@ object BlockGenerator : Generator( private val BLOCK_STATE_CACHE_FIELD = BLOCK_STATE_BASE_CLASS.getDeclaredField("shapeCache") private val REQUIRES_CORRECT_TOOL_FOR_DROP_FIELDS = getField(getClass("net.minecraft.block.AbstractBlock\$AbstractBlockState", "net.minecraft.block.BlockState"), "toolRequired") + private val BLOCK_STATE_OFFSET_FIELD = BLOCK_STATE_BASE_CLASS.getGetter("getOffsetType", "method_43280") private lateinit var BLOCK_STATE_CACHE_CLASS: Class<*> diff --git a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/EntityDataDataTypeGenerator.kt b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/EntityDataDataTypeGenerator.kt index 729125f..b9bf336 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/EntityDataDataTypeGenerator.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/EntityDataDataTypeGenerator.kt @@ -56,12 +56,13 @@ object EntityDataDataTypeGenerator : Generator( "FACING" -> "DIRECTION" "OPTIONAL_UUID" -> "OPTIONAL_UUID" "field_38825" -> "GLOBAL_POSITION" + "OPTIONAL_GLOBAL_POS" -> "OPTIONAL_GLOBAL_POSITION" "NBT_COMPOUND", "TAG_COMPOUND" -> "NBT" "VILLAGER_DATA" -> "VILLAGER_DATA" "OPTIONAL_INT" -> "OPTIONAL_INTEGER" "ENTITY_POSE" -> "POSE" - "field_38826" -> "CAT_VARIANT" - "field_38827" -> "FROG_VARIANT" + "field_38826", "CAT_VARIANT" -> "CAT_VARIANT" + "field_38827", "FROG_VARIANT" -> "FROG_VARIANT" "FIREWORK_DATA", "field_17910" -> "FIREWORK_DATA" else -> TODO("Unknown meta data type: $this") } diff --git a/src/main/resources/entities_metadata_mappings.json b/src/main/resources/entities_metadata_mappings.json index a50360f..5fab764 100644 --- a/src/main/resources/entities_metadata_mappings.json +++ b/src/main/resources/entities_metadata_mappings.json @@ -171,7 +171,8 @@ "LEFT_SHOULDER_ENTITY": "PLAYER_LEFT_SHOULDER_DATA", "RIGHT_SHOULDER_ENTITY": "PLAYER_RIGHT_SHOULDER_DATA", "field_38536": "22W13A_PLAYER_CARRIED_BLOCK", - "field_38745": "PLAYER_LAST_DEATH_POSITION" + "field_38745": "PLAYER_LAST_DEATH_POSITION", + "LAST_DEATH_POS": "PLAYER_LAST_DEATH_POSITION" } }, "BatEntity": { @@ -224,6 +225,7 @@ "CatEntity": { "data": { "CAT_TYPE": "CAT_VARIANT", + "CAT_VARIANT": "CAT_VARIANT", "SLEEPING_WITH_OWNER": "CAT_IS_LYING", "IN_SLEEPING_POSE": "CAT_IS_LYING", "HEAD_DOWN": "CAT_IS_RELAXED", diff --git a/wrapper/pom.py b/wrapper/pom.py index 224d01b..90e700f 100644 --- a/wrapper/pom.py +++ b/wrapper/pom.py @@ -1,4 +1,4 @@ -dependencies = """/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/logging/1.0.0/logging-1.0.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/patchy/2.2.10/patchy-2.2.10.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/ibm/icu/icu4j/70.1/icu4j-70.1.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/io/netty/netty-all/4.1.68.Final/netty-all-4.1.68.Final.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/commons-codec/commons-codec/1.15/commons-codec-1.15.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/datafixerupper/4.1.27/datafixerupper-4.1.27.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/authlib/3.3.39/authlib-3.3.39.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/httpcomponents/httpcore/4.4.14/httpcore-4.4.14.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/text2speech/1.13.9/text2speech-1.13.9.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/text2speech/1.13.9/text2speech-1.13.9-natives-linux.jar""" +dependencies = """/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/logging/1.0.0/logging-1.0.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/patchy/2.2.10/patchy-2.2.10.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/ibm/icu/icu4j/70.1/icu4j-70.1.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/io/netty/netty-all/4.1.68.Final/netty-all-4.1.68.Final.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/commons-codec/commons-codec/1.15/commons-codec-1.15.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/authlib/3.3.39/authlib-3.3.39.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/httpcomponents/httpcore/4.4.14/httpcore-4.4.14.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2-natives-linux.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/text2speech/1.13.9/text2speech-1.13.9.jar:/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/com/mojang/text2speech/1.13.9/text2speech-1.13.9-natives-linux.jar""" dependencies = dependencies.replace("/home/moritz/Games/Minecraft/PixLyzer/wrapper/data/data/dependencies/libraries/", "") out = ""