diff --git a/.idea/modules/org.cneko.toNeko.main.iml b/.idea/modules/org.cneko.toNeko.main.iml
new file mode 100644
index 00000000..66a7dc3b
--- /dev/null
+++ b/.idea/modules/org.cneko.toNeko.main.iml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ SPIGOT
+ FABRIC
+ MIXIN
+ MCP
+ ADVENTURE
+
+ 1
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/org.cneko.toNeko.test.iml b/.idea/modules/org.cneko.toNeko.test.iml
new file mode 100644
index 00000000..bf0cfc16
--- /dev/null
+++ b/.idea/modules/org.cneko.toNeko.test.iml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ FABRIC
+ MIXIN
+
+ 1
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/toNeko.client.iml b/.idea/modules/toNeko.client.iml
new file mode 100644
index 00000000..c8411b60
--- /dev/null
+++ b/.idea/modules/toNeko.client.iml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+ SPIGOT
+ FABRIC
+ MIXIN
+ MCP
+ ADVENTURE
+
+ 1
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Data_Generation.xml b/.idea/runConfigurations/Data_Generation.xml
new file mode 100644
index 00000000..dc7f9a6a
--- /dev/null
+++ b/.idea/runConfigurations/Data_Generation.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Minecraft_Client.xml b/.idea/runConfigurations/Minecraft_Client.xml
new file mode 100644
index 00000000..9f327ddc
--- /dev/null
+++ b/.idea/runConfigurations/Minecraft_Client.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml
new file mode 100644
index 00000000..a0aa8815
--- /dev/null
+++ b/.idea/runConfigurations/Minecraft_Server.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/_2024_4_6_10_20____.xml b/.idea/shelf/_2024_4_6_10_20____.xml
new file mode 100644
index 00000000..b280cfe8
--- /dev/null
+++ b/.idea/shelf/_2024_4_6_10_20____.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/_2024_4_8_10_17____.xml b/.idea/shelf/_2024_4_8_10_17____.xml
new file mode 100644
index 00000000..0fa862aa
--- /dev/null
+++ b/.idea/shelf/_2024_4_8_10_17____.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/_2024_7_4_10_16____.xml b/.idea/shelf/_2024_7_4_10_16____.xml
new file mode 100644
index 00000000..bbcfcafe
--- /dev/null
+++ b/.idea/shelf/_2024_7_4_10_16____.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git "a/.idea/shelf/\345\234\250\350\277\233\350\241\214\346\233\264\346\226\260\344\271\213\345\211\215\344\272\216_2024_4_8_\344\270\213\345\215\21010_17_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch" "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\346\233\264\346\226\260\344\271\213\345\211\215\344\272\216_2024_4_8_\344\270\213\345\215\21010_17_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch"
new file mode 100644
index 00000000..7e641bfe
--- /dev/null
+++ "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\346\233\264\346\226\260\344\271\213\345\211\215\344\272\216_2024_4_8_\344\270\213\345\215\21010_17_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch"
@@ -0,0 +1,165 @@
+Index: .idea/workspace.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n "lastFilter": {\n "state": "OPEN",\n "assignee": "CSneko"\n }\n}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n "associatedIndex": 3\n}\n \n \n \n \n \n \n \n \n {\n "keyToString": {\n "ASKED_ADD_EXTERNAL_FILES": "true",\n "Gradle.toNekoFabric build.executor": "Run",\n "RunOnceActivity.OpenProjectViewOnStart": "true",\n "RunOnceActivity.ShowReadmeOnStart": "true",\n "git-widget-placeholder": "main",\n "jdk.selected.com.intellij.ui.dsl.builder.impl.RowImpl.sdk": "17",\n "kotlin-language-version-configured": "true",\n "last_opened_file_path": "/media/crystalneko/BA106C158B1B58EF/javatest/mods/toNeko",\n "settings.editor.selected.configurable": "通义灵码"\n },\n "keyToStringList": {\n "jdk.preference.com.intellij.ui.dsl.builder.impl.RowImpl.sdk": [\n "17=/usr/lib/jvm/java-1.17.0-openjdk-amd64"\n ]\n }\n}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n
\n \n \n \n true\n true\n false\n false\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n
\n \n \n \n true\n true\n false\n false\n \n \n \n \n \n \n \n
\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n 1696578879658\n \n \n 1696578879658\n \n \n \n 1705417842657\n \n \n \n 1705417842657\n \n \n \n 1705659597179\n \n \n \n 1705659597179\n \n \n \n 1705753902273\n \n \n \n 1705753902273\n \n \n \n 1705822649888\n \n \n \n 1705822649888\n \n \n \n 1705823275870\n \n \n \n 1705823275870\n \n \n \n 1705823420577\n \n \n \n 1705823420577\n \n \n \n 1705900484470\n \n \n \n 1705900484470\n \n \n \n 1705997718904\n \n \n \n 1705997718905\n \n \n \n 1706010339765\n \n \n \n 1706010339765\n \n \n \n 1706682811955\n \n \n \n 1706682811955\n \n \n \n 1706685208341\n \n \n \n 1706685208341\n \n \n \n 1706686141794\n \n \n \n 1706686141794\n \n \n \n 1706686613085\n \n \n \n 1706686613085\n \n \n \n 1706686893598\n \n \n \n 1706686893598\n \n \n \n 1706687220103\n \n \n \n 1706687220103\n \n \n \n 1706687437403\n \n \n \n 1706687437403\n \n \n \n 1706869310778\n \n \n \n 1706869310778\n \n \n \n 1706871645198\n \n \n \n 1706871645198\n \n \n \n 1706947014865\n \n \n \n 1706947014865\n \n \n \n 1707112234057\n \n \n \n 1707112234057\n \n \n \n 1707113359113\n \n \n \n 1707113359113\n \n \n \n 1707113737998\n \n \n \n 1707113737998\n \n \n \n 1707117444027\n \n \n \n 1707117444027\n \n \n \n 1707117457114\n \n \n \n 1707117457114\n \n \n \n 1707233906120\n \n \n \n 1707233906120\n \n \n \n 1707237169251\n \n \n \n 1707237169251\n \n \n \n 1707575716929\n \n \n \n 1707575716929\n \n \n \n 1707925126406\n \n \n \n 1707925126409\n \n \n \n 1707983187817\n \n \n \n 1707983187817\n \n \n \n 1708010376156\n \n \n \n 1708010376157\n \n \n \n 1708354894437\n \n \n \n 1708354894437\n \n \n \n 1708758495217\n \n \n \n 1708758495217\n \n \n \n 1708760338667\n \n \n \n 1708760338667\n \n \n \n 1708760371421\n \n \n \n 1708760371421\n \n \n \n 1708846946428\n \n \n \n 1708846946428\n \n \n \n 1709044497054\n \n \n \n 1709044497054\n \n \n \n 1709131536989\n \n \n \n 1709131536989\n \n \n \n 1709432017149\n \n \n \n 1709432017149\n \n \n \n 1709435294726\n \n \n \n 1709435294726\n \n \n \n 1709736829489\n \n \n \n 1709736829489\n \n \n \n 1709821972874\n \n \n \n 1709821972874\n \n \n \n 1709976475751\n \n \n \n 1709976475752\n \n \n \n 1709983406330\n \n \n \n 1709983406330\n \n \n \n 1710773025506\n \n \n \n 1710773025507\n \n \n \n 1711268324405\n \n \n \n 1711268324406\n \n \n \n 1711289242010\n \n \n \n 1711289242011\n \n \n \n 1711293544996\n \n \n \n 1711293544996\n \n \n \n 1711379437334\n \n \n \n 1711379437335\n \n \n \n 1711551350602\n \n \n \n 1711551350603\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/workspace.xml b/.idea/workspace.xml
+--- a/.idea/workspace.xml (revision 36568ca222ac228a6e40a60a9f0c0a86ab7f2b69)
++++ b/.idea/workspace.xml (date 1712585614597)
+@@ -7,27 +7,8 @@
+
+
+
+-
+-
+-
+-
++
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+
+
+@@ -69,6 +50,11 @@
+
+
+
++
++
++
+
+
+ {
+@@ -187,6 +173,9 @@
+
+
+
++
++
++
+
+
+
+@@ -206,38 +195,6 @@
+
+
+ 1696578879658
+-
+-
+-
+- 1705417842657
+-
+-
+-
+- 1705417842657
+-
+-
+-
+- 1705659597179
+-
+-
+-
+- 1705659597179
+-
+-
+-
+- 1705753902273
+-
+-
+-
+- 1705753902273
+-
+-
+-
+- 1705822649888
+-
+-
+-
+- 1705822649888
+
+
+
+@@ -599,7 +556,39 @@
+
+ 1711551350603
+
+-
++
++
++ 1711635895761
++
++
++
++ 1711635895762
++
++
++
++ 1711638766908
++
++
++
++ 1711638766908
++
++
++
++ 1711724144330
++
++
++
++ 1711724144331
++
++
++
++ 1711771359939
++
++
++
++ 1711771359940
++
++
+
+
+
+@@ -615,10 +604,6 @@
+
+
+
+-
+-
+-
+-
+
+
+
+@@ -640,6 +625,10 @@
+
+
+
+-
++
++
++
++
++
+
+
+\ No newline at end of file
diff --git "a/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_4_6_\344\270\213\345\215\21010_20_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/forge-java11-0.0.1.jar" "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_4_6_\344\270\213\345\215\21010_20_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/forge-java11-0.0.1.jar"
new file mode 100644
index 00000000..e27b7932
Binary files /dev/null and "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_4_6_\344\270\213\345\215\21010_20_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/forge-java11-0.0.1.jar" differ
diff --git "a/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_4_6_\344\270\213\345\215\21010_20_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch" "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_4_6_\344\270\213\345\215\21010_20_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch"
new file mode 100644
index 00000000..422db16d
--- /dev/null
+++ "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_4_6_\344\270\213\345\215\21010_20_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch"
@@ -0,0 +1,31 @@
+Index: src/main/java/com/crystalneko/tonekonf/ToNekoNF.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package com.crystalneko.tonekonf;\n\nimport net.neoforged.bus.api.IEventBus;\nimport net.neoforged.fml.common.Mod;\n\n\n@Mod(ToNekoNF.MOD_ID)\npublic class ToNekoNF {\n public static final String MOD_ID = \"toneko\";\n public ToNekoNF() {\n\n }\n}\n
+===================================================================
+diff --git a/src/main/java/com/crystalneko/tonekonf/ToNekoNF.java b/src/main/java/com/crystalneko/tonekonf/ToNekoNF.java
+--- a/src/main/java/com/crystalneko/tonekonf/ToNekoNF.java
++++ b/src/main/java/com/crystalneko/tonekonf/ToNekoNF.java
+@@ -1,6 +1,5 @@
+ package com.crystalneko.tonekonf;
+
+-import net.neoforged.bus.api.IEventBus;
+ import net.neoforged.fml.common.Mod;
+
+
+Index: .idea/modules/toNeko.main.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\n\n \n \n \n \n SPIGOT\n FORGE\n FABRIC\n MIXIN\n NEOFORGE\n MCP\n ADVENTURE\n \n 1\n \n \n \n \n \n \n
+===================================================================
+diff --git a/.idea/modules/toNeko.main.iml b/.idea/modules/toNeko.main.iml
+--- a/.idea/modules/toNeko.main.iml
++++ b/.idea/modules/toNeko.main.iml
+@@ -10,7 +10,6 @@
+ MIXIN
+ NEOFORGE
+ MCP
+- ADVENTURE
+
+ 1
+
diff --git "a/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_7_4_\344\270\212\345\215\21010_16_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch" "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_7_4_\344\270\212\345\215\21010_16_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch"
new file mode 100644
index 00000000..c0ab3c96
--- /dev/null
+++ "b/.idea/shelf/\345\234\250\350\277\233\350\241\214\347\255\276\345\207\272\344\271\213\345\211\215\344\272\216_2024_7_4_\344\270\212\345\215\21010_16_\345\217\226\346\266\210\346\217\220\344\272\244\344\272\206\346\233\264\346\224\271_[\346\233\264\346\224\271]/shelved.patch"
@@ -0,0 +1,315 @@
+Index: src/main/java/org/cneko/toneko/fabric/ToNeko.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package org.cneko.toneko.fabric;\n\nimport net.fabricmc.api.ModInitializer;\nimport net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;\nimport org.cneko.toneko.common.Bootstrap;\nimport org.cneko.toneko.common.util.ConfigUtil;\nimport org.cneko.toneko.fabric.commands.NekoCommand;\nimport org.cneko.toneko.fabric.commands.ToNekoAdminCommand;\nimport org.cneko.toneko.fabric.commands.ToNekoCommand;\nimport org.cneko.toneko.fabric.events.ChatEvent;\nimport org.cneko.toneko.fabric.events.PlayerConnectionEvents;\nimport org.cneko.toneko.fabric.items.ToNekoItems;\nimport org.cneko.toneko.fabric.util.PermissionUtil;\n\npublic class ToNeko implements ModInitializer {\n @Override\n public void onInitialize() {\n Bootstrap.bootstrap();\n // 注册命令\n ToNekoCommand.init();\n ToNekoAdminCommand.init();\n NekoCommand.init();\n // 注册物品\n ToNekoItems.register();\n ServerLifecycleEvents.SERVER_STARTED.register(server -> {\n ModMeta.instance.setServer(server);\n // 启动聊天监听器\n if(ConfigUtil.CHAT_ENABLE) ChatEvent.init();\n // 启动玩家连接监听器\n PlayerConnectionEvents.init();\n // 注册权限\n PermissionUtil.init();\n });\n }\n}\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/src/main/java/org/cneko/toneko/fabric/ToNeko.java b/src/main/java/org/cneko/toneko/fabric/ToNeko.java
+--- a/src/main/java/org/cneko/toneko/fabric/ToNeko.java (revision 18440403dba18125bc1142d918af9917a117fc53)
++++ b/src/main/java/org/cneko/toneko/fabric/ToNeko.java (date 1720001154969)
+@@ -9,7 +9,6 @@
+ import org.cneko.toneko.fabric.commands.ToNekoCommand;
+ import org.cneko.toneko.fabric.events.ChatEvent;
+ import org.cneko.toneko.fabric.events.PlayerConnectionEvents;
+-import org.cneko.toneko.fabric.items.ToNekoItems;
+ import org.cneko.toneko.fabric.util.PermissionUtil;
+
+ public class ToNeko implements ModInitializer {
+@@ -20,8 +19,7 @@
+ ToNekoCommand.init();
+ ToNekoAdminCommand.init();
+ NekoCommand.init();
+- // 注册物品
+- ToNekoItems.register();
++
+ ServerLifecycleEvents.SERVER_STARTED.register(server -> {
+ ModMeta.instance.setServer(server);
+ // 启动聊天监听器
+Index: src/main/java/org/cneko/toneko/fabric/items/NekoPotion.java
+===================================================================
+diff --git a/src/main/java/org/cneko/toneko/fabric/items/NekoPotion.java b/src/main/java/org/cneko/toneko/fabric/items/NekoPotion.java
+deleted file mode 100644
+--- a/src/main/java/org/cneko/toneko/fabric/items/NekoPotion.java (revision 18440403dba18125bc1142d918af9917a117fc53)
++++ /dev/null (revision 18440403dba18125bc1142d918af9917a117fc53)
+@@ -1,85 +0,0 @@
+-package org.cneko.toneko.fabric.items;
+-
+-import net.minecraft.advancement.criterion.Criteria;
+-import net.minecraft.entity.LivingEntity;
+-import net.minecraft.entity.effect.StatusEffectInstance;
+-import net.minecraft.entity.player.PlayerEntity;
+-import net.minecraft.item.Item;
+-import net.minecraft.item.ItemStack;
+-import net.minecraft.item.Items;
+-import net.minecraft.item.PotionItem;
+-import net.minecraft.network.packet.s2c.play.SubtitleS2CPacket;
+-import net.minecraft.network.packet.s2c.play.TitleS2CPacket;
+-import net.minecraft.server.network.ServerPlayerEntity;
+-import net.minecraft.sound.SoundEvents;
+-import net.minecraft.stat.Stats;
+-import net.minecraft.util.ActionResult;
+-import net.minecraft.util.Hand;
+-import net.minecraft.util.TypedActionResult;
+-import net.minecraft.world.World;
+-import net.minecraft.world.event.GameEvent;
+-import org.cneko.toneko.common.api.NekoQuery;
+-
+-
+-import java.util.Iterator;
+-import java.util.List;
+-
+-import static org.cneko.toneko.fabric.util.TextUtil.translatable;
+-public class NekoPotion extends PotionItem {
+- public static final String ID = "neko_potion";
+-
+- public NekoPotion() {
+- super(new Settings().maxCount(1));
+- }
+-
+-
+- public void toneko(World world, PlayerEntity user, Hand hand) {
+- // 如果食物被成功吃掉并且玩家还不是猫猫,则把玩家变成猫猫
+- TypedActionResult result = super.use(world, user, hand);
+- NekoQuery.Neko neko = NekoQuery.getNeko(user.getUuid());
+- if(result.getResult() == ActionResult.CONSUME && !neko.isNeko()){
+- neko.setNeko(true);
+- if(user instanceof ServerPlayerEntity player){
+- // 向猫猫显示标题
+- TitleS2CPacket title = new TitleS2CPacket(translatable("title.toneko.become"));
+- SubtitleS2CPacket subtitle = new SubtitleS2CPacket(translatable("subtitle.toneko.become"));
+- player.networkHandler.sendPacket(title);
+- player.networkHandler.sendPacket(subtitle);
+- // 让猫猫听到经验音效
+- player.playSound(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 1.0F);
+-
+- }
+- }
+- }
+-
+- @Override
+- public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) {
+- PlayerEntity playerEntity = user instanceof PlayerEntity ? (PlayerEntity)user : null;
+- if (playerEntity instanceof ServerPlayerEntity) {
+- Criteria.CONSUME_ITEM.trigger((ServerPlayerEntity)playerEntity, stack);
+- }
+-
+-
+- if (playerEntity != null) {
+- playerEntity.incrementStat(Stats.USED.getOrCreateStat(this));
+- if (!playerEntity.getAbilities().creativeMode) {
+- stack.decrement(1);
+- }
+- }
+-
+- if (playerEntity == null || !playerEntity.getAbilities().creativeMode) {
+- if (stack.isEmpty()) {
+- return new ItemStack(Items.GLASS_BOTTLE);
+- }
+-
+- if (playerEntity != null) {
+- playerEntity.getInventory().insertStack(new ItemStack(Items.GLASS_BOTTLE));
+- }
+-
+- }
+- // 把玩家变成猫猫
+- toneko(world, playerEntity, user.getActiveHand());
+- user.emitGameEvent(GameEvent.DRINK);
+- return stack;
+- }
+-}
+Index: src/main/java/org/cneko/toneko/fabric/items/ToNekoItems.java
+===================================================================
+diff --git a/src/main/java/org/cneko/toneko/fabric/items/ToNekoItems.java b/src/main/java/org/cneko/toneko/fabric/items/ToNekoItems.java
+deleted file mode 100644
+--- a/src/main/java/org/cneko/toneko/fabric/items/ToNekoItems.java (revision 18440403dba18125bc1142d918af9917a117fc53)
++++ /dev/null (revision 18440403dba18125bc1142d918af9917a117fc53)
+@@ -1,29 +0,0 @@
+-package org.cneko.toneko.fabric.items;
+-
+-import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
+-import net.minecraft.item.ItemGroups;
+-import net.minecraft.registry.Registries;
+-import net.minecraft.registry.Registry;
+-import net.minecraft.util.Identifier;
+-import org.cneko.toneko.common.util.ConfigUtil;
+-
+-import static org.cneko.toneko.common.Bootstrap.MODID;
+-
+-public class ToNekoItems {
+- public static NekoPotion NEKO_POTION = new NekoPotion();
+- public static void register() {
+- // 如果启用了仅服务器端,则不注册物品
+- if (!ConfigUtil.ONLY_SERVER) registerWithOutConfig();
+- }
+-
+- /**
+- * 强制注册物品,无论配置文件如何设置
+- */
+- public static void registerWithOutConfig() {
+- Registry.register(Registries.ITEM, Identifier.of(MODID,NekoPotion.ID), NEKO_POTION);
+- // 注册到物品组
+- ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register(content -> {
+- content.add(NEKO_POTION);
+- });
+- }
+-}
+Index: .idea/workspace.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n {\n "lastFilter": {\n "state": "OPEN",\n "assignee": "CSneko"\n }\n}\n {\n "selectedUrlAndAccountId": {\n "url": "git@github.com:CSneko/toNeko.git",\n "accountId": "2ed95e2a-c14a-417d-835b-4eee59706e09"\n }\n}\n \n \n \n \n \n \n \n \n \n {\n "associatedIndex": 3\n}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n
\n \n \n \n true\n true\n false\n false\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n
\n \n \n \n true\n true\n false\n false\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n
\n \n \n \n true\n true\n false\n false\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n
\n \n \n \n true\n true\n false\n false\n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n 1696578879658\n \n \n 1696578879658\n \n \n \n 1708758495217\n \n \n \n 1708758495217\n \n \n \n 1708760338667\n \n \n \n 1708760338667\n \n \n \n 1708760371421\n \n \n \n 1708760371421\n \n \n \n 1708846946428\n \n \n \n 1708846946428\n \n \n \n 1709044497054\n \n \n \n 1709044497054\n \n \n \n 1709131536989\n \n \n \n 1709131536989\n \n \n \n 1709432017149\n \n \n \n 1709432017149\n \n \n \n 1709435294726\n \n \n \n 1709435294726\n \n \n \n 1709736829489\n \n \n \n 1709736829489\n \n \n \n 1709821972874\n \n \n \n 1709821972874\n \n \n \n 1709976475751\n \n \n \n 1709976475752\n \n \n \n 1709983406330\n \n \n \n 1709983406330\n \n \n \n 1710773025506\n \n \n \n 1710773025507\n \n \n \n 1711268324405\n \n \n \n 1711268324406\n \n \n \n 1711289242010\n \n \n \n 1711289242011\n \n \n \n 1711293544996\n \n \n \n 1711293544996\n \n \n \n 1711379437334\n \n \n \n 1711379437335\n \n \n \n 1711551350602\n \n \n \n 1711551350603\n \n \n \n 1712587087169\n \n \n \n 1712587087170\n \n \n \n 1712673957682\n \n \n \n 1712673957683\n \n \n \n 1712757997038\n \n \n \n 1712757997039\n \n \n \n 1713881490252\n \n \n \n 1713881490253\n \n \n \n 1714313235364\n \n \n \n 1714313235365\n \n \n \n 1714538666507\n \n \n \n 1714538666507\n \n \n \n 1714540490236\n \n \n \n 1714540490236\n \n \n \n 1714639763573\n \n \n \n 1714639763574\n \n \n \n 1715004440127\n \n \n \n 1715004440128\n \n \n \n 1715093487576\n \n \n \n 1715093487577\n \n \n \n 1716096732549\n \n \n \n 1716096732549\n \n \n \n 1716391363098\n \n \n \n 1716391363099\n \n \n \n 1716478372393\n \n \n \n 1716478372394\n \n \n \n 1716995087620\n \n \n \n 1716995087621\n \n \n \n 1717081739362\n \n \n \n 1717081739362\n \n \n \n 1717081767690\n \n \n \n 1717081767690\n \n \n \n 1717081893578\n \n \n \n 1717081893578\n \n \n \n 1717082326696\n \n \n \n 1717082326696\n \n \n \n 1717227866473\n \n \n \n 1717227866473\n \n \n \n 1717240863993\n \n \n \n 1717240863993\n \n \n \n 1717512907413\n \n \n \n 1717512907413\n \n \n \n 1717599141714\n \n \n \n 1717599141714\n \n \n \n 1717684339592\n \n \n \n 1717684339593\n \n \n \n 1717770109648\n \n \n \n 1717770109649\n \n \n \n 1718117895553\n \n \n \n 1718117895554\n \n \n \n 1718208349812\n \n \n \n 1718208349814\n \n \n \n 1718638331956\n \n \n \n 1718638331957\n \n \n \n 1718705607397\n \n \n \n 1718705607397\n \n \n \n 1719572331230\n \n \n \n 1719572331231\n \n \n \n 1719622885592\n \n \n \n 1719622885592\n \n \n \n 1719627275579\n \n \n \n 1719627275579\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/workspace.xml b/.idea/workspace.xml
+--- a/.idea/workspace.xml (revision 18440403dba18125bc1142d918af9917a117fc53)
++++ b/.idea/workspace.xml (date 1720021555730)
+@@ -7,18 +7,11 @@
+
+
+
+-
+-
+-
++
+
+-
+-
+-
+-
+-
+-
+-
+-
++
++
++
+
+
+
+@@ -99,34 +92,34 @@
+
+
+
+- {
++ "keyToString": {
++ "ASKED_ADD_EXTERNAL_FILES": "true",
++ "Gradle.toNeko Client.executor": "Run",
++ "Gradle.toNeko Datagen.executor": "Run",
++ "Gradle.toNeko Server.executor": "Run",
++ "Gradle.toNeko [javadoc].executor": "Run",
++ "Gradle.toNeko build.executor": "Run",
++ "Gradle.toNeko datagen.executor": "Run",
++ "Gradle.toNekoFabric build.executor": "Run",
++ "RunOnceActivity.OpenProjectViewOnStart": "true",
++ "RunOnceActivity.ShowReadmeOnStart": "true",
++ "git-widget-placeholder": "1.21",
++ "jdk.selected.com.intellij.ui.dsl.builder.impl.RowImpl.sdk": "17",
++ "kotlin-language-version-configured": "true",
++ "last_opened_file_path": "/media/crystalneko/BA106C158B1B58EF/javatest/mods/toNeko/src/main/resources",
++ "project.structure.last.edited": "项目",
++ "project.structure.proportion": "0.0",
++ "project.structure.side.proportion": "0.0",
++ "settings.editor.selected.configurable": "reference.settingsdialog.project.gradle",
++ "应用程序.Data Generation.executor": "Run"
+ },
+- "keyToStringList": {
+- "jdk.preference.com.intellij.ui.dsl.builder.impl.RowImpl.sdk": [
+- "17=/usr/lib/jvm/java-1.17.0-openjdk-amd64"
++ "keyToStringList": {
++ "jdk.preference.com.intellij.ui.dsl.builder.impl.RowImpl.sdk": [
++ "17=/usr/lib/jvm/java-1.17.0-openjdk-amd64"
+ ]
+ }
+-}]]>
++}
+
+
+
+@@ -240,13 +233,13 @@
+
+
+
+-
+
+
+
++
++
+
+
+-
+
+
+
+@@ -258,14 +251,6 @@
+
+ 1696578879658
+
+-
+-
+- 1708758495217
+-
+-
+-
+- 1708758495217
+-
+
+
+ 1708760338667
+@@ -650,7 +635,15 @@
+
+ 1719627275579
+
+-
++
++
++ 1719999199112
++
++
++
++ 1719999199112
++
++
+
+
+
+@@ -666,7 +659,6 @@
+
+
+
+-
+
+
+
+@@ -691,6 +683,7 @@
+
+
+
+-
++
++
+
+
+\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 7fda0a86..31688200 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -8,17 +8,7 @@
-
-
-
-
-
-
-
-
-
-
@@ -287,14 +277,6 @@
1696578879658
-
-
- 1710773025506
-
-
-
- 1710773025507
-
1711268324405
@@ -679,7 +661,15 @@
1720192492557
-
+
+
+ 1720192821997
+
+
+
+ 1720192821997
+
+
diff --git a/src/main/java/org/cneko/toneko/fabric/commands/NekoCommand.java b/src/main/java/org/cneko/toneko/fabric/commands/NekoCommand.java
index fe9161ae..826d4566 100644
--- a/src/main/java/org/cneko/toneko/fabric/commands/NekoCommand.java
+++ b/src/main/java/org/cneko/toneko/fabric/commands/NekoCommand.java
@@ -126,10 +126,10 @@ public static int lieCommand(CommandContext context) {
// 如果玩家没有躺下,把玩家设置为躺下,否则把玩家设置为正常
if(PlayerTickEvent.lyingPlayers.contains(player)){
PlayerTickEvent.lyingPlayers.remove(player);
- if(!ConfigUtil.ONLY_SERVER && PlayerInstallToNeko.get(playerName)) ServerPlayNetworking.send(player, new EntityPosePayload(EntityPose.SLEEPING,false));
+ if(!ConfigUtil.ONLY_SERVER || PlayerInstallToNeko.get(playerName)) ServerPlayNetworking.send(player, new EntityPosePayload(EntityPose.SLEEPING,false));
}else{
PlayerTickEvent.lyingPlayers.add(player);
- if(!ConfigUtil.ONLY_SERVER && PlayerInstallToNeko.get(playerName)) ServerPlayNetworking.send(player, new EntityPosePayload(EntityPose.SLEEPING,true));
+ if(!ConfigUtil.ONLY_SERVER || PlayerInstallToNeko.get(playerName)) ServerPlayNetworking.send(player, new EntityPosePayload(EntityPose.SLEEPING,true));
}
return 1;
}