From f2ef0e703f4ff034a0f4b283c95dbbd21ec187c7 Mon Sep 17 00:00:00 2001 From: mii Date: Fri, 25 Sep 2020 16:47:37 +0900 Subject: [PATCH] =?UTF-8?q?=E9=80=94=E4=B8=AD=E3=82=B3=E3=83=9F=E3=83=83?= =?UTF-8?q?=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gradle/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/checksums/md5-checksums.bin | Bin 20747 -> 22997 bytes .gradle/checksums/sha1-checksums.bin | Bin 33401 -> 43175 bytes .idea/SaveEditor.iml | 2 + .../kotlin/codes/mii/SaveEditor/Converter.kt | 83 ++++++++++++++++-- 5 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 .idea/SaveEditor.iml diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock index e2776f329f9a99dc35d2130ce801cec4c665c39a..ff4495d0f6db889178182d606718168a8e988a59 100644 GIT binary patch literal 17 VcmZR+eJ|q`_qK@^3}C=y2>?931k?Zk literal 17 VcmZR+eJ|q`_qK@^3}C<*3;;aU1nmF- diff --git a/.gradle/checksums/md5-checksums.bin b/.gradle/checksums/md5-checksums.bin index 56c2d37137f688efae0bf44138d4142c82f319b2..93c0a549f4c6eef18e167ef0110b7773d4c9e478 100644 GIT binary patch delta 1616 zcmX|=eNYs29L5Fi0#AYC<>Yn&IY{t=f}Z0LDh?#ehSJx%qs#e7)GIl$ z!t~pHUjCEgh?BV-uf!HFZc61HWBphD=gsEO#O;Hlh$q=XidZ779ud4_Wfm797?%$3 zi^GNW*c{n5b36(`oe|E9v+PY%%PFskF?PBR_?V~tOF3_>N&7t!Bb~qKFVJ@x)fh#3Ztg99*+dvEw>|aY3B< z*7Cms_vJ@RY)Bi&N1{&Uz8rWc0&!g}6jIH!LBmyj)njZ%B~(&u&-^{jo)4Q4(-%S` z7A~E&Qg(!RnTHT0qq)$9%V~}e3m@Ado;VNFRI?3_fCF<4d13_PQ#iAQ>H0v_5$ijw z*@NR&l1%L80Xh2|6H4I;CXsI5v2eA+r-7}JsN>9n)^3)j5FKUnYNopE|nrqe#3ELSn=Al;&d+1p|g2V>2Qc$*d z!SJBgB^$xG9(aaJgbJgmdqp)VLy(*Tk*h?gE*T!L5t8hikyrw|T#Ka1=InR#4S(%t zGx=Nr!&j@yX+;!DTjhAdC znubMLg*+sN8%lZHk*bpSm;!erewlCGWR^D7hD}%c&lNx8?rS;mQD!wne~V3=S>|=1(33C~z<%r4KqNWme(5wacl!7_G8yhB3JhHP`+-JflJ!Vrcb; zkC4hg3MDFU{?Y6jlK>i3yXaF+5zL}fwhK6@aY$D=^RjD<`=LOEgM!)n(?K{$?QLXM zb$x)sY}_CyhF;aH2Ln~4fKhw(Y>{)2j?^?bMX7#jCtGS;6~Q)UU$vRJNDzyALLOT}zG delta 123 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 LF?(387uNm(kcX^z diff --git a/.idea/SaveEditor.iml b/.idea/SaveEditor.iml new file mode 100644 index 0000000..4098198 --- /dev/null +++ b/.idea/SaveEditor.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/main/kotlin/codes/mii/SaveEditor/Converter.kt b/src/main/kotlin/codes/mii/SaveEditor/Converter.kt index 92d9809..706b2e4 100644 --- a/src/main/kotlin/codes/mii/SaveEditor/Converter.kt +++ b/src/main/kotlin/codes/mii/SaveEditor/Converter.kt @@ -27,18 +27,18 @@ class Converter { readingPosition += nameLength } - when (nowByte) { - 0.toByte() -> { // END + when (nowByte.toInt()) { + 0 -> { // END result.data.add(NBT_End()) readingPosition++ } - 1.toByte() -> { // BYTE + 1 -> { // BYTE readingPosition++ result.data.add(NBT_Byte(nameLength.toByte(), name, byte[readingPosition])) } - 2.toByte(), 3.toByte(), 4.toByte() -> { + 2, 3, 4 -> { val n = when(nowByte) { 3.toByte() -> 4 4.toByte() -> 8 @@ -48,14 +48,14 @@ class Converter { readingPosition += n } - 8.toByte() -> { // STRING + 8 -> { // STRING readingPosition -= nameLength + 2 val res = byte.toNBT_String(readingPosition) readingPosition += res.second result.data.add(res.first) } - 10.toByte() -> { // COMPOUND + 10 -> { // COMPOUND result.data.add(NBT_Compound(nameLength.toByte(), name)) } } @@ -69,6 +69,77 @@ class Converter { return result } + fun ByteToCompound(byte: ByteArray, position: Int, disableName: Boolean = false): Pair { + var readingPosition = position + val nowByte = byte[readingPosition] + var nameLength = 0 + var name = "" + + if (!disableName) { + nameLength = readMultiByteHex(byte, readingPosition, 2).toInt() + readingPosition += 2 + name = byteToString(byte, readingPosition, nameLength) + readingPosition += nameLength + 1 + } + + val compound = NBT_Compound(nameLength.toByte(), name) + + while(byte[readingPosition].toInt() != 0) { + when(byte[readingPosition].toInt()) { + + } + } + + return compound to readingPosition + + } + + fun ByteToByte(byte: ByteArray, position: Int, disableName: Boolean = false): Pair { + var readingPosition = position + val nowByte = byte[readingPosition] + var nameLength = 0 + var name = "" + + if (!disableName) { + nameLength = readMultiByteHex(byte, readingPosition, 2).toInt() + readingPosition += 2 + name = byteToString(byte, readingPosition, nameLength) + readingPosition += nameLength + 1 + } + + return NBT_Byte(nameLength.toByte(), name, byte[readingPosition]) to readingPosition+1 + } + + fun ByteToInt() { + + } + + fun ByteToShort() { + + } + + fun ByteToLong() { + + } + + fun ByteToString() { + + } + + fun ByteToFloat() { + + } + + fun ByteToDouble() { + + } + + fun ByteToList() { + + } + + + @ExperimentalUnsignedTypes fun readMultiByteHex(byte: ByteArray, position: Int, count: Int): Long { var readingPosition = position