blockmine 1.25.0 → 1.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -1
- package/backend/cli.js +1 -1
- package/backend/package.json +2 -2
- package/backend/prisma/migrations/20260328173000_add_plugin_source_ref/migration.sql +2 -0
- package/backend/prisma/migrations/migration_lock.toml +2 -2
- package/backend/prisma/schema.prisma +2 -0
- package/backend/src/api/routes/apiKeys.js +8 -0
- package/backend/src/api/routes/bots.js +258 -9
- package/backend/src/api/routes/eventGraphs.js +151 -1
- package/backend/src/api/routes/health.js +38 -0
- package/backend/src/api/routes/nodeRegistry.js +63 -0
- package/backend/src/api/routes/plugins.js +254 -29
- package/backend/src/container.js +11 -8
- package/backend/src/core/BotCommandLoader.js +161 -0
- package/backend/src/core/BotConnection.js +125 -0
- package/backend/src/core/BotEventHandlers.js +234 -0
- package/backend/src/core/BotIPCHandler.js +445 -0
- package/backend/src/core/BotManager.js +15 -7
- package/backend/src/core/BotProcess.js +75 -142
- package/backend/src/core/EventGraphManager.js +7 -3
- package/backend/src/core/GraphDebugHandler.js +229 -0
- package/backend/src/core/GraphDebugIPC.js +117 -0
- package/backend/src/core/GraphExecutionEngine.js +545 -978
- package/backend/src/core/GraphTraversal.js +80 -0
- package/backend/src/core/GraphValidation.js +73 -0
- package/backend/src/core/NodeDefinition.js +138 -0
- package/backend/src/core/NodeRegistry.js +153 -141
- package/backend/src/core/PluginManager.js +272 -31
- package/backend/src/core/RewindSignal.js +9 -0
- package/backend/src/core/config/ConfigValidator.js +72 -0
- package/backend/src/core/config/FeatureFlags.js +52 -0
- package/backend/src/core/config/__tests__/ConfigValidator.test.js +232 -0
- package/backend/src/core/domain/entities/Bot.js +39 -0
- package/backend/src/core/domain/entities/Command.js +41 -0
- package/backend/src/core/domain/entities/EventGraph.js +39 -0
- package/backend/src/core/domain/entities/Plugin.js +45 -0
- package/backend/src/core/domain/entities/User.js +40 -0
- package/backend/src/core/domain/services/DependencyResolver.js +168 -0
- package/backend/src/core/domain/services/GraphValidator.js +117 -0
- package/backend/src/core/domain/services/PermissionChecker.js +34 -0
- package/backend/src/core/domain/services/__tests__/DependencyResolver.test.js +126 -0
- package/backend/src/core/domain/valueObjects/BotConfig.js +27 -0
- package/backend/src/core/domain/valueObjects/DependencyGraph.js +86 -0
- package/backend/src/core/domain/valueObjects/PluginManifest.js +36 -0
- package/backend/src/core/errors/BaseError.js +29 -0
- package/backend/src/core/errors/ErrorHandler.js +81 -0
- package/backend/src/core/errors/__tests__/ErrorHandler.test.js +188 -0
- package/backend/src/core/errors/index.js +68 -0
- package/backend/src/core/infrastructure/BatchingUtility.js +66 -0
- package/backend/src/core/infrastructure/CircuitBreaker.js +103 -0
- package/backend/src/core/infrastructure/ConnectionPool.js +81 -0
- package/backend/src/core/infrastructure/RateLimiter.js +64 -0
- package/backend/src/core/infrastructure/__tests__/BatchingUtility.test.js +86 -0
- package/backend/src/core/infrastructure/__tests__/CircuitBreaker.test.js +156 -0
- package/backend/src/core/infrastructure/__tests__/ConnectionPool.test.js +146 -0
- package/backend/src/core/infrastructure/__tests__/RateLimiter.test.js +171 -0
- package/backend/src/core/ipc/botApiFactory.js +72 -0
- package/backend/src/core/ipc/ipcMessageTypes.js +115 -0
- package/backend/src/core/logging/AuditLogger.js +61 -0
- package/backend/src/core/logging/StructuredLogger.js +80 -0
- package/backend/src/core/logging/__tests__/StructuredLogger.test.js +213 -0
- package/backend/src/core/logging/index.js +7 -0
- package/backend/src/core/metrics/MetricsCollector.js +104 -0
- package/backend/src/core/metrics/__tests__/MetricsCollector.test.js +131 -0
- package/backend/src/core/node-registries/actionsNodes.js +191 -0
- package/backend/src/core/node-registries/arraysNodes.js +152 -0
- package/backend/src/core/node-registries/botNodes.js +48 -0
- package/backend/src/core/node-registries/containerNodes.js +141 -0
- package/backend/src/core/node-registries/dataNodes.js +284 -0
- package/backend/src/core/node-registries/debugNodes.js +23 -0
- package/backend/src/core/node-registries/eventsNodes.js +223 -0
- package/backend/src/core/node-registries/flowNodes.js +151 -0
- package/backend/src/core/node-registries/furnaceNodes.js +123 -0
- package/backend/src/core/node-registries/index.js +108 -0
- package/backend/src/core/node-registries/inventory.js +102 -106
- package/backend/src/core/node-registries/logicNodes.js +54 -0
- package/backend/src/core/node-registries/mathNodes.js +38 -0
- package/backend/src/core/node-registries/navigationNodes.js +109 -0
- package/backend/src/core/node-registries/objectsNodes.js +90 -0
- package/backend/src/core/node-registries/stringsNodes.js +165 -0
- package/backend/src/core/node-registries/timeNodes.js +105 -0
- package/backend/src/core/node-registries/typeNodes.js +22 -0
- package/backend/src/core/node-registries/usersNodes.js +126 -0
- package/backend/src/core/nodes/arrays/shuffle.js +14 -0
- package/backend/src/core/nodes/bot/get_name.js +8 -0
- package/backend/src/core/nodes/bot/stop_bot.js +5 -0
- package/backend/src/core/nodes/container/open.js +101 -111
- package/backend/src/core/nodes/data/store_read.js +26 -0
- package/backend/src/core/nodes/data/store_write.js +23 -0
- package/backend/src/core/nodes/event/call_event.js +31 -0
- package/backend/src/core/nodes/event/custom_event.js +8 -0
- package/backend/src/core/nodes/flow/timer.js +35 -0
- package/backend/src/core/nodes/inventory/drop.js +73 -65
- package/backend/src/core/nodes/inventory/equip.js +54 -45
- package/backend/src/core/nodes/inventory/select_slot.js +48 -46
- package/backend/src/core/nodes/navigation/follow.js +54 -51
- package/backend/src/core/nodes/navigation/go_to.js +41 -53
- package/backend/src/core/nodes/navigation/go_to_entity.js +65 -69
- package/backend/src/core/nodes/navigation/go_to_player.js +65 -70
- package/backend/src/core/nodes/navigation/stop.js +17 -26
- package/backend/src/core/nodes/users/add_to_group.js +24 -0
- package/backend/src/core/nodes/users/check_permission.js +26 -0
- package/backend/src/core/nodes/users/remove_from_group.js +24 -0
- package/backend/src/core/services/BotIPCMessageRouter.js +337 -0
- package/backend/src/core/services/BotLifecycleService.js +41 -632
- package/backend/src/core/services/CacheManager.js +83 -23
- package/backend/src/core/services/CrashRestartManager.js +42 -0
- package/backend/src/core/services/DebugSessionManager.js +114 -12
- package/backend/src/core/services/EventGraphService.js +69 -0
- package/backend/src/core/services/MinecraftBotManager.js +9 -1
- package/backend/src/core/services/PluginManagementService.js +84 -0
- package/backend/src/core/services/TestModeContext.js +65 -0
- package/backend/src/core/services/__tests__/CacheManager.test.js +168 -0
- package/backend/src/core/services.js +1 -11
- package/backend/src/core/validation/InputValidator.js +167 -0
- package/backend/src/core/validation/__tests__/InputValidator.test.js +296 -0
- package/backend/src/real-time/botApi/index.js +1 -1
- package/backend/src/real-time/socketHandler.js +26 -0
- package/backend/src/server.js +10 -5
- package/frontend/dist/assets/{browser-ponyfill-DN7pwmHT.js → browser-ponyfill-D8y0Ty7C.js} +1 -1
- package/frontend/dist/assets/index-CFJLS0dk.css +32 -0
- package/frontend/dist/assets/{index-LSy71uwm.js → index-D91UGNMG.js} +1880 -1881
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/locales/en/bots.json +4 -1
- package/frontend/dist/locales/en/common.json +7 -1
- package/frontend/dist/locales/en/login.json +2 -0
- package/frontend/dist/locales/en/management.json +79 -1
- package/frontend/dist/locales/en/nodes.json +59 -4
- package/frontend/dist/locales/en/plugin-detail.json +24 -4
- package/frontend/dist/locales/en/plugins.json +226 -7
- package/frontend/dist/locales/en/setup.json +2 -0
- package/frontend/dist/locales/en/sidebar.json +171 -3
- package/frontend/dist/locales/en/visual-editor.json +230 -31
- package/frontend/dist/locales/ru/bots.json +4 -1
- package/frontend/dist/locales/ru/login.json +2 -0
- package/frontend/dist/locales/ru/management.json +79 -1
- package/frontend/dist/locales/ru/minecraft-viewer.json +3 -0
- package/frontend/dist/locales/ru/nodes.json +105 -51
- package/frontend/dist/locales/ru/plugins.json +103 -4
- package/frontend/dist/locales/ru/setup.json +2 -0
- package/frontend/dist/locales/ru/sidebar.json +171 -3
- package/frontend/dist/locales/ru/visual-editor.json +232 -33
- package/frontend/package.json +2 -0
- package/nul +12 -0
- package/package.json +3 -3
- package/scripts/postinstall.js +38 -0
- package/backend/package-lock.json +0 -6801
- package/backend/src/core/node-registries/actions.js +0 -202
- package/backend/src/core/node-registries/arrays.js +0 -155
- package/backend/src/core/node-registries/bot.js +0 -23
- package/backend/src/core/node-registries/container.js +0 -162
- package/backend/src/core/node-registries/data.js +0 -290
- package/backend/src/core/node-registries/debug.js +0 -26
- package/backend/src/core/node-registries/events.js +0 -201
- package/backend/src/core/node-registries/flow.js +0 -139
- package/backend/src/core/node-registries/furnace.js +0 -143
- package/backend/src/core/node-registries/logic.js +0 -62
- package/backend/src/core/node-registries/math.js +0 -42
- package/backend/src/core/node-registries/navigation.js +0 -111
- package/backend/src/core/node-registries/objects.js +0 -98
- package/backend/src/core/node-registries/strings.js +0 -187
- package/backend/src/core/node-registries/time.js +0 -113
- package/backend/src/core/node-registries/type.js +0 -25
- package/backend/src/core/node-registries/users.js +0 -79
- package/frontend/dist/assets/index-SfhKxI4-.css +0 -32
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
|
|
50
50
|
"flow:for_each": {
|
|
51
|
-
"label": "
|
|
51
|
+
"label": "Перебор массива (цикл)",
|
|
52
52
|
"description": "Выполняет \"Тело цикла\" для каждого элемента в \"Массиве\"",
|
|
53
53
|
"pins": {
|
|
54
54
|
"loop_body": "Тело цикла",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
},
|
|
60
60
|
|
|
61
61
|
"flow:while": {
|
|
62
|
-
"label": "
|
|
62
|
+
"label": "Цикл While",
|
|
63
63
|
"description": "Выполняет \"Тело цикла\" пока условие истинно",
|
|
64
64
|
"pins": {
|
|
65
65
|
"condition": "Условие",
|
|
@@ -70,12 +70,12 @@
|
|
|
70
70
|
},
|
|
71
71
|
|
|
72
72
|
"flow:break": {
|
|
73
|
-
"label": "
|
|
73
|
+
"label": "Выйти из цикла",
|
|
74
74
|
"description": "Немедленно прерывает выполнение цикла (For Each Loop) и передает управление на его выход Completed"
|
|
75
75
|
},
|
|
76
76
|
|
|
77
77
|
"flow:delay": {
|
|
78
|
-
"label": "
|
|
78
|
+
"label": "Задержка",
|
|
79
79
|
"description": "Ожидает указанное количество миллисекунд, затем продолжает выполнение",
|
|
80
80
|
"pins": {
|
|
81
81
|
"delay": "Задержка (мс)",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
},
|
|
128
128
|
|
|
129
129
|
"data:number_literal": {
|
|
130
|
-
"label": "
|
|
130
|
+
"label": "Число",
|
|
131
131
|
"description": "Простое числовое значение."
|
|
132
132
|
},
|
|
133
133
|
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
},
|
|
241
241
|
|
|
242
242
|
"math:random_number": {
|
|
243
|
-
"label": "
|
|
243
|
+
"label": "Случайное число",
|
|
244
244
|
"description": "Генерирует случайное число в заданном диапазоне",
|
|
245
245
|
"pins": {
|
|
246
246
|
"min": "Мин",
|
|
@@ -461,7 +461,7 @@
|
|
|
461
461
|
},
|
|
462
462
|
|
|
463
463
|
"action:send_message": {
|
|
464
|
-
"label": "
|
|
464
|
+
"label": "Отправить сообщение",
|
|
465
465
|
"description": "Отправляет сообщение в чат. Поддерживает переменные в формате {varName}",
|
|
466
466
|
"pins": {
|
|
467
467
|
"chat_type": "Тип чата",
|
|
@@ -491,7 +491,7 @@
|
|
|
491
491
|
},
|
|
492
492
|
|
|
493
493
|
"action:send_log": {
|
|
494
|
-
"label": "
|
|
494
|
+
"label": "Лог",
|
|
495
495
|
"description": "Отправляет сообщение в логи бота"
|
|
496
496
|
},
|
|
497
497
|
|
|
@@ -505,7 +505,7 @@
|
|
|
505
505
|
},
|
|
506
506
|
|
|
507
507
|
"action:bot_look_at": {
|
|
508
|
-
"label": "
|
|
508
|
+
"label": "Смотреть на",
|
|
509
509
|
"description": "Поворачивает голову бота на цель",
|
|
510
510
|
"pins": {
|
|
511
511
|
"target": "Цель",
|
|
@@ -529,17 +529,71 @@
|
|
|
529
529
|
|
|
530
530
|
"action:create_command": {
|
|
531
531
|
"label": "Создать команду",
|
|
532
|
-
"description": "Создаёт новую команду"
|
|
532
|
+
"description": "Создаёт новую команду",
|
|
533
|
+
"pins": {
|
|
534
|
+
"exec": "Выполнить",
|
|
535
|
+
"name": "Имя команды",
|
|
536
|
+
"description": "Описание",
|
|
537
|
+
"aliases": "Алиасы",
|
|
538
|
+
"cooldown": "Кулдаун (сек)",
|
|
539
|
+
"allowedChatTypes": "Типы чата",
|
|
540
|
+
"permissionName": "Название права",
|
|
541
|
+
"temporary": "Временная?",
|
|
542
|
+
"commandId": "ID команды",
|
|
543
|
+
"success": "Успешно?"
|
|
544
|
+
},
|
|
545
|
+
"placeholders": {
|
|
546
|
+
"name": "моя-команда",
|
|
547
|
+
"description": "Описание команды",
|
|
548
|
+
"aliases": "[\"алиас1\", \"алиас2\"]",
|
|
549
|
+
"cooldown": "0",
|
|
550
|
+
"allowedChatTypes": "[\"chat\", \"private\"]",
|
|
551
|
+
"permissionName": "модератор"
|
|
552
|
+
},
|
|
553
|
+
"options": {
|
|
554
|
+
"temporary": {
|
|
555
|
+
"false": "Постоянная",
|
|
556
|
+
"true": "Временная"
|
|
557
|
+
}
|
|
558
|
+
}
|
|
533
559
|
},
|
|
534
560
|
|
|
535
561
|
"action:update_command": {
|
|
536
562
|
"label": "Обновить команду",
|
|
537
|
-
"description": "Обновляет существующую команду"
|
|
563
|
+
"description": "Обновляет существующую команду",
|
|
564
|
+
"pins": {
|
|
565
|
+
"exec": "Выполнить",
|
|
566
|
+
"commandName": "Имя команды",
|
|
567
|
+
"newName": "Новое имя",
|
|
568
|
+
"description": "Описание",
|
|
569
|
+
"aliases": "Алиасы",
|
|
570
|
+
"cooldown": "Кулдаун (сек)",
|
|
571
|
+
"allowedChatTypes": "Типы чата",
|
|
572
|
+
"permissionName": "Название права",
|
|
573
|
+
"success": "Успешно?"
|
|
574
|
+
},
|
|
575
|
+
"placeholders": {
|
|
576
|
+
"commandName": "моя-команда",
|
|
577
|
+
"newName": "новая-команда",
|
|
578
|
+
"description": "Новое описание команды",
|
|
579
|
+
"aliases": "[\"алиас1\", \"алиас2\"]",
|
|
580
|
+
"cooldown": "0",
|
|
581
|
+
"allowedChatTypes": "[\"chat\", \"private\"]",
|
|
582
|
+
"permissionName": "модератор"
|
|
583
|
+
}
|
|
538
584
|
},
|
|
539
585
|
|
|
540
586
|
"action:delete_command": {
|
|
541
587
|
"label": "Удалить команду",
|
|
542
|
-
"description": "Удаляет команду"
|
|
588
|
+
"description": "Удаляет команду",
|
|
589
|
+
"pins": {
|
|
590
|
+
"exec": "Выполнить",
|
|
591
|
+
"commandName": "Имя команды",
|
|
592
|
+
"success": "Успешно?"
|
|
593
|
+
},
|
|
594
|
+
"placeholders": {
|
|
595
|
+
"commandName": "моя-команда"
|
|
596
|
+
}
|
|
543
597
|
},
|
|
544
598
|
|
|
545
599
|
"time:datetime_literal": {
|
|
@@ -645,7 +699,7 @@
|
|
|
645
699
|
},
|
|
646
700
|
|
|
647
701
|
"event:command": {
|
|
648
|
-
"label": "
|
|
702
|
+
"label": "При выполнении команды",
|
|
649
703
|
"description": "Стартовая точка для графа команды",
|
|
650
704
|
"pins": {
|
|
651
705
|
"command_name": "Имя команды",
|
|
@@ -658,7 +712,7 @@
|
|
|
658
712
|
},
|
|
659
713
|
|
|
660
714
|
"event:chat": {
|
|
661
|
-
"label": "
|
|
715
|
+
"label": "Сообщение в чате",
|
|
662
716
|
"description": "Срабатывает, когда в чат приходит сообщение",
|
|
663
717
|
"pins": {
|
|
664
718
|
"username": "Игрок",
|
|
@@ -668,57 +722,57 @@
|
|
|
668
722
|
},
|
|
669
723
|
|
|
670
724
|
"event:raw_message": {
|
|
671
|
-
"label": "
|
|
725
|
+
"label": "Сырое сообщение",
|
|
672
726
|
"description": "Срабатывает при получении любого сообщения"
|
|
673
727
|
},
|
|
674
728
|
|
|
675
729
|
"event:player_joined": {
|
|
676
|
-
"label": "
|
|
730
|
+
"label": "Игрок зашёл",
|
|
677
731
|
"description": "Срабатывает когда игрок заходит на сервер"
|
|
678
732
|
},
|
|
679
733
|
|
|
680
734
|
"event:player_left": {
|
|
681
|
-
"label": "
|
|
735
|
+
"label": "Игрок вышел",
|
|
682
736
|
"description": "Срабатывает когда игрок выходит с сервера"
|
|
683
737
|
},
|
|
684
738
|
|
|
685
739
|
"event:entity_spawn": {
|
|
686
|
-
"label": "
|
|
740
|
+
"label": "Сущность появилась",
|
|
687
741
|
"description": "Срабатывает при появлении сущности"
|
|
688
742
|
},
|
|
689
743
|
|
|
690
744
|
"event:entity_moved": {
|
|
691
|
-
"label": "
|
|
745
|
+
"label": "Сущность двигается",
|
|
692
746
|
"description": "Срабатывает при движении сущности"
|
|
693
747
|
},
|
|
694
748
|
|
|
695
749
|
"event:entity_gone": {
|
|
696
|
-
"label": "
|
|
750
|
+
"label": "Сущность исчезла",
|
|
697
751
|
"description": "Срабатывает когда сущность пропадает"
|
|
698
752
|
},
|
|
699
753
|
|
|
700
754
|
"event:bot_died": {
|
|
701
|
-
"label": "
|
|
755
|
+
"label": "Бот умер",
|
|
702
756
|
"description": "Срабатывает когда бот умирает"
|
|
703
757
|
},
|
|
704
758
|
|
|
705
759
|
"event:bot_startup": {
|
|
706
|
-
"label": "
|
|
760
|
+
"label": "Запуск бота",
|
|
707
761
|
"description": "Срабатывает при запуске бота"
|
|
708
762
|
},
|
|
709
763
|
|
|
710
764
|
"event:health": {
|
|
711
|
-
"label": "
|
|
765
|
+
"label": "Здоровье",
|
|
712
766
|
"description": "Срабатывает при изменении здоровья"
|
|
713
767
|
},
|
|
714
768
|
|
|
715
769
|
"event:websocket_call": {
|
|
716
|
-
"label": "
|
|
770
|
+
"label": "WebSocket вызов",
|
|
717
771
|
"description": "Срабатывает при WebSocket вызове"
|
|
718
772
|
},
|
|
719
773
|
|
|
720
774
|
"inventory:get_all": {
|
|
721
|
-
"label": "
|
|
775
|
+
"label": "Весь инвентарь",
|
|
722
776
|
"description": "Возвращает весь инвентарь бота как массив предметов",
|
|
723
777
|
"pins": {
|
|
724
778
|
"items": "Предметы",
|
|
@@ -729,7 +783,7 @@
|
|
|
729
783
|
},
|
|
730
784
|
|
|
731
785
|
"inventory:find_item": {
|
|
732
|
-
"label": "
|
|
786
|
+
"label": "Найти предмет",
|
|
733
787
|
"description": "Находит предмет в инвентаре",
|
|
734
788
|
"pins": {
|
|
735
789
|
"itemName": "Имя предмета",
|
|
@@ -744,7 +798,7 @@
|
|
|
744
798
|
},
|
|
745
799
|
|
|
746
800
|
"inventory:count_item": {
|
|
747
|
-
"label": "
|
|
801
|
+
"label": "Подсчитать предметы",
|
|
748
802
|
"description": "Подсчитывает количество предметов",
|
|
749
803
|
"pins": {
|
|
750
804
|
"itemName": "Имя предмета",
|
|
@@ -755,7 +809,7 @@
|
|
|
755
809
|
},
|
|
756
810
|
|
|
757
811
|
"inventory:has_item": {
|
|
758
|
-
"label": "
|
|
812
|
+
"label": "Есть предмет?",
|
|
759
813
|
"description": "Проверяет наличие предмета",
|
|
760
814
|
"pins": {
|
|
761
815
|
"itemName": "Имя предмета",
|
|
@@ -770,7 +824,7 @@
|
|
|
770
824
|
},
|
|
771
825
|
|
|
772
826
|
"inventory:get_slot": {
|
|
773
|
-
"label": "
|
|
827
|
+
"label": "Получить слот",
|
|
774
828
|
"description": "Получает предмет из слота",
|
|
775
829
|
"pins": {
|
|
776
830
|
"slotNumber": "Номер слота",
|
|
@@ -783,7 +837,7 @@
|
|
|
783
837
|
},
|
|
784
838
|
|
|
785
839
|
"inventory:get_held_item": {
|
|
786
|
-
"label": "
|
|
840
|
+
"label": "Предмет в руке",
|
|
787
841
|
"description": "Возвращает предмет в руке",
|
|
788
842
|
"pins": {
|
|
789
843
|
"hand": "Рука",
|
|
@@ -800,7 +854,7 @@
|
|
|
800
854
|
},
|
|
801
855
|
|
|
802
856
|
"inventory:equip": {
|
|
803
|
-
"label": "
|
|
857
|
+
"label": "Экипировать",
|
|
804
858
|
"description": "Экипирует предмет",
|
|
805
859
|
"pins": {
|
|
806
860
|
"itemName": "Предмет",
|
|
@@ -813,7 +867,7 @@
|
|
|
813
867
|
},
|
|
814
868
|
|
|
815
869
|
"inventory:drop": {
|
|
816
|
-
"label": "
|
|
870
|
+
"label": "Выбросить",
|
|
817
871
|
"description": "Выбрасывает предмет",
|
|
818
872
|
"pins": {
|
|
819
873
|
"itemName": "Предмет",
|
|
@@ -828,7 +882,7 @@
|
|
|
828
882
|
},
|
|
829
883
|
|
|
830
884
|
"inventory:select_slot": {
|
|
831
|
-
"label": "
|
|
885
|
+
"label": "Выбрать слот",
|
|
832
886
|
"description": "Выбирает слот в хотбаре",
|
|
833
887
|
"pins": {
|
|
834
888
|
"slot": "Слот",
|
|
@@ -839,7 +893,7 @@
|
|
|
839
893
|
},
|
|
840
894
|
|
|
841
895
|
"navigation:go_to": {
|
|
842
|
-
"label": "
|
|
896
|
+
"label": "Идти к",
|
|
843
897
|
"description": "Перемещает бота к указанным координатам используя pathfinding",
|
|
844
898
|
"pins": {
|
|
845
899
|
"range": "Радиус",
|
|
@@ -851,7 +905,7 @@
|
|
|
851
905
|
},
|
|
852
906
|
|
|
853
907
|
"navigation:go_to_player": {
|
|
854
|
-
"label": "
|
|
908
|
+
"label": "Идти к игроку",
|
|
855
909
|
"description": "Перемещает бота к игроку",
|
|
856
910
|
"pins": {
|
|
857
911
|
"playerName": "Имя игрока",
|
|
@@ -866,7 +920,7 @@
|
|
|
866
920
|
},
|
|
867
921
|
|
|
868
922
|
"navigation:go_to_entity": {
|
|
869
|
-
"label": "
|
|
923
|
+
"label": "Идти к сущности",
|
|
870
924
|
"description": "Перемещает бота к сущности",
|
|
871
925
|
"pins": {
|
|
872
926
|
"entity": "Сущность",
|
|
@@ -879,7 +933,7 @@
|
|
|
879
933
|
},
|
|
880
934
|
|
|
881
935
|
"navigation:follow": {
|
|
882
|
-
"label": "
|
|
936
|
+
"label": "Следовать",
|
|
883
937
|
"description": "Бот следует за целью",
|
|
884
938
|
"pins": {
|
|
885
939
|
"target": "Цель",
|
|
@@ -892,12 +946,12 @@
|
|
|
892
946
|
},
|
|
893
947
|
|
|
894
948
|
"navigation:stop": {
|
|
895
|
-
"label": "
|
|
949
|
+
"label": "Остановить движение",
|
|
896
950
|
"description": "Останавливает движение бота"
|
|
897
951
|
},
|
|
898
952
|
|
|
899
953
|
"container:open": {
|
|
900
|
-
"label": "
|
|
954
|
+
"label": "Контейнер: открыть",
|
|
901
955
|
"description": "Открывает контейнер (сундук, бочку) по координатам",
|
|
902
956
|
"pins": {
|
|
903
957
|
"x": "X",
|
|
@@ -916,12 +970,12 @@
|
|
|
916
970
|
},
|
|
917
971
|
|
|
918
972
|
"container:close": {
|
|
919
|
-
"label": "
|
|
973
|
+
"label": "Контейнер: закрыть",
|
|
920
974
|
"description": "Закрывает открытый контейнер"
|
|
921
975
|
},
|
|
922
976
|
|
|
923
977
|
"container:get_items": {
|
|
924
|
-
"label": "
|
|
978
|
+
"label": "Предметы контейнера",
|
|
925
979
|
"description": "Получает список предметов из открытого контейнера",
|
|
926
980
|
"pins": {
|
|
927
981
|
"container": "Контейнер",
|
|
@@ -934,7 +988,7 @@
|
|
|
934
988
|
},
|
|
935
989
|
|
|
936
990
|
"container:deposit": {
|
|
937
|
-
"label": "
|
|
991
|
+
"label": "Положить в контейнер",
|
|
938
992
|
"description": "Кладёт предмет из инвентаря в открытый контейнер",
|
|
939
993
|
"pins": {
|
|
940
994
|
"itemName": "Предмет",
|
|
@@ -949,7 +1003,7 @@
|
|
|
949
1003
|
},
|
|
950
1004
|
|
|
951
1005
|
"container:withdraw": {
|
|
952
|
-
"label": "
|
|
1006
|
+
"label": "Взять из контейнера",
|
|
953
1007
|
"description": "Забирает предмет из контейнера в инвентарь",
|
|
954
1008
|
"pins": {
|
|
955
1009
|
"itemName": "Предмет",
|
|
@@ -964,7 +1018,7 @@
|
|
|
964
1018
|
},
|
|
965
1019
|
|
|
966
1020
|
"container:deposit_all": {
|
|
967
|
-
"label": "
|
|
1021
|
+
"label": "Положить всё",
|
|
968
1022
|
"description": "Кладёт все предметы (или определённого типа) в контейнер",
|
|
969
1023
|
"pins": {
|
|
970
1024
|
"itemName": "Предмет",
|
|
@@ -977,7 +1031,7 @@
|
|
|
977
1031
|
},
|
|
978
1032
|
|
|
979
1033
|
"container:find_item": {
|
|
980
|
-
"label": "
|
|
1034
|
+
"label": "Найти в контейнере",
|
|
981
1035
|
"description": "Ищет предмет в открытом контейнере",
|
|
982
1036
|
"pins": {
|
|
983
1037
|
"itemName": "Предмет",
|
|
@@ -994,7 +1048,7 @@
|
|
|
994
1048
|
},
|
|
995
1049
|
|
|
996
1050
|
"furnace:open": {
|
|
997
|
-
"label": "
|
|
1051
|
+
"label": "Печка: открыть",
|
|
998
1052
|
"description": "Открывает печку (обычную, плавильную, коптильню) по координатам",
|
|
999
1053
|
"pins": {
|
|
1000
1054
|
"x": "X",
|
|
@@ -1013,12 +1067,12 @@
|
|
|
1013
1067
|
},
|
|
1014
1068
|
|
|
1015
1069
|
"furnace:close": {
|
|
1016
|
-
"label": "
|
|
1070
|
+
"label": "Печка: закрыть",
|
|
1017
1071
|
"description": "Закрывает печку"
|
|
1018
1072
|
},
|
|
1019
1073
|
|
|
1020
1074
|
"furnace:put_input": {
|
|
1021
|
-
"label": "
|
|
1075
|
+
"label": "Печка: положить ресурс",
|
|
1022
1076
|
"description": "Кладёт предмет в слот плавки печки",
|
|
1023
1077
|
"pins": {
|
|
1024
1078
|
"itemName": "Предмет",
|
|
@@ -1031,7 +1085,7 @@
|
|
|
1031
1085
|
},
|
|
1032
1086
|
|
|
1033
1087
|
"furnace:put_fuel": {
|
|
1034
|
-
"label": "
|
|
1088
|
+
"label": "Печка: положить топливо",
|
|
1035
1089
|
"description": "Кладёт топливо в слот топлива печки",
|
|
1036
1090
|
"pins": {
|
|
1037
1091
|
"itemName": "Топливо",
|
|
@@ -1044,7 +1098,7 @@
|
|
|
1044
1098
|
},
|
|
1045
1099
|
|
|
1046
1100
|
"furnace:take_output": {
|
|
1047
|
-
"label": "
|
|
1101
|
+
"label": "Печка: забрать",
|
|
1048
1102
|
"description": "Забирает готовый предмет из слота результата печки",
|
|
1049
1103
|
"pins": {
|
|
1050
1104
|
"item": "Предмет",
|
|
@@ -1057,7 +1111,7 @@
|
|
|
1057
1111
|
},
|
|
1058
1112
|
|
|
1059
1113
|
"furnace:get_status": {
|
|
1060
|
-
"label": "
|
|
1114
|
+
"label": "Печка: статус",
|
|
1061
1115
|
"description": "Получает текущий статус печки (топливо, прогресс, предметы в слотах)",
|
|
1062
1116
|
"pins": {
|
|
1063
1117
|
"inputItem": "Ресурс",
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"actions": {
|
|
8
8
|
"checkUpdates": "Проверить обновления",
|
|
9
9
|
"installLocal": "Установить локально",
|
|
10
|
+
"installGithub": "Установить с GitHub",
|
|
10
11
|
"createPlugin": "Создать плагин",
|
|
11
12
|
"install": "Установить",
|
|
12
13
|
"uninstall": "Удалить",
|
|
@@ -71,10 +72,104 @@
|
|
|
71
72
|
"deleting": "Удаление..."
|
|
72
73
|
},
|
|
73
74
|
"localInstall": {
|
|
74
|
-
"title": "
|
|
75
|
-
"description": "
|
|
76
|
-
"pathLabel": "Путь к
|
|
77
|
-
"pathPlaceholder": "
|
|
75
|
+
"title": "Установить плагин локально",
|
|
76
|
+
"description": "Укажите полный путь к папке с плагином на сервере, где запущена панель. Папка должна содержать валидный package.json.",
|
|
77
|
+
"pathLabel": "Путь к папке плагина",
|
|
78
|
+
"pathPlaceholder": "Например, /home/user/my-bot-plugins/super-plugin",
|
|
79
|
+
"install": "Установить"
|
|
80
|
+
},
|
|
81
|
+
"settingsDialog": {
|
|
82
|
+
"title": "Плагин: {{name}}",
|
|
83
|
+
"description": "Управление настройками и информацией о плагине",
|
|
84
|
+
"emptySettings": "У этого плагина нет настроек.",
|
|
85
|
+
"clearData": "Очистить данные",
|
|
86
|
+
"selectPlaceholder": "Выберите значение",
|
|
87
|
+
"unknownSettingType": "Неизвестный тип настройки: {{type}}",
|
|
88
|
+
"confirmClearData": "Вы уверены, что хотите удалить все данные плагина \"{{name}}\"? Это действие необратимо.",
|
|
89
|
+
"confirmDeleteKey": "Удалить ключ \"{{key}}\"?",
|
|
90
|
+
"tabs": {
|
|
91
|
+
"settings": "Настройки",
|
|
92
|
+
"data": "Данные",
|
|
93
|
+
"info": "Информация"
|
|
94
|
+
},
|
|
95
|
+
"jsonEditor": {
|
|
96
|
+
"title": "Редактор конфигурации JSON",
|
|
97
|
+
"description": "Внесите изменения и сохраните.",
|
|
98
|
+
"descriptionWithSyntax": "Внесите изменения и сохраните. Редактор подсветит синтаксические ошибки.",
|
|
99
|
+
"invalidJson": "Ошибка: Невалидный JSON. Проверьте синтаксис.",
|
|
100
|
+
"apply": "Применить",
|
|
101
|
+
"applyAndSave": "Применить и сохранить"
|
|
102
|
+
},
|
|
103
|
+
"proxy": {
|
|
104
|
+
"selectPlaceholder": "Выберите прокси",
|
|
105
|
+
"none": "Без прокси",
|
|
106
|
+
"custom": "Настроить вручную",
|
|
107
|
+
"host": "Хост",
|
|
108
|
+
"port": "Порт",
|
|
109
|
+
"type": "Тип",
|
|
110
|
+
"username": "Имя пользователя",
|
|
111
|
+
"password": "Пароль",
|
|
112
|
+
"optional": "Опционально"
|
|
113
|
+
},
|
|
114
|
+
"permissions": {
|
|
115
|
+
"addEntries": "Недостаточно прав для добавления записей",
|
|
116
|
+
"generic": "Недостаточно прав",
|
|
117
|
+
"editData": "Недостаточно прав для изменения данных",
|
|
118
|
+
"save": "Недостаточно прав для сохранения настроек"
|
|
119
|
+
},
|
|
120
|
+
"validation": {
|
|
121
|
+
"emptyKey": "Ключ не может быть пустым",
|
|
122
|
+
"invalidJsonValue": "Значение должно быть валидным JSON"
|
|
123
|
+
},
|
|
124
|
+
"data": {
|
|
125
|
+
"searchPlaceholder": "Поиск по ключу",
|
|
126
|
+
"refresh": "Обновить",
|
|
127
|
+
"addEntry": "Добавить запись",
|
|
128
|
+
"empty": "Нет данных",
|
|
129
|
+
"editEntry": "Редактировать запись",
|
|
130
|
+
"newEntry": "Новая запись",
|
|
131
|
+
"editEntryDescription": "Измените JSON значение и сохраните.",
|
|
132
|
+
"newEntryDescription": "Укажите ключ и JSON значение.",
|
|
133
|
+
"keyLabel": "Ключ",
|
|
134
|
+
"keyPlaceholder": "Например, state",
|
|
135
|
+
"jsonValue": "JSON значение",
|
|
136
|
+
"columns": {
|
|
137
|
+
"key": "Ключ",
|
|
138
|
+
"updated": "Обновлено",
|
|
139
|
+
"actions": "Действия"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"toasts": {
|
|
143
|
+
"savedSettings": "Настройки плагина сохранены.",
|
|
144
|
+
"clearedData": "Данные плагина успешно очищены.",
|
|
145
|
+
"entryDeleted": "Запись удалена",
|
|
146
|
+
"entrySaved": "Запись сохранена"
|
|
147
|
+
},
|
|
148
|
+
"loadError": "Не удалось загрузить настройки плагина."
|
|
149
|
+
},
|
|
150
|
+
"githubInstall": {
|
|
151
|
+
"title": "Установка с GitHub",
|
|
152
|
+
"description": "Вставьте ссылку на публичный GitHub-репозиторий. В нем должен быть валидный package.json плагина.",
|
|
153
|
+
"previewStepDescription": "Проверьте репозиторий, при необходимости выберите версию и установите плагин.",
|
|
154
|
+
"urlLabel": "URL репозитория",
|
|
155
|
+
"urlPlaceholder": "https://github.com/owner/repository",
|
|
156
|
+
"urlHint": "Вставьте прямую ссылку на GitHub-репозиторий. Предпросмотр откроется на следующем шаге.",
|
|
157
|
+
"loadPreview": "Загрузить предпросмотр",
|
|
158
|
+
"loadingPreview": "Загрузка предпросмотра...",
|
|
159
|
+
"continue": "Далее",
|
|
160
|
+
"back": "Назад",
|
|
161
|
+
"previewTitle": "Предпросмотр репозитория",
|
|
162
|
+
"defaultBranch": "Основная ветка",
|
|
163
|
+
"latestRelease": "Последний релиз",
|
|
164
|
+
"selectVersion": "Версия для установки",
|
|
165
|
+
"versionLatest": "Актуальное состояние ветки",
|
|
166
|
+
"versionRelease": "Последний релиз",
|
|
167
|
+
"versionTagPrefix": "Тег",
|
|
168
|
+
"versionHint": "Оставьте актуальное состояние ветки для обычной установки или выберите релизный тег.",
|
|
169
|
+
"noTags": "Теги не найдены",
|
|
170
|
+
"readmeTitle": "README",
|
|
171
|
+
"noReadme": "GitHub API не вернул README для этого репозитория.",
|
|
172
|
+
"previewHint": "Загрузите предпросмотр репозитория, чтобы выбрать релиз или тег перед установкой.",
|
|
78
173
|
"install": "Установить"
|
|
79
174
|
},
|
|
80
175
|
"createDialog": {
|
|
@@ -99,6 +194,10 @@
|
|
|
99
194
|
"all": "Все",
|
|
100
195
|
"noResults": "Плагины не найдены"
|
|
101
196
|
},
|
|
197
|
+
"toasts": {
|
|
198
|
+
"statusUpdating": "Обновляем статус плагина...",
|
|
199
|
+
"statusUpdated": "Статус плагина обновлен."
|
|
200
|
+
},
|
|
102
201
|
"details": {
|
|
103
202
|
"version": "Версия",
|
|
104
203
|
"author": "Автор",
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
"description": "Создайте аккаунт администратора для панели BlockMine.",
|
|
4
4
|
"username": "Имя администратора",
|
|
5
5
|
"password": "Пароль (мин. 4 символа)",
|
|
6
|
+
"showPassword": "Показать пароль",
|
|
7
|
+
"hidePassword": "Скрыть пароль",
|
|
6
8
|
"confirmPassword": "Подтвердите пароль",
|
|
7
9
|
"submit": "Создать",
|
|
8
10
|
"errors": {
|