diff --git a/.gradle/8.1.1/checksums/checksums.lock b/.gradle/8.1.1/checksums/checksums.lock
index 04ca5f61..b184515a 100644
Binary files a/.gradle/8.1.1/checksums/checksums.lock and b/.gradle/8.1.1/checksums/checksums.lock differ
diff --git a/.gradle/8.1.1/checksums/md5-checksums.bin b/.gradle/8.1.1/checksums/md5-checksums.bin
index 1e9afaab..a3999cc7 100644
Binary files a/.gradle/8.1.1/checksums/md5-checksums.bin and b/.gradle/8.1.1/checksums/md5-checksums.bin differ
diff --git a/.gradle/8.1.1/checksums/sha1-checksums.bin b/.gradle/8.1.1/checksums/sha1-checksums.bin
index 9c980af2..d2615017 100644
Binary files a/.gradle/8.1.1/checksums/sha1-checksums.bin and b/.gradle/8.1.1/checksums/sha1-checksums.bin differ
diff --git a/.gradle/8.1.1/executionHistory/executionHistory.bin b/.gradle/8.1.1/executionHistory/executionHistory.bin
index 1694471d..4ced7466 100644
Binary files a/.gradle/8.1.1/executionHistory/executionHistory.bin and b/.gradle/8.1.1/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.1.1/executionHistory/executionHistory.lock b/.gradle/8.1.1/executionHistory/executionHistory.lock
index 535b2d3b..b4c54965 100644
Binary files a/.gradle/8.1.1/executionHistory/executionHistory.lock and b/.gradle/8.1.1/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.1.1/fileHashes/fileHashes.bin b/.gradle/8.1.1/fileHashes/fileHashes.bin
index 0a595dde..b0cf27d9 100644
Binary files a/.gradle/8.1.1/fileHashes/fileHashes.bin and b/.gradle/8.1.1/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.1.1/fileHashes/fileHashes.lock b/.gradle/8.1.1/fileHashes/fileHashes.lock
index c43f49b6..754359f0 100644
Binary files a/.gradle/8.1.1/fileHashes/fileHashes.lock and b/.gradle/8.1.1/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.1.1/fileHashes/resourceHashesCache.bin b/.gradle/8.1.1/fileHashes/resourceHashesCache.bin
index b07f2060..3f42cc76 100644
Binary files a/.gradle/8.1.1/fileHashes/resourceHashesCache.bin and b/.gradle/8.1.1/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index f138c7f6..8b65fa9e 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin
index e6675aa6..f1435bd1 100644
Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index b946d307..53a46b03 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -51,5 +51,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index e9c81982..d472718d 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/build.gradle b/build.gradle
index 3b6ee287..cebea1ee 100644
--- a/build.gradle
+++ b/build.gradle
@@ -26,6 +26,10 @@ repositories {
url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
}
maven { url = 'https://oss.sonatype.org/content/groups/public/' }
+ maven {
+ name = 'papermc'
+ url = 'https://repo.papermc.io/repository/maven-public/'
+ }
mavenCentral()
}
@@ -45,6 +49,7 @@ dependencies {
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
+ compileOnly 'dev.folia:folia-api:1.20.2-R0.1-SNAPSHOT'
}
processResources {
diff --git a/build/classes/java/main/com/crystalneko/toneko/ToNeko.class b/build/classes/java/main/com/crystalneko/toneko/ToNeko.class
index 2d4193ce..ce333270 100644
Binary files a/build/classes/java/main/com/crystalneko/toneko/ToNeko.class and b/build/classes/java/main/com/crystalneko/toneko/ToNeko.class differ
diff --git a/build/classes/java/main/com/crystalneko/toneko/chat/nekoed.class b/build/classes/java/main/com/crystalneko/toneko/chat/nekoed.class
index 2c2a76a8..ef2d0719 100644
Binary files a/build/classes/java/main/com/crystalneko/toneko/chat/nekoed.class and b/build/classes/java/main/com/crystalneko/toneko/chat/nekoed.class differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
index 787e3722..a9bc4eb0 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream
index ccc0aeae..fb717ecd 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len
index 95d3cdac..01bdaa1d 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len
index ec8f944c..93a595bd 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
index 3737e138..56876a58 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i
index 842a8ef8..359360d7 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
index 2355f4a8..cffca6ad 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream
index ccc0aeae..fb717ecd 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len
index 95d3cdac..01bdaa1d 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len
index ec8f944c..93a595bd 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
index ef2bc605..2f10ccc7 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i
index 842a8ef8..359360d7 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab
index de56372e..fea87315 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream
index 2d36a612..4c959ea5 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream.len
index c1c02f77..181ee60e 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.len
index 93a595bd..a9f80ae0 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.values.at
index 0952b6b2..ed88bd1c 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.values.at differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i
index 3f67058f..25a2062f 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab
index d0ac77ee..a934e87c 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
index b54947c6..5d43434c 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab
index c3d1789d..cf87cd22 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream
index 95c752a8..d2be9b87 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len
index 8c7607f0..1ed7de98 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len
index ec8f944c..93a595bd 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at
index 3b2ab8eb..ddcb0849 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i
index 773e0dd8..2d99a5ce 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab
index 12a100ec..7226782f 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream
index e94235eb..21d0636a 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len
index 1e427803..851b0a9f 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len
index a9f80ae0..01bdaa1d 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at
index 06e07f33..3d83bf2d 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i
index 5ebf929a..0e5926ac 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab
index 6762fabc..161b9491 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream
index adbdb4ac..98e75f0d 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len
index 64b37414..a8206a1a 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len
index a9f80ae0..01bdaa1d 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at
index 50320417..183946c4 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at differ
diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i
index d680f4c6..4553abc4 100644
Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i differ
diff --git a/build/kotlin/compileKotlin/cacheable/last-build.bin b/build/kotlin/compileKotlin/cacheable/last-build.bin
index 10333c96..1f9c8d08 100644
Binary files a/build/kotlin/compileKotlin/cacheable/last-build.bin and b/build/kotlin/compileKotlin/cacheable/last-build.bin differ
diff --git a/build/kotlin/compileKotlin/local-state/build-history.bin b/build/kotlin/compileKotlin/local-state/build-history.bin
index 154735fc..fb2e7a02 100644
Binary files a/build/kotlin/compileKotlin/local-state/build-history.bin and b/build/kotlin/compileKotlin/local-state/build-history.bin differ
diff --git a/build/libs/toNekoFabric-0.0.10-sources.jar b/build/libs/toNekoFabric-0.0.10-sources.jar
deleted file mode 100644
index 36048005..00000000
Binary files a/build/libs/toNekoFabric-0.0.10-sources.jar and /dev/null differ
diff --git a/build/resources/main/fabric.mod.json b/build/resources/main/fabric.mod.json
index 84afc7c6..cfb5fd0b 100644
--- a/build/resources/main/fabric.mod.json
+++ b/build/resources/main/fabric.mod.json
@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"id": "tonekofabric",
- "version": "0.1.0",
+ "version": "0.1.1",
"name": "toNekoFabric",
"description": "toNeko插件的Fabric版本",
"authors": [
diff --git a/build/resources/main/language/en_us.yml b/build/resources/main/language/en_us.yml
index 38f8573f..6986c1f8 100644
--- a/build/resources/main/language/en_us.yml
+++ b/build/resources/main/language/en_us.yml
@@ -23,4 +23,7 @@ command:
Invalid: "§cInvalid subcommand, please enter §a/neko help§c to view the help"
help: "§b/neko help:\n§a/neko help §bGet help\n§a/neko jump §bGet jump boost"
toneko:
- help: "§b/toneko Help:\n§a/toneko help §bGet help\n§a/toneko player §bTurn a player into a catgirl (but you will be sacrificed)\n§a/ toneko item §bGet the cat stick\n§a/toneko remove §bDelete cat girl§c (This is a dangerous operation, please use it with caution)\n§a/toneko xp §bCheck the favorability Experience\n§a/toneko aliases add or remove §bAdd or remove aliases for you (a word that will be converted to 'owner')\n§a/toneko block add or remove word or all §bAdd a masking word (the masking word will be replaced with a replacement word, all means replacing the entire sentence, word replaces the word)"
\ No newline at end of file
+ help: "§b/toneko Help:\n§a/toneko help §bGet help\n§a/toneko player §bTurn a player into a catgirl (but you will be sacrificed)\n§a/ toneko item §bGet the cat stick\n§a/toneko remove §bDelete cat girl§c (This is a dangerous operation, please use it with caution)\n§a/toneko xp §bCheck the favorability Experience\n§a/toneko aliases add or remove §bAdd or remove aliases for you (a word that will be converted to 'owner')\n§a/toneko block add or remove word or all §bAdd a masking word (the masking word will be replaced with a replacement word, all means replacing the entire sentence, word replaces the word)"
+folia:
+ use:
+ chatEvent: "Use of paper/Folia detected, Paper/Folia's chat listener will be used"
\ No newline at end of file
diff --git a/build/resources/main/language/zh_cn.yml b/build/resources/main/language/zh_cn.yml
index 2ff98d35..eb5e6800 100644
--- a/build/resources/main/language/zh_cn.yml
+++ b/build/resources/main/language/zh_cn.yml
@@ -23,4 +23,7 @@ command:
Invalid: "§c无效的子命令,请输入§a/neko help§c查看帮助"
help: "§b/neko 帮助:\n§a/neko help §b获取帮助\n§a/neko jump §b获取跳跃提升"
toneko:
- help: "§b/toneko 帮助:\n§a/toneko help §b获取帮助\n§a/toneko player <玩家名> §b将一位玩家变成猫娘(但是你会被祭献)\n§a/toneko item §b获取撅猫棍\n§a/toneko remove <猫娘名称> §b删除猫娘§c(这是个危险操作,请谨慎使用)\n§a/toneko xp <猫娘名称> §b查看好感经验\n§a/toneko aliases <猫娘名称> add或remove <别名> §b为你添加或删除别名(会转换为'主人'的词)\n§a/toneko block <猫娘名称> add或remove <屏蔽词> <替换词> word或all §b添加屏蔽词(屏蔽词会被替换成替换词,all代表替换整句,word替换单词)"
\ No newline at end of file
+ help: "§b/toneko 帮助:\n§a/toneko help §b获取帮助\n§a/toneko player <玩家名> §b将一位玩家变成猫娘(但是你会被祭献)\n§a/toneko item §b获取撅猫棍\n§a/toneko remove <猫娘名称> §b删除猫娘§c(这是个危险操作,请谨慎使用)\n§a/toneko xp <猫娘名称> §b查看好感经验\n§a/toneko aliases <猫娘名称> add或remove <别名> §b为你添加或删除别名(会转换为'主人'的词)\n§a/toneko block <猫娘名称> add或remove <屏蔽词> <替换词> word或all §b添加屏蔽词(屏蔽词会被替换成替换词,all代表替换整句,word替换单词)"
+folia:
+ use:
+ chatEvent: "检测到使用Paper/Folia,将使用Paper/Folia的聊天监听器"
\ No newline at end of file
diff --git a/build/resources/main/plugin.yml b/build/resources/main/plugin.yml
index 1980b273..5a540926 100644
--- a/build/resources/main/plugin.yml
+++ b/build/resources/main/plugin.yml
@@ -1,5 +1,5 @@
name: toNeko
-version: '0.1.0'
+version: '0.1.1'
main: com.crystalneko.toneko.ToNeko
api-version: '1.20'
author: CrystalNeko
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 6a053d54..29955fd5 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/gradle.properties b/gradle.properties
index fee4f48f..d5ae6988 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G
loader_version=0.14.23
# Mod Properties
- mod_version = 0.1.0
+ mod_version = 0.1.1
maven_group = com.crystalneko
archives_base_name = toNekoFabric
diff --git a/src/main/java/com/crystalneko/toneko/ToNeko.java b/src/main/java/com/crystalneko/toneko/ToNeko.java
index d5362eb7..d257a9c7 100644
--- a/src/main/java/com/crystalneko/toneko/ToNeko.java
+++ b/src/main/java/com/crystalneko/toneko/ToNeko.java
@@ -27,6 +27,7 @@
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
+import java.util.logging.Logger;
public final class ToNeko extends JavaPlugin {
@@ -41,11 +42,16 @@ public final class ToNeko extends JavaPlugin {
private String language;
private PlayerQuit playerQuit;
public stickLevel2 stickLevel;
+ public static Logger logger;
@Override
public void onEnable() {
//温馨提示:代码中所有的判断是否为猫娘都是判断是否有主人,这意味着猫娘必须有主人,否则就不被判断为猫娘
+
+ //获取logger
+ logger = Logger.getLogger("toNeko");
+
int pluginId = 19899;
Metrics metrics = new Metrics(this, pluginId);
//判断是否启用了ctLib
diff --git a/src/main/java/com/crystalneko/toneko/chat/nekoed.java b/src/main/java/com/crystalneko/toneko/chat/nekoed.java
index b64b43dd..316720c4 100644
--- a/src/main/java/com/crystalneko/toneko/chat/nekoed.java
+++ b/src/main/java/com/crystalneko/toneko/chat/nekoed.java
@@ -3,11 +3,16 @@
import com.crystalneko.ctlib.chat.chatPrefix;
import com.crystalneko.ctlib.sql.sqlite;
import com.crystalneko.toneko.ToNeko;
+import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
+import org.bukkit.event.*;
import org.bukkit.event.player.PlayerChatEvent;
+import io.papermc.paper.event.player.AsyncChatEvent;
+import org.bukkit.plugin.EventExecutor;
+
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.minimessage.MiniMessage;
import java.io.File;
import java.util.ArrayList;
@@ -15,6 +20,7 @@
import java.util.List;
import java.util.Random;
+import static com.crystalneko.toneko.ToNeko.logger;
import static org.bukkit.Bukkit.getServer;
public class nekoed implements Listener{
@@ -22,11 +28,28 @@ public class nekoed implements Listener{
public nekoed(ToNeko plugin) {
this.plugin = plugin;
//注册玩家聊天监听器
- getServer().getPluginManager().registerEvents(this, plugin);
+ try {
+ //使用Paper的聊天监听器
+ Class.forName("io.papermc.paper.event.player.AsyncChatEvent");
+ logger.info(ToNeko.getMessage("folia.use.chatEvent"));
+ getServer().getPluginManager().registerEvent(AsyncChatEvent.class,this, EventPriority.NORMAL,new EventExecutor() {
+ @Override
+ public void execute(Listener listener, Event event) throws EventException {
+ onPlayerChatPaper((AsyncChatEvent) event);
+ }
+ },plugin);
+ } catch (ClassNotFoundException e) {
+ getServer().getPluginManager().registerEvent(PlayerChatEvent.class,this, EventPriority.NORMAL,new EventExecutor() {
+ @Override
+ public void execute(Listener listener, Event event) throws EventException {
+ onPlayerChat((PlayerChatEvent) event);
+ }
+ },plugin);
+ }
+
}
- @EventHandler
public void onPlayerChat(PlayerChatEvent event) {
//创建数据文件实例
File dataFile = new File( "plugins/toNeko/nekos.yml");
@@ -67,6 +90,58 @@ public void onPlayerChat(PlayerChatEvent event) {
}
}
+
+ public void onPlayerChatPaper(AsyncChatEvent event){
+ event.setCancelled(true);
+ //创建数据文件实例
+ File dataFile = new File( "plugins/toNeko/nekos.yml");
+ // 加载数据文件
+ YamlConfiguration data = YamlConfiguration.loadConfiguration(dataFile);
+ Player player = event.getPlayer();
+ String message = MiniMessage.miniMessage().serialize(event.message());
+ //获取前缀
+ String publicPrefix = chatPrefix.getAllPublicPrefixValues();
+ String privatePrefix = chatPrefix.getPrivatePrefix(player);
+ //判断是否有私有前缀
+ if(privatePrefix.equalsIgnoreCase("[§a无前缀§f§r]")){
+ privatePrefix = "";
+ } else if (privatePrefix.equalsIgnoreCase("[§a无任何前缀§f§r]")) {
+ privatePrefix = "";
+ }
+ String prefix = publicPrefix + privatePrefix;
+ //判断是否有主人
+ if(data.getString(player.getName() + ".owner") != null) {
+ //获取主人名称
+ String owner =data.getString(player.getName()+".owner");
+ List aliases = new ArrayList<>();
+ //获取主人别名
+ if (data.getList(player.getName()+".aliases") !=null){
+ aliases = data.getStringList(player.getName() + ".aliases");
+ } else {
+ //算是夹带私货吧(ps:这是我的正版账户名称)
+ aliases.add("Crystal_Neko");
+ }
+ // 对消息进行处理
+ String catMessage = catChatMessage(message,owner,aliases);
+ //替换屏蔽词
+ catMessage = replaceBlocks(catMessage,player.getName());
+ //Component modifiedMessage = Component.text(prefix + player.getName() + " >> §7" + catMessage);
+ // 修改消息的格式并重新发送
+ for (Player players : Bukkit.getOnlinePlayers()) {
+ // 向每个玩家发送消息
+ players.sendMessage(prefix + player.getName() + " >> §7" + catMessage);
+ }
+ } else {
+ //Component modifiedMessage = Component.text(prefix + player.getName() + " >> §7" + message);
+ for (Player players : Bukkit.getOnlinePlayers()) {
+ // 向每个玩家发送消息
+ players.sendMessage(prefix + player.getName() + " >> §7" + message);
+ }
+ }
+ }
+
+
+
public String catChatMessage(String message, String owner, List aliases){
//将玩家名称替换为主人
message = message.replaceAll(owner, ToNeko.getMessage("other.owner"));
diff --git a/src/main/resources/language/en_us.yml b/src/main/resources/language/en_us.yml
index 38f8573f..6986c1f8 100644
--- a/src/main/resources/language/en_us.yml
+++ b/src/main/resources/language/en_us.yml
@@ -23,4 +23,7 @@ command:
Invalid: "§cInvalid subcommand, please enter §a/neko help§c to view the help"
help: "§b/neko help:\n§a/neko help §bGet help\n§a/neko jump §bGet jump boost"
toneko:
- help: "§b/toneko Help:\n§a/toneko help §bGet help\n§a/toneko player §bTurn a player into a catgirl (but you will be sacrificed)\n§a/ toneko item §bGet the cat stick\n§a/toneko remove §bDelete cat girl§c (This is a dangerous operation, please use it with caution)\n§a/toneko xp §bCheck the favorability Experience\n§a/toneko aliases add or remove §bAdd or remove aliases for you (a word that will be converted to 'owner')\n§a/toneko block add or remove word or all §bAdd a masking word (the masking word will be replaced with a replacement word, all means replacing the entire sentence, word replaces the word)"
\ No newline at end of file
+ help: "§b/toneko Help:\n§a/toneko help §bGet help\n§a/toneko player §bTurn a player into a catgirl (but you will be sacrificed)\n§a/ toneko item §bGet the cat stick\n§a/toneko remove §bDelete cat girl§c (This is a dangerous operation, please use it with caution)\n§a/toneko xp §bCheck the favorability Experience\n§a/toneko aliases add or remove §bAdd or remove aliases for you (a word that will be converted to 'owner')\n§a/toneko block add or remove word or all §bAdd a masking word (the masking word will be replaced with a replacement word, all means replacing the entire sentence, word replaces the word)"
+folia:
+ use:
+ chatEvent: "Use of paper/Folia detected, Paper/Folia's chat listener will be used"
\ No newline at end of file
diff --git a/src/main/resources/language/zh_cn.yml b/src/main/resources/language/zh_cn.yml
index 2ff98d35..eb5e6800 100644
--- a/src/main/resources/language/zh_cn.yml
+++ b/src/main/resources/language/zh_cn.yml
@@ -23,4 +23,7 @@ command:
Invalid: "§c无效的子命令,请输入§a/neko help§c查看帮助"
help: "§b/neko 帮助:\n§a/neko help §b获取帮助\n§a/neko jump §b获取跳跃提升"
toneko:
- help: "§b/toneko 帮助:\n§a/toneko help §b获取帮助\n§a/toneko player <玩家名> §b将一位玩家变成猫娘(但是你会被祭献)\n§a/toneko item §b获取撅猫棍\n§a/toneko remove <猫娘名称> §b删除猫娘§c(这是个危险操作,请谨慎使用)\n§a/toneko xp <猫娘名称> §b查看好感经验\n§a/toneko aliases <猫娘名称> add或remove <别名> §b为你添加或删除别名(会转换为'主人'的词)\n§a/toneko block <猫娘名称> add或remove <屏蔽词> <替换词> word或all §b添加屏蔽词(屏蔽词会被替换成替换词,all代表替换整句,word替换单词)"
\ No newline at end of file
+ help: "§b/toneko 帮助:\n§a/toneko help §b获取帮助\n§a/toneko player <玩家名> §b将一位玩家变成猫娘(但是你会被祭献)\n§a/toneko item §b获取撅猫棍\n§a/toneko remove <猫娘名称> §b删除猫娘§c(这是个危险操作,请谨慎使用)\n§a/toneko xp <猫娘名称> §b查看好感经验\n§a/toneko aliases <猫娘名称> add或remove <别名> §b为你添加或删除别名(会转换为'主人'的词)\n§a/toneko block <猫娘名称> add或remove <屏蔽词> <替换词> word或all §b添加屏蔽词(屏蔽词会被替换成替换词,all代表替换整句,word替换单词)"
+folia:
+ use:
+ chatEvent: "检测到使用Paper/Folia,将使用Paper/Folia的聊天监听器"
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 1980b273..5a540926 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
name: toNeko
-version: '0.1.0'
+version: '0.1.1'
main: com.crystalneko.toneko.ToNeko
api-version: '1.20'
author: CrystalNeko