diff --git a/.gradle/6.3/executionHistory/executionHistory.bin b/.gradle/6.3/executionHistory/executionHistory.bin index 593dd6f..742ef7e 100644 Binary files a/.gradle/6.3/executionHistory/executionHistory.bin and b/.gradle/6.3/executionHistory/executionHistory.bin differ diff --git a/.gradle/6.3/executionHistory/executionHistory.lock b/.gradle/6.3/executionHistory/executionHistory.lock index 869ccba..432d8f2 100644 Binary files a/.gradle/6.3/executionHistory/executionHistory.lock and b/.gradle/6.3/executionHistory/executionHistory.lock differ diff --git a/.gradle/6.3/fileHashes/fileHashes.bin b/.gradle/6.3/fileHashes/fileHashes.bin index 2977aea..59ef514 100644 Binary files a/.gradle/6.3/fileHashes/fileHashes.bin and b/.gradle/6.3/fileHashes/fileHashes.bin differ diff --git a/.gradle/6.3/fileHashes/fileHashes.lock b/.gradle/6.3/fileHashes/fileHashes.lock index 298d425..a5d8d17 100644 Binary files a/.gradle/6.3/fileHashes/fileHashes.lock and b/.gradle/6.3/fileHashes/fileHashes.lock differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 60608e3..87e167c 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/distributions/SaveEditor-1.0-SNAPSHOT.tar b/build/distributions/SaveEditor-1.0-SNAPSHOT.tar index 0b5f11f..5fd6100 100644 Binary files a/build/distributions/SaveEditor-1.0-SNAPSHOT.tar and b/build/distributions/SaveEditor-1.0-SNAPSHOT.tar differ diff --git a/build/distributions/SaveEditor-1.0-SNAPSHOT.zip b/build/distributions/SaveEditor-1.0-SNAPSHOT.zip index d25d6fd..4ba3507 100644 Binary files a/build/distributions/SaveEditor-1.0-SNAPSHOT.zip and b/build/distributions/SaveEditor-1.0-SNAPSHOT.zip differ diff --git a/build/kotlin/compileKotlin/build-history.bin b/build/kotlin/compileKotlin/build-history.bin index 92b7983..96fc95a 100644 Binary files a/build/kotlin/compileKotlin/build-history.bin and b/build/kotlin/compileKotlin/build-history.bin differ diff --git a/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab b/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab index 17f6367..e372ad3 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab and b/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at index 45d32a1..6e84e50 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab index e841e57..24d5723 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at index 6d88692..22f099d 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab index 3c1f415..c1e477f 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at index 3d64788..0a0fb3b 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab index 98e8ed7..7873e7e 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at index 05e596e..b8ef5bf 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab index 307fe45..a0db717 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at index e5b90e8..c6c85b6 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab b/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab index 4c07cdd..44f5e59 100644 --- a/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab +++ b/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab @@ -1,2 +1,2 @@ -50 -38 \ No newline at end of file +57 +45 \ No newline at end of file diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab index a52cd3a..987d871 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab and b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at index e1e0ed2..fa31454 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab index ab2a283..1c1fad6 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab and b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream index 845a3a2..f1b0492 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream and b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len index c4a5886..00880dd 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len and b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len index 48e9f9a..5ffc1b2 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len and b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at index 3d64788..0a0fb3b 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i index 574f909..91e6e6c 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i and b/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab index 886934f..971b540 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab and b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream index 9e95e6c..a632873 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream and b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len index 210754d..00b02bd 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len and b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len index 5f5657b..b152c43 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len and b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values index 70bc833..8a9e6e2 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values and b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at index 1d77b48..1dbf30e 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at and b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at differ diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.s b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.s index ef6935e..24671e4 100644 --- a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.s +++ b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.s @@ -1 +1 @@ -È;ï)í)ì)ý"Ú!Ð!ûúæÅËÐââÇÙ \ No newline at end of file +È;ï)í)ì)ý"Ú!Ð!ûúæÅËÐââÇÙóýÏÕýÝûÖ \ No newline at end of file diff --git a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i index 06a56ab..76fd96b 100644 Binary files a/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i and b/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i differ diff --git a/build/kotlin/compileKotlin/last-build.bin b/build/kotlin/compileKotlin/last-build.bin index 8d60195..508416c 100644 Binary files a/build/kotlin/compileKotlin/last-build.bin and b/build/kotlin/compileKotlin/last-build.bin differ diff --git a/build/libs/SaveEditor-1.0-SNAPSHOT.jar b/build/libs/SaveEditor-1.0-SNAPSHOT.jar index 3b54f12..6146db3 100644 Binary files a/build/libs/SaveEditor-1.0-SNAPSHOT.jar and b/build/libs/SaveEditor-1.0-SNAPSHOT.jar differ diff --git a/src/main/kotlin/codes/mii/SaveEditor/Converter.kt b/src/main/kotlin/codes/mii/SaveEditor/Converter.kt index c70c504..eb13e18 100644 --- a/src/main/kotlin/codes/mii/SaveEditor/Converter.kt +++ b/src/main/kotlin/codes/mii/SaveEditor/Converter.kt @@ -4,7 +4,6 @@ import codes.mii.SaveEditor.Types.* import java.io.File import java.io.IOException import java.nio.file.Files -import kotlin.experimental.and class Converter { @ExperimentalUnsignedTypes @@ -22,17 +21,8 @@ class Converter { val name = StringBuilder() if (nowByte != 0.toByte()) { - val nameLengthText = StringBuilder() - repeat(2) { - readingPosition++ - val n = if (it != 1){ - (byte[readingPosition].toUByte()).toString(16) - } else { - (byte[readingPosition]).toString(16) - } - nameLengthText.append(if (n.length == 2) { n } else { "0$n" }) - } - nameLength = nameLengthText.toString().toInt(16) + nameLength = readMultiByte(byte, readingPosition, 2).toInt() + readingPosition += 2 repeat(nameLength) { readingPosition++ @@ -51,62 +41,20 @@ class Converter { result.data.add(NBT_Byte(nameLength.toByte(), name.toString(), byte[readingPosition])) } - 2.toByte() -> { // SHORT - val bytes = StringBuilder() - repeat(2) { - readingPosition++ - val n = if (it != 1){ - (byte[readingPosition].toUByte()).toString(16) - } else { - (byte[readingPosition]).toString(16) - } - bytes.append(if (n.length == 2) { n } else { "0$n" }) + 2.toByte(), 3.toByte(), 4.toByte() -> { + val n = when(nowByte) { + 3.toByte() -> { 4 } + 4.toByte() -> { 8 } + else -> { 2 } } - - result.data.add(NBT_Short(nameLength.toByte(), name.toString(), bytes.toString().toInt(16))) - } - - 3.toByte() -> { // INT - var intText = StringBuilder() - repeat(4) { - readingPosition++ - val n = if (it != 1){ - (byte[readingPosition].toUByte()).toString(16) - } else { - (byte[readingPosition]).toString(16) - } - intText.append(if (n.length == 2) { n } else { "0$n" }) - } - result.data.add(NBT_Int(nameLength.toByte(), name.toString(), intText.toString().toInt(16))) - } - - 4.toByte() -> { // LONG - val intText = StringBuilder() - repeat(8) { - readingPosition++ - val n = if (it != 1){ - (byte[readingPosition].toUByte()).toString(16) - } else { - (byte[readingPosition]).toString(16) - } - - intText.append(if (n.length == 2) { n } else { "0$n" }) - } - result.data.add(NBT_Long(nameLength.toByte(), name.toString(), intText.toString().toLong(16))) + result.data.add(NBT_Short(nameLength.toByte(), name.toString(), readMultiByte(byte, readingPosition, n).toInt())) + readingPosition += n } 8.toByte() -> { // STRING - val textLengthText = StringBuilder() - repeat(2) { - readingPosition++ - val n = if (it != 1){ - (byte[readingPosition].toUByte()).toString(16) - } else { - (byte[readingPosition]).toString(16) - } - textLengthText.append(if (n.length == 2) { n } else { "0$n" }) - } - val textLength = textLengthText.toString().toInt(16) + + val textLength = readMultiByte(byte, readingPosition, 2).toInt() + readingPosition += 2 val text = StringBuilder() repeat(textLength) { @@ -120,8 +68,6 @@ class Converter { 10.toByte() -> { // COMPOUND result.data.add(NBT_Compound(nameLength.toByte(), name.toString())) } - - } readingPosition++ @@ -133,6 +79,21 @@ class Converter { return result } + fun readMultiByte(byte: ByteArray, position: Int, count: Int): Long { + var readingPosition = position + val multiByteText = StringBuilder() + repeat(count) { + readingPosition++ + val n = if (it != 1){ + (byte[readingPosition].toUByte()).toString(16) + } else { + (byte[readingPosition]).toString(16) + } + multiByteText.append(if (n.length == 2) { n } else { "0$n" }) + } + return multiByteText.toString().toLong(16) + } + fun byteToString(byte: ByteArray, readingPosition: Int) { }