Advertisement
BetaZavr

player_creative_tools_v1.4.js

Mar 29th, 2019
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Код инструментов для креативных игроков. Его необходимо сохранить в файл на вашей карте по пути:
  2. \%appdata%\.minecraft\saves\<ваша карта>\customnpcs\scripts\ecmascript\player_creative_tools_v1.4.js
  3. после чего подключить в игре на игрока.
  4.  
  5. **Any information received by the code can be seen in two languages. Depends on the language of the command sent.**
  6. **At the moment it is English and Russian.**
  7.  
  8. Любую информацию, получаемую кодом, можно увидеть на 2х языках. Зависит от языка команды.
  9. На текущий момент это Английский и Русский.
  10.  
  11. мод: CustomNPCs_1.12.204(mar19-snapshot).jar
  12.  
  13. Возможности:
  14.  
  15. 0 - Подсказка по пользованию инструментами ниже. Пишите в чат: <действие> <команда действия>, где:
  16.     <действие> - помощь / help        - вызов подсказки
  17.     <команда действия>               - имя любого действия из описания ниже. Если не указывать, то выдаст общую информацию о всех инструментах.
  18.  
  19. I - Любой предмет брошеный игроком с креативным режимом - удаляется.
  20.    
  21. II - Инструмент, помогающий быстро строить столбы, стены, полы т.д. Пишите в чат: <действие> <высота> <ширина> <глубина>, где:
  22.     <действие> - можно выбрать:
  23.         1) замещать / substitute    - (установка блока) заменяет все блоки в зоне, блоком из правой или левой руки игрока, ну или первой позиции инвентаря.;
  24.         2) заменять / replace       - (ПКМ или ЛКМ на блок, правая рука должна быть пуста) заменяет все блоки в зоне, кроме воздуха, блоком из правой или левой руки игрока, ну или первой позиции инвентаря.;
  25.         3) заполнять / complete        - (ПКМ или ЛКМ на блок, правая рука должна быть пуста) заменяет всесь воздух, блоком из правой или левой руки игрока, ну или первой позиции инвентаря.
  26.     <высота> <ширина> <глубина> - это зона в виде высоты, ширины и глубины действия, с центром в блоке, с которым взаимодействует игрок.
  27.         автоматически определяется в зависимоти от стороны, куда смотрик игрок.
  28.         (если написать только действие без параметров, зона будет принята как 3х3х1)
  29. Пример: "замещать 5 5 2"  - будет строить стену, пол, потолок размером 5х5 толщиной 2 блока от игрока, с центром установленного блока, в сторону куда смотрит игрок.
  30.         "заменять"          - будет заменять все блоки кроме воздуха в зоне 3х3 толщиной 1 блок, блоком из первой позиции игрока, с центром блока взаимодействия.
  31.        
  32. III - Инструмент сохранения телепортации по миру. Пишите в чат: <действие> <позиция>
  33.     <действие> - можно выбрать:
  34.         1) сохранить / savetp      - сохранит ваше текущее месторасположение в этим мире в объект <позиция>, если позицию не указать, перезапишет позицию "Назад";
  35.         2) вернуться / nowtp       - телепортирует вас в ранее сохранённое <позиция>, если позицию не указать, телепортирует в позицию "Назад";
  36.         3) удалить / deletetp        - удалит ранее сохранённую <позицию>, если позицию не указать - удалит всё кроме дома и назад.;
  37.         4) мои позиции / my positions - выдаст в чат все ваши сохранённые позиции.
  38.     <позиция> - может быть как названием, так и порядковым номером. Не может быть числом при сохранении новой позиции!
  39.         Учтите, что все названия инструмент сохраняет с маленькими индексами!
  40.        
  41. IV - В любой момент вы можете посмотреть все настройки предмета в вашей правой или левой руке.
  42.     Возмите предмет в руку и пишите в чат: "предмет" / "item"
  43.    
  44. IIV - В любой момент вы можете посмотреть все настройки блока. Для этого пишите в чат: <действие> <x> <y> <z>, где:
  45.     <действие> - блок / block       - вызов команды
  46.     <x> <y> <z>                     - координаты блока. Можно не указывать, тогда будет выбран блок под игроком.
  47.    
  48. VI - В любой момент вы можете посмотреть все настройки любого существа. Для этого пишите в чат:  <действие> <uuid>, или <действие> <имя>, или <действие> <тип>, или <действие> <x> <y> <z>, где:
  49.     <действие> - существо / entity  - вызов команды, если не указывать uuid, имя или координаты, будет искать первое существо в 12 блоках в сторону, куда смотрит игрок.
  50.     <uuid>                          - числовой индефикатор UUID существа.
  51.     <имя>                            - ищет ближайщее в 12 блоках от игрока существо с этим именем.
  52.     <тип>                            - ищет ближайщее в 12 блоках от игрока существо указанного типа.
  53.     <x> <y> <z>                     - координаты существа. (ищет ближайшее существо в радиусе 1го блока)
  54. Пример на собственные данные игрока: "существо я" или "entity my" - покажет ваши собственные данные.
  55.  
  56. VII - В любой момент вы можете вызвать команду от мода, даже если вы на карте с запретом читов и командного блока. Для этого пишите в чат:  <действие> /<команда>, где:
  57.     <действие> - команда / command   - вызов команды
  58.     <команда>                        - сама команда
  59. Пример: "команда /time set 0" - выполниться, установит мировое время дня на "0".
  60.  
  61. VIII - Чтобы увидеть, какие последние 30 команд были вызваны игроками пишите в чат "список" или "list". Своего рода мини логи.
  62.  
  63. IX - В любой момент вы можете скопировать предмет в руке игрока. Для этого держите его в руке, и пишите в чат:  <действие> <кратность>, где:
  64.     <действие> - копия / copy      - вызов команды
  65.     <кратность>                        - сколько раз скопируется.
  66. Пример: в руке 2 железных слитка, вы вводите "копия 3" - будет (2^3) 16 железных слитков
  67.    
  68. X - В любой момент вы можете посмотреть общие данные всех существ вокруге. Для этого пишите в чат: <действие> <радиус> <x> <y> <z>
  69.     <действие> - ууид / uuid        - вызов команды, если радиус не указать, то покажет всех существ в радиусе 10 блоках, если не указывать координаты, примет вашу позицию за центр.
  70.     <радиус>                      - собственно, радиус сканирования с центром от вас. (можно не указыать)
  71.     <x> <y> <z>                     - координаты места поиска. (можно не указыать)
  72.    
  73. XI - Вы можете сканировать территорию на предмет поиска существ, если кто-то появится в зоне, инструмент вам об этом сообщит. Для этого пишите в чат: <действие> <радиус> <x> <y> <z> <секунды>
  74.     <действие> - зона / zone        - вызов команды, если радиус не указать, то покажет всех существ в радиусе 3 блоках, если не указывать координаты, примет вашу позицию за центр.
  75.                                     - повторный вызов команды отключит сканирование зоны.
  76.     <секунды>                        - как часто сканировать зону, после нахождения существ (по-умолчанию 3 секунды, можно не указыать)
  77.     <радиус>                      - собственно, радиус сканирования с центром от вас. (можно не указыать)
  78.     <x> <y> <z>                     - координаты места поиска. (можно не указыать)
  79.    
  80. XII - В любой момент вы можете изменить свой игровой режим (если конечно у вас на это будет право). Для этого пишите в чат: "режим" или "mode"
  81.  
  82. XIII - Такие инструменты как "Предмет", "Блок" и "Существо" сохраняют теги в постоянную память. Посмотреть их можно слеюдующим образом:
  83.     1 - файл лежит по пути \%appdata%\.minecraft\saves\<ваша карта>\customnpcs\scripts\world_data.json
  84.         можно вручную поглядеть его или ...
  85.     2 - написать в чат: <действие> <имя переменной> <тип>, где:
  86.         <действие> - дата / data    - вызов команды
  87.         <имя переменной>       - имя переменной:
  88.                                 temp_item_mine      - Minecraft теги предмета
  89.                                 temp_item_cust      - CustomNPCs теги предмета
  90.                                 temp_block          - теги блока
  91.                                 temp_entity_mine    - Minecraft теги существа
  92.                                 temp_entity_cust    - CustomNPCs теги существа
  93.                                 entity_around       - список существ в зоне
  94.         <тип>                    - "0" текст выдаст как строку, "1" - как список тегов. По-умолчанию 0
  95.  */
  96. // переменные ниже можно оставить как есть:
  97. var playerID,log,space=0,buildType=0,bh,bw,bd,zone=false,secZone,sr,sx,sy,sz,srh=false,fn,fr,dLg;
  98. function login(event) {
  99.     playerID = event.player;
  100.     var name = playerID.getName(), dPlArr = eval('JSON.parse(playerID.world.getStoreddata().get("data_'+name.toLowerCase()+'"))');
  101.     if (!dPlArr) {dLg = playerID.world.getTempdata().get("lang_en")}
  102.     if (dLg!==eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")') && dPlArr) {dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")')}
  103. }
  104. function attack(event) {
  105.     playerID = event.player;
  106.     if (playerID.getGamemode()==1 && buildType) {
  107.         var x,y,z,blockID;
  108.         if (playerID.rayTraceBlock(8,false,false)==null || playerID.rayTraceBlock(8,false,false).getBlock().getName()=='minecraft:air') {return}
  109.         if (playerID.getMainhandItem().isBlock()) {
  110.             blockID=playerID.getMainhandItem();
  111.         } else {
  112.             if (playerID.getInventory().getSlot(0).isBlock()) {
  113.                 blockID=playerID.getInventory().getSlot(0);
  114.             } else {return}
  115.         }
  116.         x=playerID.rayTraceBlock(8,false,false).getPos().getX();
  117.         y=playerID.rayTraceBlock(8,false,false).getPos().getY();
  118.         z=playerID.rayTraceBlock(8,false,false).getPos().getZ();
  119.         build(playerID,x,y,z,buildType,blockID);
  120.         event.setCanceled(true);
  121.     }
  122. }
  123. function interact(event) {
  124.     playerID = event.player;
  125.     if (playerID.getGamemode() == 1) {playerID.timers.forceStart(200,1,false)}
  126.     if (buildType>=2) {event.setCanceled(true)}
  127. }
  128. function chat(event) {
  129.     playerID = event.player;
  130.     var name = playerID.getName(), dPlArr = eval('JSON.parse(playerID.world.getStoreddata().get("data_'+name.toLowerCase()+'"))');
  131.     var text = event.message.toLowerCase(); // убрать верхние символы
  132.     if (text.indexOf("режим")==0 || text.indexOf("mode")==0) { // смена игрового режима
  133.         event.setCanceled(true);
  134.         if (text.indexOf("mode")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  135.         dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  136.         if (playerID.hasFinishedQuest(35) || playerID.getName() == "BetaZavr") { // условия для возможности менять игровой режим
  137.             if (text.indexOf("mode")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  138.             if (dLg!==eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")') && dPlArr) {dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")')}
  139.             temp = text.split(' ');
  140.             if (temp.length > 1) {
  141.                 if (!Number(temp[1]) || Number(temp[1])<0 || Number(temp[1])>=3) {temp=(-1)} else {temp=Math.round(Number(temp[1]))}
  142.             } else {
  143.                 temp=(-1);
  144.             }
  145.             if (temp==(-1)) {
  146.                 if (playerID.getGamemode() == 1) {
  147.                     if (!playerID.hasFinishedQuest(35)) {
  148.                         playerID.setGamemode(0);
  149.                     } else {
  150.                         playerID.setGamemode(2);
  151.                     }
  152.                 } else {
  153.                     playerID.setGamemode(1);
  154.                 }
  155.             } else {
  156.                 if (playerID.getGamemode() !== temp) {
  157.                     playerID.setGamemode(temp);
  158.                 }
  159.             }
  160.             if (playerID.getGamemode() == 0) {temp = dLg.crt[1]} else if (playerID.getGamemode() == 1) {temp = dLg.crt[2]} else {temp = dLg.crt[3]}
  161.             playerID.message(dLg.crt[0]+temp);
  162.         }
  163.     }
  164.     if (playerID.getGamemode() == 1) { // если креатив
  165.         var name = playerID.getName(), money = 0, temp_0, temp, entityArr; // переменные на игрока
  166.         var posPl,posH,posSt,xPl=playerID.getPos().getX(),yPl=playerID.getPos().getY(),zPl=playerID.getPos().getZ(),rPl=Math.floor(playerID.getRotation()*10)/10,site; // переменные позиции игрока
  167.         var com,x,y,z,r,n,world = playerID.world.getDimension().getName(),entityArr;
  168.         if (text=="предмет" || text=="item") { // информация о предмете в руке
  169.             event.setCanceled(true);
  170.             if (text.indexOf("item")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  171.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  172.             infoItem(playerID);
  173.         }
  174.         if (text.indexOf("поиск")==0 || text.indexOf("search")==0) { // информация о предмете в руке
  175.             event.setCanceled(true);
  176.             if (text.indexOf("search")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  177.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  178.             temp = text.split(' ');
  179.             if (temp.length == 2) {
  180.                 fn = temp[1];
  181.                 fr = 24;
  182.             } else if (temp.length==3) {
  183.                 fn = temp[1];
  184.                 fr = temp[2].replace(',','.');
  185.             } else {
  186.                 playerID.message(dLg.crt[215]);
  187.                 return;
  188.             }
  189.             if (!Number(fr)) {playerID.message('§c'+dLg.crt[92]+': §r'+sr+dLg.crt[91]); return}
  190.             fr = Math.round(Number(temp[2]));
  191.             srh=true;
  192.             playerID.message(dLg.crt[218]+fn);
  193.             searchEntity(event);
  194.             playerID.timers.start(202,100,true);
  195.         }
  196.         if (text.indexOf("блок")==0 || text.indexOf("block")==0) { // информация о блоке под игроком или в мире
  197.             event.setCanceled(true);
  198.             if (text.indexOf("block")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  199.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  200.             temp = text.split(' ');
  201.             if (temp.length == 1) {
  202.                 x = playerID.getBlockX();
  203.                 y = playerID.getY()-0.9;
  204.                 z = playerID.getBlockZ();
  205.             } else if (temp.length == 4) {
  206.                 x = temp[1].replace(',','.'), y = temp[2].replace(',','.'), z = temp[3].replace(',','.');
  207.             } else {
  208.                 playerID.message(dLg.crt[83]);
  209.                 return;
  210.             }
  211.             if (!Number(x)&&x!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+x+dLg.crt[91]); return}
  212.             if (!Number(y)&&y!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+y+dLg.crt[91]); return}
  213.             if (!Number(z)&&z!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+z+dLg.crt[91]); return}
  214.             infoBlock(playerID, Math.round(Number(x)), Math.round(Number(y)), Math.round(Number(z)));
  215.         }
  216.         if (text.indexOf("ууид")== 0 || text.indexOf("uuid")== 0) { // краткая информация о всех существах вокруг
  217.             event.setCanceled(true);
  218.             if (text.indexOf("uuid")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  219.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  220.             temp = text.split(' ');
  221.             if (temp.length == 1) {
  222.                 r = 10;
  223.                 x = playerID.getBlockX();
  224.                 y = playerID.getBlockY();
  225.                 z = playerID.getBlockZ();
  226.             } else if (temp.length==2) {
  227.                 r = temp[1].replace(',','.');
  228.                 x = playerID.getBlockX();
  229.                 y = playerID.getBlockY();
  230.                 z = playerID.getBlockZ();
  231.             } else if (temp.length==4) {
  232.                 r = 10;
  233.                 x = playerID.getBlockX();
  234.                 y = playerID.getBlockY();
  235.                 z = playerID.getBlockZ();
  236.             } else if (temp.length==5) {
  237.                 r = temp[1].replace(',','.');
  238.                 x = temp[2].replace(',','.');
  239.                 y = temp[3].replace(',','.');
  240.                 z = temp[4].replace(',','.');
  241.             } else {
  242.                 playerID.message(dLg.crt[208]);
  243.                 return;
  244.             }
  245.             if (!Number(r)&&r!==0) {playerID.message('§c'+dLg.crt[92]+': §r'+r+dLg.crt[91]); return} 
  246.             if (!Number(x)&&x!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+x+dLg.crt[91]); return}
  247.             if (!Number(y)&&y!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+y+dLg.crt[91]); return}
  248.             if (!Number(z)&&z!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+z+dLg.crt[91]); return}
  249.             vastEntity(playerID, Math.round(Number(r)), Math.round(Number(x)), Math.round(Number(y)), Math.round(Number(z)));
  250.         }
  251.         if (text.indexOf("зона") == 0 || text.indexOf("zone")== 0) { // краткая информация о всех существах вокруг с таймером
  252.             event.setCanceled(true);
  253.             if (text.indexOf("zone")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  254.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  255.             temp = text.split(' ');
  256.             if (temp.length == 1) {
  257.                 sr=10;
  258.                 sx = playerID.getBlockX();
  259.                 sy = playerID.getBlockY();
  260.                 sz = playerID.getBlockZ();
  261.                 secZone=3;
  262.             } else if (temp.length==2) {
  263.                 sr=temp[1];
  264.                 sx = playerID.getBlockX();
  265.                 sy = playerID.getBlockY();
  266.                 sz = playerID.getBlockZ();
  267.                 secZone=3;
  268.             } else if (temp.length==3) {
  269.                 sr=temp[1].replace(',','.');
  270.                 sx = playerID.getBlockX();
  271.                 sy = playerID.getBlockY();
  272.                 sz = playerID.getBlockZ();
  273.                 secZone=temp[2].replace(',','.');
  274.             } else if (temp.length==4) {
  275.                 sr=10;
  276.                 sx = playerID.getBlockX();
  277.                 sy = playerID.getBlockY();
  278.                 sz = playerID.getBlockZ();
  279.                 secZone=3;
  280.             } else if (temp.length==5) {
  281.                 sr=temp[1].replace(',','.');
  282.                 sx = temp[2].replace(',','.');
  283.                 sy = temp[3].replace(',','.');
  284.                 sz = temp[4].replace(',','.');
  285.                 secZone=3;
  286.             } else if (temp.length==6) {
  287.                 sr=temp[1].replace(',','.');
  288.                 sx = temp[2].replace(',','.');
  289.                 sy = temp[3].replace(',','.');
  290.                 sz = temp[4].replace(',','.');
  291.                 secZone=temp[5].replace(',','.');
  292.             }  else {
  293.                 playerID.message(dLg.crt[209]);
  294.                 return;
  295.             }
  296.             if (!Number(sr)&&sr!==0) {playerID.message('§c'+dLg.crt[92]+': §r'+sr+dLg.crt[91]); return}  
  297.             if (!Number(sx)&&sx!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+sx+dLg.crt[91]); return}
  298.             if (!Number(sy)&&sy!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+sy+dLg.crt[91]); return}
  299.             if (!Number(sz)&&sz!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+sz+dLg.crt[91]); return}
  300.             if (!Number(secZone)) {playerID.message('§c'+dLg.crt[93]+': §r'+secZone+dLg.crt[91]); return}
  301.             if (zone) {
  302.                 zone=false;
  303.                 playerID.message(dLg.crt[84]);
  304.             } else {
  305.                 zone=true;
  306.                 playerID.message(dLg.crt[85]+'X:§6'+sx+'§7; Y:§6'+sy+'§7; Z:§6'+sz+'§7; '+dLg.abt[15]+':§e'+sr+'§7; '+dLg.abt[16]+' §b'+secZone+' §7'+dLg.abt[3]+'.');
  307.                 secZone = Math.round(Number(secZone));
  308.                 vastEntity(playerID, Math.round(Number(sr)), Math.round(Number(sx)), Math.round(Number(sy)), Math.round(Number(sz)));
  309.             }
  310.         }
  311.         if (text.indexOf("существо") == 0 || text.indexOf("entity") == 0 ) {// информация о выбранном существе
  312.             event.setCanceled(true);
  313.             if (text.indexOf("entity")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  314.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  315.             temp = text.split(' ');
  316.             if (temp.length==1) { // самоопределение
  317.                 entityArr = playerID.rayTraceEntities(12.0,false,true);
  318.                 if (entityArr.length !== 0) {
  319.                     infoEntity(playerID, entityArr[0].getUUID());
  320.                 } else {
  321.                     infoEntity(playerID, playerID.getUUID());
  322.                 }
  323.             } else if (temp.length==2) { // по uuid или имени
  324.                 if (temp[1].length>=30) { // uuid
  325.                     try {
  326.                         playerID.world.getEntity(temp[1]);
  327.                         infoEntity(playerID, temp[1]);
  328.                     } catch (err) {
  329.                         playerID.message(dLg.crt[86]+temp[1]+dLg.crt[87]);
  330.                         errUUID(playerID,temp[1]); // разбирает классические ошибки ввода uuid
  331.                     }
  332.                 } else if (temp[1]=='я' || temp[1]=='my') { // свои данные
  333.                     infoEntity(playerID, playerID.getUUID());
  334.                 } else if (Number(temp[1])<10) {
  335.                     if (Number(temp[1])==1) {
  336.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_PLAYER);
  337.                         temp='PLAYER';
  338.                     } else if (Number(temp[1])==2) {
  339.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_NPC);
  340.                         temp='NPC';
  341.                     } else if (Number(temp[1])==3) {
  342.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_MONSTER);
  343.                         temp='MONSTER';
  344.                     } else if (Number(temp[1])==4) {
  345.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_ANIMAL);
  346.                         temp='ANIMAL';
  347.                     } else if (Number(temp[1])==5) {
  348.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_LIVING);
  349.                         temp='LIVING';
  350.                     } else if (Number(temp[1])==6) {
  351.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_ITEM);
  352.                         temp='ITEM';
  353.                     } else if (Number(temp[1])==7) {
  354.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_PROJECTILE);
  355.                         temp='PROJECTILE';
  356.                     } else {
  357.                         temp='ANY';
  358.                         entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,0);
  359.                     }
  360.                     if (entityArr.length==1 && temp==EntityType_PLAYER) {
  361.                         playerID.message(dLg.crt[88]);
  362.                     } else {
  363.                         if (entityArr.length>0) {
  364.                             if (entityArr.length==1 && temp=='PLAYER') {
  365.                                 playerID.message(dLg.crt[88]);
  366.                                 return;
  367.                             } else {
  368.                                 if (temp=='PLAYER') {
  369.                                     infoEntity(playerID, entityArr[1].getUUID());
  370.                                 } else {
  371.                                     infoEntity(playerID, entityArr[0].getUUID());
  372.                                 }
  373.                             }
  374.                             return;
  375.                         }
  376.                         playerID.message(dLg.crt[89]+temp+'§c"!');
  377.                     }
  378.                 } else {
  379.                     entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,0);
  380.                     if (entityArr.length==1) {
  381.                         playerID.message(dLg.crt[94]+temp[1]+'§c"!');
  382.                     } else {
  383.                         for (var i=0;i<entityArr.length;i++) {
  384.                             if (entityArr[i].getMCEntity().func_70005_c_().toLowerCase()==temp[1]) {
  385.                                 infoEntity(playerID, entityArr[i].getUUID());
  386.                                 return;
  387.                             }
  388.                         }
  389.                         playerID.message(dLg.crt[94]+temp[1]+'§c"!');
  390.                     }
  391.                 }
  392.             } else if (temp.length==3) { // по имени из двух слов
  393.                 temp=temp[1]+' '+temp[2];
  394.                 entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,0);
  395.                 if (entityArr.length==1) {
  396.                     playerID.message(dLg.crt[89]+temp+'§c"!');
  397.                 } else {
  398.                     for (var i=0;i<entityArr.length;i++) {
  399.                         if (entityArr[i].getMCEntity().func_70005_c_().toLowerCase()==temp) {
  400.                             infoEntity(playerID, entityArr[i].getUUID());
  401.                             return;
  402.                         }
  403.                     }
  404.                     playerID.message(dLg.crt[89]+temp+'§c"!');
  405.                 }
  406.             } else if (temp.length==4) { // по координатам
  407.                 x=temp[1], y=temp[2], z=temp[3];
  408.                 if (!Number(x)&&x!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+x+dLg.crt[91]); return}
  409.                 if (!Number(y)&&y!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+y+dLg.crt[91]); return}
  410.                 if (!Number(z)&&z!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+z+dLg.crt[91]); return}
  411.                 entityArr = playerID.world.getClosestEntity(playerID.world.getBlock(x,y,z).getPos(),1,0);
  412.                 if (entityArr) {
  413.                     infoEntity(playerID, entityArr.getUUID());
  414.                 } else {playerID.message(dLg.crt[95]+x+'§c:§f'+y+'§c:§f'+z+dLg.crt[96])}
  415.             } else {playerID.message(dLg.crt[97])}
  416.         }
  417.         if (text.indexOf("сохранить")==0 || text.indexOf("вернуться")==0 || text.indexOf("удалить")==0 || text=="мои позиции" || text.indexOf("savetp")==0 || text.indexOf("nowtp")==0 || text.indexOf("deletetp")==0 || text=="my positions") { // телепортации
  418.             event.setCanceled(true);
  419.             if (text.indexOf("savetp") == 0 || text.indexOf("nowtp") == 0 || text.indexOf("deletetp") == 0 || text.indexOf("my positions") == 0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  420.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  421.             var player_tp_Array = JSON.parse(playerID.world.getStoreddata().get("player_tp_data")), home, back; // все телепортации хранятся в этой переменной "player_tp_data"
  422.             home=dLg.crt[99];
  423.             back=dLg.crt[100];
  424.             if (player_tp_Array !== null) { // если массив не пуст
  425.                 for (var i = 0; i < player_tp_Array.length; i++) { // длина массива
  426.                     if (player_tp_Array[i].name == name) { // поиск в массиве текущего игрока
  427.                         posPl = i;
  428.                         break;
  429.                     }
  430.                 }
  431.             } else { // если массива нет - создать
  432.                 player_tp_Array = [{'name':name, 'site':'', 'pos':[{'site':back,'world':world,'x':xPl,'y':yPl,'z':zPl,'r':rPl},{'site':home,'world':world,'x':xPl,'y':yPl,'z':zPl,'r':rPl}]}];
  433.                 posPl = 0;
  434.                 playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить массив данных в мире
  435.                 playerID.message(dLg.crt[98]+name+'§e, '+dLg.crt[101]+': "§b'+home+'§e" and "§b'+back+'§e", '+dLg.abt[17]+': §f'+world+'§e, X:§f'+xPl+'§e, Y:§f'+yPl+'§e, Z:§f'+zPl+'§e, '+dLg.abt[18]+':§f'+rPl+'§e\u00B0.');
  436.                 return;
  437.             }
  438.             if (posPl == undefined) { // если игрока в массиве нет - добавить
  439.                 player_tp_Array.push({'name':name, 'site':'', 'pos':[{'site':back,'world':world,'x':xPl,'y':yPl,'z':zPl,'r':rPl},{'site':home,'world':world,'x':xPl,'y':yPl,'z':zPl,'r':rPl}]});
  440.                 posPl = player_tp_Array.length;
  441.                 playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить массив данных в мире
  442.                 playerID.message(dLg.crt[102]+name+'§e, '+dLg.crt[101]+': "§b'+home+'§e" and "§b'+back+'§e", '+dLg.abt[17]+': §f'+world+'§e, X:§f'+xPl+'§e, Y:§f'+yPl+'§e, Z:§f'+zPl+'§e, '+dLg.abt[18]+':§f'+rPl+'§e\u00B0.');
  443.                 return;
  444.             }
  445.             if (text.indexOf("сохранить") == 0 || text.indexOf("savetp") == 0) { // для запоминания нового мета или перезаписи
  446.                 temp = text.split(' ');
  447.                 if (temp.length > 1) {site = temp[1]}
  448.                 if (text == "сохранить" || text == "сохранить назад" || text == "savetp" || text == "savetp back") {site = 0}
  449.                 if (text == "сохранить дом" || text == "savetp home") {site = 1}
  450.                 if (Number(site+1) && site < player_tp_Array[posPl].pos.length) { // если имя позиции - число, т.е. id и она есть у игрока
  451.                     posSt = site;
  452.                 } else if (!Number(site)) { // если имя не число
  453.                     for (var j = 0; j < player_tp_Array[posPl].pos.length; j++) {
  454.                         if (player_tp_Array[posPl].pos[j].site == site) {
  455.                             posSt = j;
  456.                             break;
  457.                         }
  458.                     }
  459.                 } else { // если имя - число, но у игрока тут нет.
  460.                     playerID.message(dLg.crt[103]+site+'§c!');
  461.                     return;
  462.                 }
  463.                 if (posSt !== undefined) {
  464.                     site=player_tp_Array[posPl].pos[posSt].site;
  465.                     player_tp_Array[posPl].pos[posSt].x = xPl;
  466.                     player_tp_Array[posPl].pos[posSt].y = yPl;
  467.                     player_tp_Array[posPl].pos[posSt].z = zPl;
  468.                     player_tp_Array[posPl].pos[posSt].r = rPl;
  469.                     player_tp_Array[posPl].pos[posSt].world = world;
  470.                     playerID.message('§6'+dLg.crt[104]+site+'§6", '+dLg.abt[17]+': "§f'+world+'§6", '+dLg.abt[19]+': §2'+xPl+'§6:§2'+yPl+'§6:§2'+zPl+'§6, '+dLg.abt[18]+':§2'+rPl+'§6\u00B0.');
  471.                     if (site == home) {
  472.                         playerID.setSpawnpoint(xPl,yPl,zPl);
  473.                         playerID.message(dLg.crt[105]);
  474.                     }
  475.                 } else {
  476.                     eval('player_tp_Array[posPl].pos.push({site:"'+site+'",world:"'+world+'",x:'+xPl+', y:'+yPl+', z:'+zPl+', r:'+rPl+'})');
  477.                     playerID.message(dLg.crt[106]+site+'§6", '+dLg.abt[17]+': "§f'+world+'§6", '+dLg.abt[19]+': §2'+xPl+'§6:§2'+yPl+'§6:§2'+zPl+'§6, '+dLg.abt[18]+':§2'+rPl+'§6\u00B0.');
  478.                 }
  479.                 playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить изменения
  480.                 return;
  481.             }
  482.             if (text.indexOf("вернуться") == 0 || text.indexOf("nowtp") == 0) { // для телепортации в позицию
  483.                 temp = text.split(' ');
  484.                 if (temp.length > 1) {site = temp[1]}
  485.                 if (text == "вернуться" || text == "вернуться назад" || text == "nowtp" || text == "nowtp back") {site = back}
  486.                 if (text == "вернуться дом" || text == "nowtp home") {site = 1}
  487.                 if (Number(site+1) && site < player_tp_Array[posPl].pos.length) {
  488.                     posSt = site;
  489.                 } else if (!Number(site)) {
  490.                     for (var j = 0; j < player_tp_Array[posPl].pos.length; j++) {
  491.                         if (player_tp_Array[posPl].pos[j].site == site) {
  492.                             posSt = j;
  493.                             break;
  494.                         }
  495.                     }
  496.                 } else {
  497.                     playerID.message(dLg.crt[107]);
  498.                     return;
  499.                 }
  500.                 if (posSt !== undefined) {
  501.                     site=player_tp_Array[posPl].pos[posSt].site;
  502.                     if (player_tp_Array[posPl].pos[posSt].world !== world) { // если позиция в другом мире
  503.                         playerID.message('§c'+dLg.crt[101]+': "§b'+site+dLg.crt[108]+player_tp_Array[posPl].pos[posSt].world+dLg.crt[109]);
  504.                         return;
  505.                     }
  506.                     if (player_tp_Array[posPl].pos[posSt].site !== back) { // перезаписать позицию Назад
  507.                         player_tp_Array[posPl].pos[0] = {'site':back,'world':world,'x':xPl,'y':yPl,'z':zPl,'r':rPl};
  508.                         playerID.message('§7'+dLg.crt[104]+' "§f'+site+'§7". '+dLg.abt[17]+': "§f'+world+'§7"; '+dLg.abt[19]+': §f'+xPl+'§7:§f'+yPl+'§7:§f'+zPl+'§6, '+dLg.abt[18]+':§2'+rPl+'§6\u00B0.');
  509.                     }
  510.                     x = player_tp_Array[posPl].pos[posSt].x;
  511.                     y = player_tp_Array[posPl].pos[posSt].y;
  512.                     z = player_tp_Array[posPl].pos[posSt].z;
  513.                     r = player_tp_Array[posPl].pos[posSt].r;
  514.                     effect(event, playerID, 0, '/particle cloud '+xPl+' '+(yPl+0.75)+' '+zPl+' 0.3 0.3 0.3 0.00001 15');
  515.                 } else {
  516.                     playerID.message('§c'+dLg.crt[110]+': §f'+site+'§c!');
  517.                     return;
  518.                 }
  519.                 playerID.message('§6'+dLg.crt[111]+': "§b'+site+'§6", '+dLg.abt[17]+': "§f'+world+'§7"; '+dLg.abt[19]+': §f'+xPl+'§7:§f'+yPl+'§7:§f'+zPl+'§6, '+dLg.abt[18]+':§2'+rPl+'§6\u00B0.');
  520.                 playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить изменения
  521.                 effect(event, playerID, '/teleport '+name+' '+x+' '+y+' '+z+' '+r,  '/particle cloud '+xPl+' '+(yPl+0.75)+' '+zPl+' 0.3 0.3 0.3 0.00001 15');
  522.                 return;
  523.             }
  524.             if (text.indexOf("удалить") == 0 || text.indexOf("deletetp") == 0) { // для удаления позиций
  525.                 temp = text.split(' ');
  526.                 if (temp.length > 1) {site = temp[1]}
  527.                 if (text == "удалить" || text == "deletetp") {site = (-1)}
  528.                 if (temp[1] == "0" || temp[1] == "1" || temp[1] == home.toLowerCase() || temp[1] == back.toLowerCase()) {
  529.                     playerID.message('§c'+dLg.crt[112]+'!');
  530.                     return;
  531.                 }
  532.                 if (Number(site) && site < player_tp_Array[posPl].pos.length && site !== (-1)) {
  533.                     posSt = site;
  534.                 } else if (!Number(site)) {
  535.                     for (var j = 0; j < player_tp_Array[posPl].pos.length; j++) {
  536.                         if (player_tp_Array[posPl].pos[j].site == site) {
  537.                             posSt = j;
  538.                             break;
  539.                         }
  540.                     }
  541.                 } else if (site !== (-1)) {
  542.                     playerID.message(dLg.crt[113]+site+dLg.crt[114]);
  543.                     return;
  544.                 }
  545.                 if (posSt !== undefined) {
  546.                     if (posSt !== undefined) {
  547.                         site = player_tp_Array[posPl].pos[posSt].site;
  548.                         player_tp_Array[posPl].pos.splice(posSt, 1); // удалить указанное местоположение
  549.                         playerID.message('§6'+dLg.crt[115]+': "§b'+site+dLg.crt[116]);
  550.                     } else {
  551.                         playerID.message(dLg.crt[113]+site+dLg.crt[114]);
  552.                         return;
  553.                     }
  554.                 } else {
  555.                     if (site == (-1)) {
  556.                         player_tp_Array[posPl].pos.splice(2,player_tp_Array[posPl].pos.length); // удалить все местоположения кроме "Дом" и "Назад"
  557.                         playerID.message(dLg.crt[117]+player_tp_Array[posPl].pos[0].site+'§6" '+dLg.abt[20]+' "§b'+player_tp_Array[posPl].pos[1].site+'§6"');
  558.                     } else {
  559.                         playerID.message(dLg.crt[113]+site+dLg.crt[114]);
  560.                     }
  561.                 }
  562.                 playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить изменения
  563.                 return;
  564.             }
  565.             if (text == "мои позиции" || text == "my positions") { // для показа всех позиций игрока
  566.                 if (player_tp_Array.length !==0) {playerID.message(dLg.crt[118])}
  567.                 for (var j = 0; j < player_tp_Array[i].pos.length; j++) {
  568.                     site = player_tp_Array[i].pos[j].site;
  569.                     world = player_tp_Array[i].pos[j].world;
  570.                     xPl = player_tp_Array[i].pos[j].x;
  571.                     yPl = player_tp_Array[i].pos[j].y;
  572.                     zPl = player_tp_Array[i].pos[j].z;
  573.                     rPl = player_tp_Array[i].pos[j].r;
  574.                     playerID.message('§e id=§2'+j+'§e, '+dLg.abt[21]+': "§b'+site+'§e", '+dLg.abt[17]+': "§f'+world+'§e";  X:§f'+xPl+'§e, Y:§f'+yPl+'§e, Z:§f'+zPl+'§e, '+dLg.abt[18]+':§f'+rPl+'§e\u00B0.');
  575.                 }
  576.             }
  577.         }
  578.         if (text.indexOf("команда /")==0 || text.indexOf("command /")==0) { // вызов команды с сохранением в короткие логи
  579.             text = event.message;
  580.             if (text.indexOf("command")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  581.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  582.             text = text.substring(text.indexOf("/"));
  583.             if (text.indexOf("~") !== (-1)) {
  584.                 for (var i=0;i<=2;i++) {
  585.                     temp=[0,0,0,0];
  586.                     if (i==0) {temp[0]=Math.round(xPl);
  587.                     } else if (i==1) {temp[0]=Math.round(yPl);
  588.                     } else {temp[0]=Math.round(zPl)}
  589.                     if (text.indexOf("~") !== (-1)) {
  590.                         temp[1]=text.indexOf("~");
  591.                         temp[2]=text.indexOf(" ",text.indexOf("~"));
  592.                         temp[3]=Number(text.slice(temp[1]+1,temp[2]));
  593.                         text=text.slice(0,temp[1])+(temp[0]+temp[3])+text.slice(temp[2]);
  594.                     }
  595.                 }
  596.             }
  597.             effect(event, playerID, text);
  598.             event.setCanceled(true);
  599.         }
  600.         if (text.indexOf("замещать")==0 || text.indexOf("заменять")==0 || text.indexOf("заполнять")==0 || text.indexOf("substitute")==0 || text.indexOf("replace")==0 || text.indexOf("complete")==0) { // режимы строительства
  601.             event.setCanceled(true);
  602.             if (text.indexOf("substitute")==0 || text.indexOf("replace")==0 || text.indexOf("complete")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  603.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  604.             if (text.indexOf("замещать")==0 || text.indexOf("substitute")==0) { // замещение всех блоков
  605.                 temp = text.split(' ');
  606.                 if (temp.length == 1) {
  607.                     bh=1,bw=1,bd=0;
  608.                 } else if (temp.length == 4) {
  609.                     bh = Math.round((Number(temp[1])-1)/2);
  610.                     bw = Math.round((Number(temp[2])-1)/2);
  611.                     bd = Math.round(Number(temp[3])-1);
  612.                 } else {
  613.                     playerID.message(dLg.crt[119]);
  614.                     return;
  615.                 }
  616.                 if (!Number(bh+1)) {playerID.message(dLg.crt[120]+': §r'+bh+dLg.crt[91]); return}
  617.                 if (!Number(bw+1)) {playerID.message(dLg.crt[121]+': §r'+bw+dLg.crt[91]); return}
  618.                 if (!Number(bd+1)) {playerID.message(dLg.crt[122]+': §r'+bd+dLg.crt[91]); return}
  619.                 if (buildType==1) {
  620.                     buildType=0;
  621.                     playerID.message(dLg.crt[123]+dLg.abt[23]);
  622.                 } else {
  623.                     if (buildType==0) {temp = dLg.abt[22]} else {temp = dLg.abt[24]}
  624.                     buildType=1;
  625.                     playerID.message(dLg.crt[124]+temp+'§8, '+dLg.abt[25]+' §2'+((bh*2)+1)+'§8x§2'+((bw*2)+1)+'§8x§2'+(bd+1));
  626.                 }
  627.             }
  628.             if (text.indexOf("заменять")==0 || text.indexOf("replace")==0) { // замена всех блоков кроме воздуха
  629.                 temp = text.split(' ');
  630.                 if (temp.length == 1) {
  631.                     bh=1,bw=1,bd=0;
  632.                 } else if (temp.length== 4) {
  633.                     bh = Math.round(Number(temp[1])/2);
  634.                     bw = Math.round(Number(temp[2])/2);
  635.                     bd = Math.round(Number(temp[3])-1);
  636.                 } else {
  637.                     playerID.message(dLg.crt[125]);
  638.                     return;
  639.                 }
  640.                 if (!Number(bh+1)) {playerID.message(dLg.crt[120]+': §r'+bh+dLg.crt[91]); return}
  641.                 if (!Number(bw+1)) {playerID.message(dLg.crt[121]+': §r'+bw+dLg.crt[91]); return}
  642.                 if (!Number(bd+1)) {playerID.message(dLg.crt[122]+': §r'+bd+dLg.crt[91]); return}
  643.                 if (buildType==2) {
  644.                     buildType=0;
  645.                     playerID.message(dLg.crt[126]+dLg.abt[23]);
  646.                 } else {
  647.                     if (buildType==0) {temp = dLg.abt[22]} else {temp = dLg.abt[24]}
  648.                     buildType=2;
  649.                     playerID.message(dLg.crt[126]+temp+'§8, '+dLg.abt[25]+' §2'+((bh*2)+1)+'§8x§2'+((bw*2)+1)+'§8x§2'+(bd+1));
  650.                 }
  651.             }
  652.             if (text.indexOf("заполнять")==0 || text.indexOf("complete")==0) { // замена только воздуха
  653.                 temp = text.split(' ');
  654.                 if (temp.length == 1) {
  655.                     bh=1,bw=1,bd=0;
  656.                 } else if (temp.length== 4) {
  657.                     bh = Math.round(Number(temp[1])/2);
  658.                     bw = Math.round(Number(temp[2])/2);
  659.                     bd = Math.round(Number(temp[3])-1);
  660.                 } else {
  661.                     playerID.message(dLg.crt[127]);
  662.                     return;
  663.                 }
  664.                 if (!Number(bh+1)) {playerID.message(dLg.crt[120]+': §r'+bh+dLg.crt[91]); return}
  665.                 if (!Number(bw+1)) {playerID.message(dLg.crt[121]+': §r'+bw+dLg.crt[91]); return}
  666.                 if (!Number(bd+1)) {playerID.message(dLg.crt[122]+': §r'+bd+dLg.crt[91]); return}
  667.                 if (buildType==3) {
  668.                     buildType=0;
  669.                     playerID.message(dLg.crt[128]+dLg.abt[23]);
  670.                 } else {
  671.                     if (buildType==0) {temp = dLg.abt[22]} else {temp = dLg.abt[24]}
  672.                     buildType=3;
  673.                     playerID.message(dLg.crt[128]+temp+'§8, '+dLg.abt[25]+' §2'+((bh*2)+1)+'§8x§2'+((bw*2)+1)+'§8x§2'+(bd+1));
  674.                 }
  675.             }
  676.         }
  677.         if (text.indexOf("копия") == 0 || text.indexOf("copy")==0) { // копирование предмета в руке
  678.             event.setCanceled(true);
  679.             if (text.indexOf("copy")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  680.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  681.             temp = text.split(' ');
  682.             if (temp.length > 1) {
  683.                 if (!Number(temp[1])) {temp=[1,'']} else {temp=[Math.round(Number(temp[1])),'']}
  684.             } else {
  685.                 temp=[1,''];
  686.             }
  687.             if (playerID.getMainhandItem().getName() !== 'minecraft:air') {
  688.                 temp[1]=playerID.getMainhandItem();
  689.             } else if (playerID.getOffhandItem().getName() !== 'minecraft:air') {
  690.                 temp[1]=playerID.getOffhandItem();
  691.             } else {
  692.                 playerID.message(dLg.crt[129]);
  693.                 return;
  694.             }
  695.             for (var i=1; i<=temp[0]; i++) {playerID.giveItem(playerID.getMainhandItem().copy())}
  696.             playerID.message(dLg.crt[130]+temp[1].getDisplayName()+'§7, §2'+temp[0]+' §7'+dLg.abt[26]+'.');
  697.         }
  698.         if (text.indexOf("список") == 0 || text.indexOf("list")==0) { // выводит в чат логи из команд игроков
  699.             event.setCanceled(true);
  700.             if (text.indexOf("list")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  701.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  702.             var comList = JSON.parse(playerID.world.getStoreddata().get("comlist"));
  703.             playerID.message(dLg.crt[131]);
  704.             if (comList !== undefined && comList !== null && comList !== 0) {
  705.                 temp=[0,0,0]
  706.                 for (var i=0; i<comList.length; i++) {
  707.                     if (comList[i].type) {temp[0]=dLg.crt[132]} else {temp[0]=dLg.crt[133]}
  708.                     playerID.message('§2'+i+'§7 '+dLg.abt[27]+':§f'+comList[i].name+'§7; '+dLg.abt[17]+':§e'+comList[i].world+'§7; '+dLg.abt[28]+': §6'+comList[i].x+'§7:§6'+comList[i].y+'§7:§6'+comList[i].z+'§7; '+temp[0]+comList[i].com+'§7; '+dLg.crt[211]+' §3'+comList[i].tab);
  709.                 }
  710.             } else {playerID.message(dLg.crt[134])}
  711.         }
  712.         if (text.indexOf("дата") == 0 || text.indexOf("data")==0) { // выводит в чат содержимое переменной в Storeddata
  713.             event.setCanceled(true);
  714.             if (text.indexOf("data")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
  715.             dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
  716.             temp = text.split(' ');
  717.             if (Number(temp[1])==0) {
  718.                 temp[1]='temp_item_mine';
  719.             } else if (Number(temp[1])==1) {
  720.                 temp[1]='temp_item_cust';
  721.             } else if (Number(temp[1])==2) {
  722.                 temp[1]='temp_block';
  723.             } else if (Number(temp[1])==3) {
  724.                 temp[1]='temp_entity_mine';
  725.             } else if (Number(temp[1])==4) {
  726.                 temp[1]='temp_entity_cust';
  727.             } else if (Number(temp[1])==5) {
  728.                 temp[1]='entity_around';
  729.             }
  730.             if (temp.length == 1) {
  731.                 playerID.message(dLg.crt[213]);
  732.                 if (playerID.world.getStoreddata().get('temp_item_mine')) {playerID.message(dLg.crt[212]+'§rid:§30 §7- §ftemp_item_mine')}
  733.                 if (playerID.world.getStoreddata().get('temp_item_cust')) {playerID.message(dLg.crt[212]+'§rid:§31 §7- §ftemp_item_cust')}
  734.                 if (playerID.world.getStoreddata().get('temp_block')) {playerID.message(dLg.crt[212]+'§rid:§32 §7- §ftemp_block')}
  735.                 if (playerID.world.getStoreddata().get('temp_entity_mine')) {playerID.message(dLg.crt[212]+'§rid:§33 §7- §ftemp_entity_mine')}
  736.                 if (playerID.world.getStoreddata().get('temp_entity_cust')) {playerID.message(dLg.crt[212]+'§rid:§34 §7- §ftemp_entity_cust')}
  737.                 if (playerID.world.getStoreddata().get('entity_around')) {playerID.message(dLg.crt[212]+'§rid:§35 §7- §fentity_around')}
  738.                 playerID.message(dLg.crt[214]);
  739.                 temp=[playerID.world.getStoreddata().getKeys(),0];
  740.                 for (var i=0;i<temp[0].length;i++) {
  741.                     if (temp[1]) {
  742.                         temp[1]=temp[0][i];
  743.                     } else {
  744.                         temp[1]=temp[1]+';\n'+temp[0][i];
  745.                     }
  746.                 }
  747.                 playerID.message(temp[1]);
  748.                 return;
  749.             } else if (temp.length == 2 && playerID.world.getStoreddata().get(temp[1]) !== null) {
  750.                 com=[temp[1],0];
  751.             } else if (temp.length == 3 && Number(temp[2]) && playerID.world.getStoreddata().get(temp[1]) !== null) {
  752.                 if (Number(temp[2]) !== 1 && Number(temp[2]) !== 2) {
  753.                     com=[temp[1],0];
  754.                     playerID.message(dLg.crt[135]+temp[2]+dLg.crt[136]);
  755.                 } else {com=[temp[1],temp[2]]}
  756.             } else if (temp.length >1 && playerID.world.getStoreddata().get(temp[1]) == null) {
  757.                 playerID.message(dLg.crt[137]+temp[1]+dLg.crt[138]);
  758.                 temp=[playerID.world.getStoreddata().getKeys(),0];
  759.                 for (var i=0;i<temp[0].length;i++) {
  760.                     if (temp[1]) {
  761.                         temp[1]=temp[0][i];
  762.                     } else {
  763.                         temp[1]=temp[1]+';\n'+temp[0][i];
  764.                     }
  765.                 }
  766.                 playerID.message(temp[1]);
  767.                 return;
  768.             } else {
  769.                 playerID.message(dLg.crt[139]+'\n'+dLg.crt[219]);
  770.                 temp=[playerID.world.getStoreddata().getKeys(),0];
  771.                 for (var i=0;i<temp[0].length;i++) {
  772.                     if (temp[1]) {
  773.                         temp[1]=temp[0][i];
  774.                     } else {
  775.                         temp[1]=temp[1]+';\n'+temp[0][i];
  776.                     }
  777.                 }
  778.                 playerID.message(temp[1]);
  779.                 return;
  780.             }
  781.             playerID.message('§4------------------------------------------------------------------------');
  782.             temp=String(playerID.world.getStoreddata().get(com[0]));
  783.             if (com[1]==1) {
  784.                 playerID.message(dLg.crt[137]+com[0]+dLg.crt[140]);
  785.                 try {
  786.                     playerID.message('-----------------');
  787.                     parseTAG(event.API.stringToNbt(temp),'D_');
  788.                     playerID.message('-----------------\n'+dLg.crt[141])
  789.                 } catch (err) {playerID.message('-----------------\n'+dLg.crt[142]+'\n'+dLg.crt[137]+com[0]+dLg.crt[143]+'\n§b'+temp)}
  790.             } else {playerID.message(dLg.crt[137]+com[0]+dLg.crt[143]+'\n§b'+temp)}
  791.         }
  792.     }
  793.     eval('playerID.world.getStoreddata().put("data_'+name.toLowerCase()+'", JSON.stringify(dPlArr))'); // сохранить базу в мире
  794. }
  795. function toss(event) { // отмена выбрасывания предметов для креатива - удаление
  796.     playerID = event.player;
  797.     if (playerID.getGamemode() == 1) {
  798.         playerID.message(dLg.crt[144]+event.item.getDisplayName()+' §r'+event.item.getStackSize()+' §7'+dLg.abt[6]);
  799.         event.setCanceled(true);
  800.     }
  801. }
  802. function tick(event) {
  803.     playerID = event.player;
  804.     var name = playerID.getName();
  805.     var dPlArr = eval('JSON.parse(playerID.world.getStoreddata().get("data_'+name.toLowerCase()+'"))'); // база данных игрока
  806.     if (dLg!==eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")') && dPlArr) {dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")')}
  807.     if (zone && !playerID.timers.has(201)) { // сканировать зону на предмет существ
  808.         var entityArr = playerID.world.getNearbyEntities(sx, sy, sz, sr, 0);
  809.         if (entityArr.length > 0) { // если существа есть
  810.             playerID.message(dLg.crt[145]+sx+'§7:§f'+sy+'§7:§f'+sz+'§7, '+dLg.abt[15]+':§f'+sr+'§7 '+dLg.abt[29]+'.');
  811.             vastEntity(playerID, sr, sx, sy, sz);
  812.             playerID.message(dLg.crt[146]+secZone+'§7 '+dLg.abt[3]+'.');
  813.             playerID.timers.forceStart(201,(secZone*20),false); // запуск задержки
  814.         }
  815.     }
  816. }
  817. function timer(event) {
  818.     var x,y,z,blockID;
  819.     if (event.id == 200) { // стройка
  820.         if (buildType!==1) {
  821.             if (playerID.getMainhandItem().isBlock() && playerID.getMainhandItem().getName()!=='minecraft:air') {
  822.                 blockID=playerID.getMainhandItem();
  823.             } else if (playerID.getOffhandItem().isBlock() && playerID.getOffhandItem().getName()!=='minecraft:air') {
  824.                 blockID=playerID.getOffhandItem();
  825.             } else if (playerID.getInventory().getSlot(0).isBlock() && playerID.getInventory().getSlot(0)!=='minecraft:air') {
  826.                 blockID=playerID.getInventory().getSlot(0);
  827.             } else {return}
  828.         } else {
  829.             if (playerID.getMainhandItem().isBlock()) {
  830.                 blockID=playerID.getMainhandItem();
  831.             } else if (playerID.getOffhandItem().isBlock()) {
  832.                 blockID=playerID.getOffhandItem();
  833.             } else if (playerID.getInventory().getSlot(0).isBlock()) {
  834.                 blockID=playerID.getInventory().getSlot(0);
  835.             } else {return}
  836.         }
  837.         if (playerID.rayTraceBlock(8,false,false) == null || playerID.rayTraceBlock(8,false,false).getBlock().getName()=='minecraft:air') {return}
  838.         x=playerID.rayTraceBlock(8,false,false).getPos().getX();
  839.         y=playerID.rayTraceBlock(8,false,false).getPos().getY();
  840.         z=playerID.rayTraceBlock(8,false,false).getPos().getZ();
  841.         build(playerID,x,y,z,buildType,blockID);
  842.     }
  843.     if (event.id == 202) { // поиск существ с именем
  844.         if (srh && fn && fr) {
  845.             searchEntity(event);
  846.             playerID.message(dLg.crt[218]+fn);
  847.         } else {
  848.             playerID.timer.stop(202);
  849.         }
  850.     }
  851. }
  852. function build(playerID,x,y,z,type,blockID) { // функция работы строительных инструментов
  853.     var cx, cy, cz, maxX, maxY, maxZ, minX, minY, minZ, rot, temp;
  854.     if (playerID.getPitch()<-60) { // потолок
  855.         maxX=x+bh, maxY=y+bd, maxZ=z+bw;
  856.         minX=x-bh, minY=y, minZ=z-bw;
  857.     } else if (playerID.getPitch()>60) { // пол
  858.         maxX=x+bh, maxY=y, maxZ=z+bw;
  859.         minX=x-bh, minY=y-bd, minZ=z-bw;
  860.     } else { // стена
  861.         if (playerID.getRotation()<0) {rot=360+playerID.getRotation()} else {rot=playerID.getRotation()}
  862.         if (rot>=45&&rot<135) { // запад
  863.             maxX=x, maxY=y+bw, maxZ=z+bh;
  864.             minX=x-bd, minY=y-bw, minZ=z-bh;
  865.         } else if (rot>=135&&rot<225) { // север
  866.             maxX=x+bh, maxY=y+bw, maxZ=z;
  867.             minX=x-bh, minY=y-bw, minZ=z-bd;
  868.         } else if (rot>=225&&rot<315) { // восток
  869.             maxX=x+bd, maxY=y+bw, maxZ=z+bh;
  870.             minX=x, minY=y-bw, minZ=z-bh;
  871.         } else { // юг
  872.             maxX=x+bh, maxY=y+bw, maxZ=z+bd;
  873.             minX=x-bh, minY=y-bw, minZ=z;
  874.         }
  875.     }
  876.     cx=minX, cy=minY, cz=minZ;
  877.     while (cy < maxY+1) {
  878.         if (cy >= 2) {
  879.             temp=playerID.world.getBlock(cx,cy,cz).getName();
  880.             if (temp!=='customnpcs:npcscripted' && temp!=='customnpcs:npcscripteddoor' && temp!=='customnpcs:npcredstoneblock' && temp!=='customnpcs:npcborder' && temp!=='customnpcs:npcwaypoint') {
  881.                 if (type==1) { // замещать
  882.                     playerID.world.setBlock(cx,cy,cz,blockID.getName(),blockID.getItemDamage());
  883.                 } else if (type==2 && temp!=='minecraft:air') { // заменять
  884.                     playerID.world.setBlock(cx,cy,cz,blockID.getName(),blockID.getItemDamage());
  885.                 } else if (type==3 && temp=='minecraft:air') { // заполнять
  886.                     playerID.world.setBlock(cx,cy,cz,blockID.getName(),blockID.getItemDamage());
  887.                 }
  888.             }
  889.         }
  890.         if (cx == maxX) {
  891.             cx=minX;
  892.             if (cz == maxZ) {
  893.                 cz = minZ;
  894.                 cy++;
  895.             } else {cz++}
  896.         } else {cx++}
  897.     }
  898. }
  899. function infoItem(playerID) { // функция вывода информации о предмете
  900.     var itemPlayer;
  901.     playerID.message("§2--------------------------------------------------------------------------------");
  902.     if (playerID.getMainhandItem().getName() !== 'minecraft:air') { // поиск предмета в правой руке
  903.         itemPlayer = playerID.getMainhandItem();
  904.         playerID.message(dLg.crt[147]+dLg.crt[148]+' §7:§r '+itemPlayer.getDisplayName());
  905.     } else if (playerID.getOffhandItem().getName() !== 'minecraft:air') { // поиск предмета в левой руке
  906.         itemPlayer = playerID.getOffhandItem();
  907.         playerID.message(dLg.crt[147]+dLg.crt[149]+' §7:§r '+itemPlayer.getDisplayName());
  908.     } else {
  909.         playerID.message(dLg.crt[152]);
  910.         return;
  911.     }
  912.     playerID.message('§7'+dLg.crt[150]+':');
  913.     parseTAG(itemPlayer.getNbt(),"M_");
  914.     if (String(itemPlayer.getNbt().getMCNBT()).length <= 440) {
  915.         playerID.message('§7'+dLg.crt[150]+':');
  916.         parseTAG(itemPlayer.getNbt(),"M_");
  917.         playerID.message('§2'+dLg.crt[153]+':\n'+String(itemPlayer.getNbt().getMCNBT()));
  918.     } else {playerID.message(dLg.crt[154])}
  919.     playerID.world.getStoreddata().put("temp_item_mine", String(itemPlayer.getNbt().getMCNBT()));
  920.     playerID.message('§7'+dLg.crt[150]+dLg.crt[155]+'temp_item_mine"§7.\n-----------------\n'+dLg.crt[156]);
  921.     if (itemPlayer.getItemNbt().getKeys().length !== null) { // проверка на теги
  922.         playerID.message("-----------------");
  923.         playerID.message('§7'+dLg.crt[151]+':');
  924.         parseTAG(itemPlayer.getItemNbt(),"C_");
  925.         if (String(itemPlayer.getItemNbt().getMCNBT()).length <= 440) {
  926.             playerID.message('§7'+dLg.crt[151]+':');
  927.             parseTAG(itemPlayer.getItemNbt(),"C_");
  928.             playerID.message('§2'+dLg.crt[153]+':\n'+String(itemPlayer.getItemNbt().getMCNBT()));
  929.         } else {playerID.message(dLg.crt[154])}
  930.         playerID.world.getStoreddata().put("temp_item_cust", String(itemPlayer.getItemNbt().getMCNBT()));
  931.         playerID.message('§7'+dLg.crt[151]+dLg.crt[155]+'temp_item_cust"§7.\n-----------------\n'+dLg.crt[156]);
  932.     }
  933.     playerID.message("-----------------");
  934.     if (itemPlayer.getType()==0) { // тип предмета
  935.         playerID.message(dLg.abt[30]+':            §2'+dLg.crt[157]);
  936.     } else if (itemPlayer.getType()==1) {
  937.         playerID.message(dLg.abt[30]+':            §2'+dLg.crt[158]);
  938.     } else if (itemPlayer.getType()==2) {
  939.         playerID.message(dLg.abt[30]+':            §2'+dLg.crt[159]);
  940.     } else if (itemPlayer.getType()==3) {
  941.         playerID.message(dLg.abt[30]+':            §2'+dLg.crt[160]);
  942.     } else if (itemPlayer.getType()==4) {
  943.         playerID.message(dLg.abt[30]+':            §2'+dLg.crt[161]);
  944.     } else if (itemPlayer.getType()==5) {
  945.         playerID.message(dLg.abt[30]+':            §2'+dLg.crt[162]);
  946.     } else if (itemPlayer.getType()==6) {
  947.         playerID.message(dLg.abt[30]+':            §2'+dLg.crt[163]);
  948.     }
  949.     if (itemPlayer.getName() == "minecraft:enchanted_book" || itemPlayer.isEnchanted()) { // проверка на зачарование
  950.         playerID.message(dLg.crt[164]+':');
  951.         var totalEnch, tag, temp=itemPlayer.getItemNbt().getCompound('tag');
  952.         if (temp.has('ench')) {tag = 'ench'} else {tag = 'StoredEnchantments'}
  953.         for (var i=0; i<temp.getList(tag,10).length; i++) {playerID.message('   '+dLg.crt[165]+' §7#'+i+'§r :§b'+dLg.ent[temp.getList(tag,10)[i][1]]+'§r, '+dLg.abt[7]+' §6'+temp.getList(tag,10)[i][0])}
  954.     }
  955.     playerID.message(dLg.crt[166]+'§6'+itemPlayer.getName());
  956.     playerID.message(dLg.crt[167]+'§e'+itemPlayer.getDisplayName());
  957.     playerID.message(dLg.crt[168]+'§c'+itemPlayer.getItemName());
  958.     playerID.message(dLg.crt[169]+itemPlayer.getItemDamage()+' '+dLg.abt[31]+' '+itemPlayer.getMaxItemDamage()+' '+dLg.abt[32]+'. (metadata)');
  959.     playerID.message(dLg.crt[170]+'§9'+itemPlayer.getStackSize()+' '+dLg.abt[31]+' '+itemPlayer.getMaxStackSize()+' '+dLg.abt[32]+'.');
  960.     if (itemPlayer.getAttackDamage() != 0) {playerID.message(dLg.crt[171]+'§4'+itemPlayer.getAttackDamage())} // проверка на наносимый урон
  961.     if (itemPlayer.getFoodLevel() != 0) {playerID.message(dLg.crt[172]+itemPlayer.getFoodLevel())} // проверка предмета на еду
  962.     if (itemPlayer.getItemNbt().getCompound('tag').has('AttributeModifiers')) {
  963.         playerID.message(dLg.crt[173]+':');
  964.         if (itemPlayer.getAttribute("generic.maxHealth") > 0) {playerID.message('    §e'+dLg.crt[174]+' §f='+itemPlayer.getAttribute("generic.maxHealth"))}
  965.         if (itemPlayer.getAttribute("generic.knockbackResistance") > 0) {playerID.message('    §e'+dLg.crt[175]+' §f='+itemPlayer.getAttribute("generic.knockbackResistance"))}
  966.         if (itemPlayer.getAttribute("generic.movementSpeed") > 0) {playerID.message('    §e'+dLg.crt[176]+' §f='+itemPlayer.getAttribute("generic.movementSpeed"))}
  967.         if (itemPlayer.getAttribute("generic.armor") > 0) {playerID.message('    §e'+dLg.crt[177]+' §f='+itemPlayer.getAttribute("generic.armor"))}
  968.         if (itemPlayer.getAttribute("generic.armorToughness") > 0) {playerID.message('    §e'+dLg.crt[178]+' §f='+itemPlayer.getAttribute("generic.armorToughness"))}
  969.         if (itemPlayer.getAttribute("generic.attackDamage") > 0) {playerID.message('    §e'+dLg.crt[179]+' §f='+itemPlayer.getAttribute("generic.attackDamage"))}
  970.         if (itemPlayer.getAttribute("generic.attackSpeed") > 0) {playerID.message('    §e'+dLg.crt[180]+' §f='+itemPlayer.getAttribute("generic.attackSpeed"))}
  971.         if (itemPlayer.getAttribute("generic.luck") > 0) {playerID.message('    §e'+dLg.crt[181]+' §f='+itemPlayer.getAttribute("generic.luck"))}
  972.     }
  973. }
  974. function infoBlock(playerID, x, y, z) { // функция вывода информации о блоке
  975.     var blockInWorld = playerID.world.getBlock(x,y,z), temp;
  976.     playerID.message("§6--------------------------------------------------------------------------------");
  977.     if (playerID.getBlockX()==x&&playerID.getBlockY()==y+1&&playerID.getBlockZ()==z) {temp = ' §7('+dLg.abt[33]+')'} else {temp = ' §7('+dLg.abt[34]+')'}
  978.     playerID.message(dLg.crt[182]+'§eX:§f'+x+' §eY:§f'+y+' §eZ:§f'+z+temp);
  979.     if (blockInWorld.hasTileEntity() && blockInWorld.getTileEntityNBT().getKeys().length) {
  980.         playerID.message("-----------------");
  981.         if (String(blockInWorld.getTileEntityNBT().getMCNBT()).length <= 440) {
  982.             playerID.message('§7'+dLg.crt[151]+':');
  983.             parseTAG(blockInWorld.getTileEntityNBT(),"C_");
  984.             playerID.message('§2'+dLg.crt[153]+':\n'+String(blockInWorld.getTileEntityNBT().getMCNBT()));
  985.         } else {
  986.             playerID.message(dLg.crt[154])
  987.         }
  988.         playerID.world.getStoreddata().put("temp_block", String(blockInWorld.getTileEntityNBT().getMCNBT()));
  989.         playerID.message('§7'+dLg.crt[151]+dLg.crt[155]+'temp_block"§7.\n-----------------\n'+dLg.crt[156]);
  990.     }
  991.     playerID.message("-----------------");
  992.     playerID.message(dLg.crt[183]+': §6' + blockInWorld.getName()+'\n'+dLg.crt[184]+': §9' + blockInWorld.getMetadata());
  993. }
  994. function vastEntity(playerID, r, x, y, z) { // функция вывода краткой информации о найденных в зоне существах
  995.     var entityArr = playerID.world.getNearbyEntities(playerID.world.getBlock(x,y,z).getPos(), r, 0);
  996.     var temp, type, text, entityX, entityY, entityZ, name;
  997.     playerID.message('§7------------------------------------------------------\n'+dLg.crt[185]+'§6'+x+'§7:§6'+y+'§7:§6'+z+'§7; '+dLg.abt[15]+':§6'+r+'§7:');
  998.     for (var i=0; i< entityArr.length; i++) { // зазборка массива
  999.         name = entityArr[i].getMCEntity().func_70005_c_();
  1000.         entityX=entityArr[i].getBlockX();
  1001.         entityY=entityArr[i].getBlockY();
  1002.         entityZ=entityArr[i].getBlockZ();
  1003.         type=dLg.ett[entityArr[i].getType()];
  1004.         if (entityArr[i].getType()==0) {
  1005.             text='§3'+entityArr[i].getType()+'§7:'+'§3'+type+' §7'+dLg.abt[21]+': §3';
  1006.         } else if (entityArr[i].getType()==1) {
  1007.             text='§f'+entityArr[i].getType()+'§7:'+'§f'+type+' §7'+dLg.abt[21]+': §f';
  1008.         } else if (entityArr[i].getType()==2) {
  1009.             text='§5'+entityArr[i].getType()+'§7:'+'§5'+type+' §7'+dLg.abt[21]+': §5';
  1010.         } else if (entityArr[i].getType()==3) {
  1011.             text='§b'+entityArr[i].getType()+'§7:'+'§b'+type+' §7'+dLg.abt[21]+': §b';
  1012.         } else if (entityArr[i].getType()==4) {
  1013.             text='§7'+entityArr[i].getType()+'§7:'+'§d'+type+' §7'+dLg.abt[21]+': §d';
  1014.         } else if (entityArr[i].getType()==5) {
  1015.             text='§8'+entityArr[i].getType()+'§7:'+'§8'+type+' §7'+dLg.abt[21]+': §8';
  1016.         } else if (entityArr[i].getType()==6) {
  1017.             text='§2'+entityArr[i].getType()+'§7:'+'§2'+type+' §7'+dLg.abt[21]+': §2';
  1018.         } else if (entityArr[i].getType()==7) {
  1019.             text='§a'+entityArr[i].getType()+'§7:'+'§a'+type+' §7'+dLg.abt[21]+': §2';
  1020.         } else if (entityArr[i].getType()==8) {
  1021.             text='§1'+entityArr[i].getType()+'§7:'+'§1'+type+' §7'+dLg.abt[21]+': §2';
  1022.         } else if (entityArr[i].getType()==9) {
  1023.             text='§4'+entityArr[i].getType()+'§7:'+'§4'+type+' §7'+dLg.abt[21]+': §2';
  1024.         } else if (entityArr[i].getType()==10) {
  1025.             text='§6'+entityArr[i].getType()+'§7:'+'§6'+type+' §7'+dLg.abt[21]+': §2';
  1026.         } else if (entityArr[i].getType()==11) {
  1027.             text='§e'+entityArr[i].getType()+'§7:'+'§e'+type+' §7'+dLg.abt[21]+': §2';
  1028.         } else {
  1029.             text='§9'+entityArr[i].getType()+'§7:'+'§9'+type+' §7'+dLg.abt[21]+': §9';
  1030.         }
  1031.         playerID.message(i+'§7: '+dLg.abt[30]+': '+text+name+'§7; '+dLg.abt[28]+' §fX:§6'+entityX+' §fY:§6'+entityY+' §fZ:§6'+entityZ+'\n§7       uuid = §e'+entityArr[i].getUUID());
  1032.         if (temp) {
  1033.             temp.push({type:type,name:name,x:entityX,y:entityY,z:entityZ,uuid:entityArr[i].getUUID(),tagM:String(entityArr[i].getNbt().getMCNBT()),tagC:String(entityArr[i].getEntityNbt().getMCNBT())});
  1034.         } else {
  1035.             temp = [{type:type,name:name,x:entityX,y:entityY,z:entityZ,uuid:entityArr[i].getUUID(),tagM:String(entityArr[i].getNbt().getMCNBT()),tagC:String(entityArr[i].getEntityNbt().getMCNBT())}];
  1036.         }
  1037.     }
  1038.     playerID.world.getStoreddata().put("entity_around", JSON.stringify(temp)); // сохранить массив данных его в мире
  1039.     playerID.message(dLg.crt[186]+'"§fentity_around§7"');
  1040. }
  1041. function searchEntity(event) { // функция поиска существа по имени и телепортация игрока к нему.
  1042.     if (!fn || !fr || !playerID) {
  1043.         srh=false;
  1044.         return;
  1045.     } else {
  1046.         x=playerID.getX(),y=playerID.getY(),z=playerID.getZ();
  1047.     }
  1048.     var entityArr = playerID.world.getNearbyEntities(playerID.world.getBlock(x,y,z).getPos(), fr, 0);
  1049.     var type, text, entityX, entityY, entityZ, name;
  1050.     for (var i=0; i< entityArr.length; i++) { // зазборка массива
  1051.         name = entityArr[i].getMCEntity().func_70005_c_();
  1052.         if (name.toLowerCase().indexOf(fn) !== (-1)) {
  1053.             entityX=entityArr[i].getBlockX();
  1054.             entityY=entityArr[i].getBlockY();
  1055.             entityZ=entityArr[i].getBlockZ();
  1056.             type=dLg.ett[entityArr[i].getType()];
  1057.             if (entityArr[i].getType()==0) {
  1058.                 text='§3'+entityArr[i].getType()+'§7:'+'§3'+type+' §7'+dLg.abt[21]+': §3';
  1059.             } else if (entityArr[i].getType()==1) {
  1060.                 text='§f'+entityArr[i].getType()+'§7:'+'§f'+type+' §7'+dLg.abt[21]+': §f';
  1061.             } else if (entityArr[i].getType()==2) {
  1062.                 text='§5'+entityArr[i].getType()+'§7:'+'§5'+type+' §7'+dLg.abt[21]+': §5';
  1063.             } else if (entityArr[i].getType()==3) {
  1064.                 text='§b'+entityArr[i].getType()+'§7:'+'§b'+type+' §7'+dLg.abt[21]+': §b';
  1065.             } else if (entityArr[i].getType()==4) {
  1066.                 text='§7'+entityArr[i].getType()+'§7:'+'§d'+type+' §7'+dLg.abt[21]+': §d';
  1067.             } else if (entityArr[i].getType()==5) {
  1068.                 text='§8'+entityArr[i].getType()+'§7:'+'§8'+type+' §7'+dLg.abt[21]+': §8';
  1069.             } else if (entityArr[i].getType()==6) {
  1070.                 text='§2'+entityArr[i].getType()+'§7:'+'§2'+type+' §7'+dLg.abt[21]+': §2';
  1071.             } else if (entityArr[i].getType()==7) {
  1072.                 text='§a'+entityArr[i].getType()+'§7:'+'§a'+type+' §7'+dLg.abt[21]+': §2';
  1073.             } else if (entityArr[i].getType()==8) {
  1074.                 text='§1'+entityArr[i].getType()+'§7:'+'§1'+type+' §7'+dLg.abt[21]+': §2';
  1075.             } else if (entityArr[i].getType()==9) {
  1076.                 text='§4'+entityArr[i].getType()+'§7:'+'§4'+type+' §7'+dLg.abt[21]+': §2';
  1077.             } else if (entityArr[i].getType()==10) {
  1078.                 text='§6'+entityArr[i].getType()+'§7:'+'§6'+type+' §7'+dLg.abt[21]+': §2';
  1079.             } else if (entityArr[i].getType()==11) {
  1080.                 text='§e'+entityArr[i].getType()+'§7:'+'§e'+type+' §7'+dLg.abt[21]+': §2';
  1081.             } else {
  1082.                 text='§9'+entityArr[i].getType()+'§7:'+'§9'+type+' §7'+dLg.abt[21]+': §9';
  1083.             }
  1084.             playerID.message(i+'§7: '+dLg.abt[30]+': '+text+name+'§7; '+dLg.abt[28]+' §fX:§6'+entityX+' §fY:§6'+entityY+' §fZ:§6'+entityZ+'\n§7       uuid = §e'+entityArr[i].getUUID()+';\n'+dLg.crt[217]);
  1085.             srh=false;
  1086.             fr=0;
  1087.             fn=0;
  1088.             break;
  1089.         }
  1090.     }
  1091. }
  1092. function infoEntity(playerID, uuid) { // функция вывода информации о существе
  1093.     var entity = playerID.world.getEntity(uuid),name,temp,type,x=Math.round(entity.getX()*100)/100,y=Math.round(entity.getY()*100)/100,z=Math.round(entity.getZ()*100)/100;
  1094.     playerID.message("§b--------------------------------------------------------------------------------");
  1095.     if (entity.getNbt().getKeys().length !==null) {
  1096.         playerID.message('§7'+dLg.crt[150]+':');
  1097.         parseTAG(entity.getNbt(),"M_");
  1098.         playerID.message('§2'+dLg.crt[153]+':\n'+String(entity.getNbt().getMCNBT()));
  1099.         playerID.world.getStoreddata().put("temp_entity_mine", String(entity.getNbt().getMCNBT()));
  1100.         playerID.message('§7'+dLg.crt[150]+dLg.crt[155]+'temp_entity_mine"§7.\n-----------------\n'+dLg.crt[156]+'\n-----------------');
  1101.     }
  1102.     if (entity.getEntityNbt().getKeys().length !==null) {
  1103.         playerID.message("-----------------");
  1104.         playerID.message(dLg.crt[151]+': '+dLg.crt[154])
  1105.         playerID.world.getStoreddata().put("temp_entity_cust", String(entity.getEntityNbt().getMCNBT()));
  1106.         playerID.message('§7'+dLg.crt[151]+dLg.crt[155]+'temp_entity_cust"§7.\n-----------------\n'+dLg.crt[156]+'\n-----------------');
  1107.     }
  1108.     playerID.message(dLg.crt[187]+' UUID: §f'+uuid+'\n §7'+dLg.abt[19]+': X:§f'+x+'§7; Y:§f'+y+'§7; Z:§f'+z);
  1109.     if (entity.getType()==0) {
  1110.         type='§3'+entity.getType()+'§7:'+'§3'+dLg.ett[0]+' §7'+dLg.abt[21]+': §3';
  1111.     } else if (entity.getType()==1) {
  1112.         type='§f'+entity.getType()+'§7:'+'§f'+dLg.ett[1]+' §7'+dLg.abt[21]+': §f';
  1113.     } else if (entity.getType()==2) {
  1114.         type='§5'+entity.getType()+'§7:'+'§5'+dLg.ett[2]+' §7'+dLg.abt[21]+': §5';
  1115.     } else if (entity.getType()==3) {
  1116.         type='§b'+entity.getType()+'§7:'+'§b'+dLg.ett[3]+' §7'+dLg.abt[21]+': §b';
  1117.     } else if (entity.getType()==4) {
  1118.         type='§7'+entity.getType()+'§7:'+'§d'+dLg.ett[4]+' §7'+dLg.abt[21]+': §d';
  1119.     } else if (entity.getType()==5) {
  1120.         type='§8'+entity.getType()+'§7:'+'§8'+dLg.ett[5]+' §7'+dLg.abt[21]+': §8';
  1121.     } else if (entity.getType()==6) {
  1122.         type='§2'+entity.getType()+'§7:'+'§2'+dLg.ett[6]+' §7'+dLg.abt[21]+': §2';
  1123.     } else if (entity.getType()==7) {
  1124.         type='§a'+entity.getType()+'§7:'+'§a'+dLg.ett[7]+' §7'+dLg.abt[21]+': §2';
  1125.     } else {
  1126.         type='§9'+entity.getType()+'§7:'+'§9'+dLg.ett[8]+' §7'+dLg.abt[21]+': §9';
  1127.     }
  1128.     playerID.message(dLg.crt[188]+type+entity.getMCEntity().func_70005_c_());
  1129.     if (entity.getType()>=1&&entity.getType()<=5) {
  1130.         var age=0, time, timeMin, timeSec;
  1131.         playerID.message(dLg.crt[189]+Math.floor(entity.getRotation()*1000)/1000+'\n'+dLg.crt[190]+Math.floor(entity.getPitch()*1000)/1000+'\n'+dLg.crt[191]+Math.floor(entity.getHealth()*10)/10+' §e/§f '+entity.getMaxHealth()+'\n'+dLg.crt[192]+entity.getMCEntity());
  1132.         try {playerID.message(dLg.crt[193]+entity.getAttackTarget().getMCEntity().func_70005_c_())} catch (err) {}
  1133.         try {playerID.message(dLg.crt[194]+entity.getLastAttacked().getMCEntity().func_70005_c_())} catch (err) {}
  1134.         if (playerID.world.getTime()>=18000) {temp=playerID.world.getTime()-18000} else {temp=6000+playerID.world.getTime()}
  1135.         timeMin = Math.floor((temp%1000)/16.6666), timeSec = Math.floor((((temp%1000)/16.6666)-timeMin)*60);
  1136.         if (timeMin <10) {timeMin = "0"+timeMin}
  1137.         if (timeSec <10) {timeSec = "0"+timeSec}
  1138.         time = Math.floor(temp/1000)+":"+timeMin+":"+timeSec+"";
  1139.         playerID.message(dLg.crt[195]+time);
  1140.         if (entity.getType()>=1&&entity.getType()<=3) { // экипировка
  1141.             for (var i=0; i<4; i++) {if (entity.getArmor(i).getName() !== 'minecraft:air') {playerID.message('§e'+dLg.crt[196]+' '+dLg.arm[i]+': §f'+entity.getArmor(i).getDisplayName())}}
  1142.             if (entity.getMainhandItem().getName()!=='minecraft:air') {playerID.message(dLg.crt[197]+entity.getMainhandItem().getDisplayName())}
  1143.             if (entity.getOffhandItem().getName()!=='minecraft:air') {playerID.message(dLg.crt[198]+entity.getMainhandItem().getDisplayName())}
  1144.         }
  1145.         if (entity.getType()==1) { // если это игрок
  1146.             age = playerID.getAge();
  1147.             timeMin = Math.floor((age%72000)/1200), timeSec = Math.floor((age%1200)/20);
  1148.             if (timeMin <10) {timeMin = "0"+timeMin}
  1149.             if (timeSec <10) {timeSec = "0"+timeSec}
  1150.             time = Math.floor(age/72000)+":"+timeMin+":"+timeSec+"";
  1151.             playerID.message(dLg.crt[199]+time+'\n'+dLg.crt[200]);
  1152.             for (var i=0;i<(entity.getInventory().getSize()-4);i++) {if (entity.getInventory().getSlot(i).getName() !== 'minecraft:air') {playerID.message('  §e'+dLg.abt[35]+'§7:§e'+i+' §7= §r'+entity.getInventory().getSlot(i).getDisplayName())}}
  1153.         }
  1154.     }
  1155. }
  1156. function parseTAG(nbt,text) { // функция разбирает nbt на теги с учётом типа тега
  1157.     var temp=[0,0,0,0];
  1158.     for (var i = 0; i < nbt.getKeys().length; i++) {
  1159.         temp[0]=nbt.getKeys()[i]; // имя тега
  1160.         temp[1]=nbt.getType(temp[0]); // тип тега
  1161.         if (temp[1] == 1) {
  1162.             playerID.message(text+i+' §b'+temp[0]+'§7:§r'+nbt.getByte(temp[0]));
  1163.         } else if (temp[1] == 2) {
  1164.             playerID.message(text+i+' §6'+temp[0]+'§7:§r'+nbt.getShort(temp[0]));
  1165.         } else if (temp[1] == 3) {
  1166.             playerID.message(text+i+' §3'+temp[0]+'§7:§r'+nbt.getInteger(temp[0]));
  1167.         } else if (temp[1] == 4) {
  1168.             playerID.message(text+i+' §2'+temp[0]+'§7:§r'+nbt.getLong(temp[0]));
  1169.         } else if (temp[1] == 5) {
  1170.             playerID.message(text+i+' §5'+temp[0]+'§7:§r'+nbt.getFloat(temp[0]));
  1171.         } else if (temp[1] == 6) {
  1172.             playerID.message(text+i+' §6'+temp[0]+'§7:§r'+nbt.getDouble(temp[0]));
  1173.         } else if (temp[1] == 7) {
  1174.             playerID.message(text+i+' §7s'+temp[0]+'§7:§e[§r'+nbt.getShortArray(temp[0])+'§e]');
  1175.         } else if (temp[1] == 8) {
  1176.             playerID.message(text+i+' §c'+temp[0]+'§7:§e"§r'+nbt.getString(temp[0])+'§e"');
  1177.         } else if (temp[1] == 9) {
  1178.             log='';
  1179.             space=1;
  1180.             temp[2] = nbt.getListType(temp[0]);
  1181.             if (temp[0]=='Scripts' && nbt.getList(temp[0],temp[2]).length!==0) {
  1182.                 playerID.message(text+i+' §a'+temp[0]+'§e(§a'+temp[2]+'§e)§7:§e{§7('+dLg.crt[201]+')§e}');
  1183.             } else {
  1184.                 listTAG(nbt.getList(temp[0],temp[2]), temp[2]);
  1185.                 playerID.message(text+i+' §a'+temp[0]+'§e(§a'+temp[2]+'§e)§7:§e{§r\n'+log+'\n§e}');
  1186.             }
  1187.         } else if (temp[1] == 10) {
  1188.             log='';
  1189.             space=1;
  1190.             temp[2] = nbt.getCompound(temp[0]);
  1191.             compoundTAG(temp[2]);
  1192.             playerID.message(text+i+' §d'+temp[0]+'§7:§e{\n'+log+'\n§e}');
  1193.         } else if (temp[1] == 11) {
  1194.             playerID.message(text+i+' §1'+temp[0]+'§7:§e"§r'+nbt.getIntegerArray(temp[0])+'§e"');
  1195.         }
  1196.     }
  1197. }
  1198. function listTAG(nbt,type) { // функция разбирает тег типа list
  1199.     var temp=[0,0,0,0];
  1200.     if (type == 10) { // для nbt
  1201.         for (var i=0;i<nbt.length;i++) {
  1202.             for (var h=0; h<space; h++) {log=log+' '}
  1203.             log=log+'§7[';
  1204.             for (var j=0;j<nbt[i].getKeys().length;j++) {
  1205.                 temp[0]=nbt[i].getKeys()[j]; // имя тега
  1206.                 temp[1]=nbt[i].getType(temp[0]); // тип тега
  1207.                 if (temp[1]==1) {
  1208.                     log=log+'§b'+temp[0]+'§7:§r'+nbt[i].getByte(temp[0]);
  1209.                 } else if (temp[1]==2) {
  1210.                     log=log+'§6'+temp[0]+'§7:§r'+nbt[i].getShort(temp[0]);
  1211.                 } else if (temp[1]==3) {
  1212.                     log=log+'§3'+temp[0]+'§7:§r'+nbt[i].getInteger(temp[0]);
  1213.                 } else if (temp[1]==4) {
  1214.                     log=log+'§2'+temp[0]+'§7:§r'+nbt[i].getLong(temp[0]);
  1215.                 } else if (temp[1]==5) {
  1216.                     log=log+'§5'+temp[0]+'§7:§r'+nbt[i].getFloat(temp[0]);
  1217.                 } else if (temp[1]==6) {
  1218.                     log=log+'§6'+temp[0]+'§7:§r'+nbt[i].getDouble(temp[0]);
  1219.                 } else if (temp[1]==7) {
  1220.                     log=log+'§7'+temp[0]+'§7:§7[§r'+nbt[i].getShortArray(temp[0])+'§7]';
  1221.                 } else if (temp[1]==8) {
  1222.                     log=log+'§c'+temp[0]+'§7:§7"§r'+nbt[i].getString(temp[0])+'§7"';
  1223.                 } else if (temp[1]==11) {
  1224.                     log=log+'§1'+temp[0]+'§7:§7[§r'+nbt[i].getIntegerArray(temp[0])+'§7]';
  1225.                 }
  1226.                 if (i!==nbt[i].getKeys().length-1) {log=log+'§7,'}
  1227.             }
  1228.             if (i!==nbt.length-1) {log=log+'§7],\n'} else {log=log+'§7]'}
  1229.         }
  1230.     } else { // остальные
  1231.         for (var i=0; i<nbt.length;i++) {
  1232.             for (var h=0; h<space; h++) {log=log+' '}
  1233.             if (i!==(nbt.length-1)) {log=log+'§7"§r'+nbt[i]+'§7",\n'} else {log=log+'§7"§r'+nbt[i]+'§7"'}
  1234.         }
  1235.     }
  1236.     space--;
  1237. }
  1238. function compoundTAG(nbt) { // функция разбирает объект nbt на теги
  1239.     var temp=[0,0,0,0];
  1240.     for (var i = 0; i < nbt.getKeys().length; i++) {
  1241.         for (var h=0; h<space; h++) {log=log+' '}
  1242.         temp[0]=nbt.getKeys()[i]; // имя тега
  1243.         temp[1]=nbt.getType(temp[0]); // тип тега
  1244.         if (temp[1]==1) {
  1245.             log=log+'§b'+temp[0]+'§7:§r'+nbt.getByte(temp[0]);
  1246.         } else if (temp[1]==2) {
  1247.             log=log+'§6'+temp[0]+'§7:§r'+nbt.getShort(temp[0]);
  1248.         } else if (temp[1]==3) {
  1249.             log=log+'§3'+temp[0]+'§7:§r'+nbt.getInteger(temp[0]);
  1250.         } else if (temp[1]==4) {
  1251.             log=log+'§2'+temp[0]+'§7:§r'+nbt.getLong(temp[0]);
  1252.         } else if (temp[1]==5) {
  1253.             log=log+'§5'+temp[0]+'§7:§r'+nbt.getFloat(temp[0]);
  1254.         } else if (temp[1]==6) {
  1255.             log=log+'§6'+temp[0]+'§7:§r'+nbt.getDouble(temp[0]);
  1256.         } else if (temp[1]==7) {
  1257.             log=log+'§7'+temp[0]+'§7:§7[§r'+nbt.getShortArray(temp[0])+'§7]';
  1258.         } else if (temp[1]==8) {
  1259.             log=log+'§c'+temp[0]+'§7:§7"§r'+nbt.getString(temp[0])+'§7"';
  1260.         }  else if (temp[1]==9) {
  1261.             temp[2] = nbt.getListType(temp[0]);
  1262.             if (temp[0]=='Scripts' && nbt.getList(temp[0],temp[2]).length!==0) {
  1263.                 log=log+'§a'+temp[0]+'§7(§a'+temp[2]+'§7):{('+dLg.crt[201]+')}';
  1264.             } else {
  1265.                 log=log+'§a'+temp[0]+'§7(§a'+temp[2]+'§7):§8{§r\n';
  1266.                 listTAG(nbt.getList(temp[0],temp[2]), temp[2]);
  1267.                 log=log+'\n'
  1268.                 for (var h=0; h<space; h++) {log=log+' '}
  1269.                 log=log+'§8}'
  1270.                 space++;
  1271.             }
  1272.         } else if (temp[1]==10) {
  1273.             space++;
  1274.             log=log+'§d'+temp[0]+'§7:§e{§r\n'
  1275.             temp[2] = nbt.getCompound(temp[0]);
  1276.             compoundTAG(temp[2]);
  1277.             log=log+'\n'
  1278.             for (var h=0; h<space; h++) {log=log+' '}
  1279.             log=log+'§e}'
  1280.         } else if (temp[1]==11) {
  1281.             log=log+'§1'+temp[0]+'§7:[§r'+nbt.getIntegerArray(temp[0])+'§7]'
  1282.         }
  1283.         if (i!==(nbt.getKeys().length-1)) {log=log+'§7,\n'}
  1284.     }
  1285.     space--;
  1286. }
  1287. function errUUID(playerID,text) { // функция проверки и вывода ошибок ввода uuid
  1288.     var temp=[[[0,0,7],[1,9,12],[2,14,17],[3,19,22],[4,24,35]],0];
  1289.     if (text.length!==36) {playerID.message(dLg.crt[202]+text.length+'§c.')} // общее число символов
  1290.     if (text.charCodeAt(8)!==45) { // положение дефисов
  1291.         playerID.message('§c'+dLg.abt[36]+' №§f8 §c'+dLg.crt[203]+' "-", '+dLg.crt[204]+': "§f'+text.charAt(8)+'§c"; unicode: "§8'+text.charCodeAt(8)+'§c".');
  1292.     } else if (text.charCodeAt(13)!==45) {
  1293.         playerID.message('§c'+dLg.abt[36]+' №§f13 §c'+dLg.crt[203]+' "-", '+dLg.crt[204]+': "§f'+text.charAt(8)+'§c"; unicode: "§8'+text.charCodeAt(8)+'§c".');
  1294.     } else if (text.charCodeAt(18)!==45) {
  1295.         playerID.message('§c'+dLg.abt[36]+' №§f18 §c'+dLg.crt[203]+' "-", '+dLg.crt[204]+': "§f'+text.charAt(8)+'§c"; unicode: "§8'+text.charCodeAt(8)+'§c".');
  1296.     } else if (text.charCodeAt(23)!==45) {
  1297.         playerID.message('§c'+dLg.abt[36]+' №§f23 §c'+dLg.crt[203]+' "-", '+dLg.crt[204]+': "§f'+text.charAt(8)+'§c"; unicode: "§8'+text.charCodeAt(8)+'§c".');
  1298.     }
  1299.     for (var i=0; i<5; i++) { // символовы/цыфры не из 16ой системы
  1300.         for (var j=temp[0][i][1]; j<=temp[0][i][2]; j++) {
  1301.             temp[1]=0;
  1302.             if (text.charCodeAt(j)==45 || !Number(text.charAt(j)+1)) {
  1303.                 for (var k=97; k<=102; k++) {
  1304.                     if (text.charCodeAt(j) == k) {
  1305.                         temp[1]=1;
  1306.                         break;
  1307.                     }
  1308.                 }
  1309.                 if (temp[1]==0) {playerID.message('§c'+dLg.abt[37]+' №§f'+temp[0][i][0]+'§c, '+dLg.abt[36]+' №§2'+j+' §c: §b'+text.charAt(j)+dLg.crt[205])}
  1310.             }
  1311.         }
  1312.     }
  1313. }
  1314. function effect(event, playerID, command, particle) { // функция вызова команд от игрока с сохранением, + спавн эффектов в мир
  1315.     var comList = JSON.parse(playerID.world.getStoreddata().get("comlist")), temp; // получить логи - список команд
  1316.     if (comList == null || comList == undefined) {comList = []} // создать если пуст
  1317.     if (command !== undefined && command !== null && command !== 0) { // выполнение общих команд
  1318.         if ((typeof command) == "string") { // если одна команда
  1319.             if (playerID.getGamemode() == 1) {playerID.message(dLg.crt[206]+command)}
  1320.             event.API.executeCommand(playerID.world,command);
  1321.             temp = {type:true, name:playerID.getName(), com:command, world:playerID.world.getDimension().getName(), x:playerID.getBlockX(), y:playerID.getBlockY(), z:playerID.getBlockZ(), tab:'creative'};
  1322.             if (comList.length >= 0 && comList.length < 31) { // Сохранение команды для отладки (мах 30)
  1323.                 comList.push(temp); // Добавить команду в список.
  1324.             } else {
  1325.                 var del = comList.shift(); // удалить крайнюю команду в массиве
  1326.                 comList.push(temp);
  1327.             }
  1328.         } else { // если серия команд
  1329.             if (playerID.getGamemode() == 1) {playerID.message(dLg.crt[206]+command[0])}
  1330.             for (var i=0; i < command.length; i++) {event.API.executeCommand(playerID.world,command[i])}
  1331.             temp = {type:false, name:playerID.getName(), com:command[0], world:playerID.world.getDimension().getName() , x:playerID.getBlockX() , y:playerID.getBlockY() , z:playerID.getBlockZ(), tab:'creative'};
  1332.             if (comList.length >= 0 && comList.length < 31) { // Сохранение 1й команды из серии для отладки (мах 30)
  1333.                 comList.push();
  1334.             } else {
  1335.                 var del = comList.shift();
  1336.                 comList.push(temp);
  1337.             }
  1338.         }
  1339.         playerID.world.getStoreddata().put("comlist", JSON.stringify(comList)); // сохранить список команд
  1340.     }
  1341.     if (particle !== undefined && particle !== null && particle !== 0) { // выполнение частиц (те же команды, но без сохранения в короткие логи)
  1342.         if ((typeof particle) == "string") { // если одна команда частиц
  1343.             event.API.executeCommand(playerID.world,particle);
  1344.         } else { // если серия команд частиц
  1345.             for (var i=0; i < particle.length; i++) {
  1346.                 event.API.executeCommand(playerID.world,particle[i]);
  1347.             }
  1348.         }
  1349.     }
  1350. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement