File size: 16,263 Bytes
8e39a34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3a7703d
8e39a34
3a7703d
 
 
 
0f57f68
 
8e39a34
 
3a7703d
 
 
 
 
0f57f68
 
8e39a34
 
3a7703d
 
 
 
 
8e39a34
 
3a7703d
 
 
 
 
0f57f68
 
 
 
 
 
 
 
8e39a34
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
{
    "cubix_docs": [
        "https://cubixworld.net/autumn-update-2024",
        "https://cubixworld.net/articles/avtokraft-shakhterskogo-lazera-i-almaznogo-bura"
    ],
    "mob_mappings": {
        "зомби": "EntityZombie",
        "скелет": "EntitySkeleton",
        "паук": "EntitySpider",
        "крипер": "EntityCreeper",
        "свинья": "EntityPig",
        "корова": "EntityCow",
        "овца": "EntitySheep",
        "курица": "EntityChicken",
        "волк": "EntityWolf",
        "кошка": "EntityOcelot",
        "лошадь": "EntityHorse",
        "мобы": "Mobs"
    },
    "command_specs": {
        "follow_me": {
            "description": "Команда для следования за игроком или перемещения к игроку",
            "required_fields": ["type", "message", "repeat"],
            "examples": [
                {
                    "input": "Следуй за мной",
                    "output": {"type": "follow_me", "message": "Хорошо, я буду следовать за вами", "repeat": true}
                },
                {
                    "input": "Приди ко мне",
                    "output": {"type": "follow_me", "message": "Сейчас подойду к вам", "repeat": false}
                },
                {
                    "input": "Следуй за мной и убивай встречных зомби",
                    "output": {"type": "follow_me", "message": "Хорошо, я буду следовать за вами и убивать встречных зомби", "repeat": true, "secondary_action": {"type": "kill_mob", "mob": "EntityZombie", "repeat": true}}
                },
                {
                    "input": "Иди за мной и добывай камень",
                    "output": {"type": "follow_me", "message": "Хорошо, я буду следовать за вами и добывать камень", "repeat": true, "secondary_action": {"type": "break_block", "blocks": ["minecraft:stone"], "repeat": true}}
                }
            ]
        },
        "message": {
            "description": "Обычное сообщение в чате или запоминание обращения",
            "required_fields": ["type", "message"],
            "examples": [
                {
                    "input": "Привет, как дела?",
                    "output": {"type": "message", "message": "Привет! У меня всё хорошо, готов помочь вам в игре!"}
                },
                {
                    "input": "Называй меня лучший друг",
                    "output": {"type": "message", "message": "Хорошо, буду называть вас лучший друг!"}
                }
            ]
        },
        "kill_mob": {
            "description": "Команда для убийства мобов или животных. Поле mob должно содержать entity ID моба из списка доступных.",
            "required_fields": ["type", "message", "repeat", "mob"],
            "examples": [
                {
                    "input": "Убей зомби",
                    "output": {"type": "kill_mob", "message": "Хорошо, я иду убивать зомби", "repeat": false, "mob": "EntityZombie"}
                },
                {
                    "input": "Убивай мобов",
                    "output": {"type": "kill_mob", "message": "Хорошо, я буду убивать мобов", "repeat": true, "mob": "Mobs"}
                },
                {
                    "input": "Убивай скелетов",
                    "output": {"type": "kill_mob", "message": "Хорошо, я буду убивать скелетов", "repeat": true, "mob": "EntitySkeleton"}
                },
                {
                    "input": "Убей всех свиней",
                    "output": {"type": "kill_mob", "message": "Хорошо, я убью всех свиней", "repeat": false, "mob": "EntityPig"}
                }
            ]
        },
        "break_tree": {
            "description": "Команда для ломания деревьев",
            "required_fields": ["type", "message", "repeat", "quantityTrees", "quantity", "blocks"],
            "examples": [
                {
                    "input": "Сломай дерево",
                    "output": {"type": "break_tree", "message": "Хорошо, я сломаю дерево", "repeat": false, "quantityTrees": 1, "quantity": 0, "blocks": []}
                },
                {
                    "input": "Добудь дерева",
                    "output": {"type": "break_tree", "message": "Хорошо, я буду добывать дерево", "repeat": true, "quantityTrees": 0, "quantity": 0, "blocks": []}
                },
                {
                    "input": "Добудь 10 деревьев",
                    "output": {"type": "break_tree", "message": "Хорошо, я добуду 10 деревьев", "repeat": false, "quantityTrees": 10, "quantity": 0, "blocks": []}
                },
                {
                    "input": "Добудь 50 блоков дуба",
                    "output": {"type": "break_tree", "message": "Хорошо, я добуду 50 блоков дуба", "repeat": false, "quantityTrees": 0, "quantity": 50, "blocks": ["minecraft:oak_log"]}
                }
            ]
        },
        "harvest_crops": {
            "description": "Команда для сбора урожая",
            "required_fields": ["type", "message", "repeat", "harvest"],
            "examples": [
                {
                    "input": "Собери урожай",
                    "output": {"type": "harvest_crops", "message": "Хорошо, я соберу урожай", "repeat": false, "harvest": []}
                },
                {
                    "input": "Собирай пшеницу",
                    "output": {"type": "harvest_crops", "message": "Хорошо, я буду собирать пшеницу", "repeat": true, "harvest": ["пшеница"]}
                },
                {
                    "input": "Собирай картофель и морковь",
                    "output": {"type": "harvest_crops", "message": "Хорошо, я буду собирать картофель и морковь", "repeat": true, "harvest": ["картофель", "морковь"]}
                }
            ]
        },
        "break_block": {
            "description": "Команда для ломания блоков",
            "required_fields": ["type", "message", "repeat", "blocks", "quantity"],
            "examples": [
                {
                    "input": "Сломай землю",
                    "output": {"type": "break_block", "message": "Хорошо, я сломаю землю", "repeat": false, "blocks": ["minecraft:dirt"], "quantity": 1, "location": ""}
                },
                {
                    "input": "Сломай 20 земли",
                    "output": {"type": "break_block", "message": "Хорошо, я сломаю 20 блоков земли", "repeat": false, "quantity": 20, "blocks": ["minecraft:dirt"], "location": ""}
                },
                {
                    "input": "Копай камень",
                    "output": {"type": "break_block", "message": "Хорошо, я буду копать камень", "repeat": true, "blocks": ["minecraft:stone"], "quantity": 0, "location": ""}
                },
                {
                    "input": "Копай вниз",
                    "output": {"type": "break_block", "message": "Хорошо, я буду копать вниз", "repeat": true, "blocks": [], "quantity": 0, "location": "вниз"}
                },
                {
                    "input": "Добудь руду на севере",
                    "output": {"type": "break_block", "message": "Хорошо, я добуду руду на севере", "repeat": false, "blocks": [], "quantity": 0, "location": "на севере"}
                }
            ]
        },
        "cycle_break_block": {
            "description": "Команда для цикличного ломания блока на координатах игрока",
            "required_fields": ["type", "message"],
            "examples": [
                {
                    "input": "Копай вот здесь постоянно",
                    "output": {"type": "cycle_break_block", "message": "Буду копать на этом месте"}
                },
                {
                    "input": "Ломай блок под собой",
                    "output": {"type": "cycle_break_block", "message": "Буду ломать блок в этом месте"}
                }
            ]
        },
        "fishing": {
            "description": "Команда для ловли рыбы",
            "required_fields": ["type", "repeat", "quantity", "message"],
            "examples": [
                {
                    "input": "Слови рыбу",
                    "output": {"type": "fishing", "repeat": false, "quantity": 1, "message": "Хорошо, я поймаю рыбу"}
                },
                {
                    "input": "Лови рыбу",
                    "output": {"type": "fishing", "repeat": true, "quantity": 0, "message": "Хорошо, я буду ловить рыбу"}
                },
                {
                    "input": "Слови 10 рыб",
                    "output": {"type": "fishing", "repeat": false, "quantity": 10, "message": "Хорошо, я поймаю 10 рыб"}
                }
            ]
        },
        "shear_wool": {
            "description": "Команда для стрижки овец",
            "required_fields": ["type", "repeat", "quantity", "message"],
            "examples": [
                {
                    "input": "Постриги овец",
                    "output": {"type": "shear_wool", "repeat": false, "quantity": 0, "message": "Хорошо, я постригу овец"}
                },
                {
                    "input": "Стриги овец",
                    "output": {"type": "shear_wool", "repeat": true, "quantity": 0, "message": "Хорошо, я буду стричь овец"}
                },
                {
                    "input": "Постриги 10 овец",
                    "output": {"type": "shear_wool", "repeat": false, "quantity": 10, "message": "Хорошо, я постригу 10 овец"}
                }
            ]
        },
        "lighting": {
            "description": "Команда для освещения или размещения источников света",
            "required_fields": ["type", "message", "quantity"],
            "examples": [
                {
                    "input": "Подсвети мне",
                    "output": {"type": "lighting", "message": "Хорошо, я буду освещать путь", "quantity": 0}
                },
                {
                    "input": "Освещай",
                    "output": {"type": "lighting", "message": "Включаю освещение", "quantity": 0}
                },
                {
                    "input": "Поставь 10 факелов",
                    "output": {"type": "lighting", "message": "Хорошо, я поставлю 10 факелов", "quantity": 10}
                },
                {
                    "input": "Расставь факелы вокруг дома",
                    "output": {"type": "lighting", "message": "Хорошо, я расставлю факелы вокруг дома", "quantity": 0}
                }
            ]
        },
        "stop": {
            "description": "Команда для остановки действий бота",
            "required_fields": ["type", "message"],
            "examples": [
                {
                    "input": "Остановись",
                    "output": {"type": "stop", "message": "Я остановился"}
                },
                {
                    "input": "Прекрати убивать зомби",
                    "output": {"type": "stop", "message": "Я прекратил убивать зомби"}
                },
                {
                    "input": "Хватит копать",
                    "output": {"type": "stop", "message": "Я прекратил копать"}
                }
            ]
        }
    },
    "system_prompt_template": {
        "intro": "You are an AI assistant for the Minecraft game server called CubixWorld. Your task is to understand player requests in Russian and convert them into structured JSON commands with high precision and reliability.",
        "role_section": [
            "Analyze player messages carefully to determine their exact intent and required actions",
            "Convert natural language requests into precise JSON commands following the exact specifications",
            "Ensure all command parameters are validated and properly formatted",
            "Respond with valid JSON only, maintaining strict schema compliance",
            "When uncertain about intent, prefer message responses over incorrect commands",
            "For conversational messages like greetings, thanks, or jokes, respond in a friendly and engaging manner"
        ],
        "command_detection_guidelines": [
            "Carefully analyze verb forms and temporal indicators to determine command type:",
            "- Continuous actions: \"продолжай\", \"постоянно\", verbs with \"-ай\" suffix",
            "- One-time commands: \"сделай\", \"сломай\", \"приди\"",
            "For compound actions, identify primary and secondary components clearly",
            "Extract and validate all numeric quantities before including in commands",
            "Process spatial and directional information with high precision",
            "For conversational inputs (greetings, thanks, jokes, etc.), use the 'message' type response"
        ],
        "contextual_information_processing": [
            "Prioritize exact matches from documentation over general knowledge",
            "Cross-reference game mechanics with server-specific features",
            "Use precise entity IDs as specified in mob mappings",
            "When documentation provides specific command formats, follow them exactly",
            "Consider server limitations and restrictions when generating commands"
        ],
        "response_format": [
            "Ensure all JSON responses are properly nested and formatted",
            "Include all required fields as specified in command schemas",
            "Validate numeric values are within acceptable ranges",
            "Use consistent casing and formatting for entity IDs and commands",
            "Include relevant metadata and context in responses when available"
        ],
        "conversation_handling": [
            "For greetings (привет, здравствуй, etc.), respond with a friendly greeting and offer to help",
            "For questions about your status (как дела, как ты, etc.), respond positively and ask how you can assist",
            "For expressions of gratitude (спасибо, благодарю, etc.), acknowledge with a friendly response",
            "For requests for jokes or fun content, respond with a Minecraft-themed joke or fun fact",
            "Always maintain a helpful, friendly tone appropriate for a game assistant",
            "Support both Russian and Ukrainian language inputs with appropriate responses"
        ]
    }
}