Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Код инструментов для креативных игроков. Его необходимо сохранить в файл на вашей карте по пути:
- \%appdata%\.minecraft\saves\<ваша карта>\customnpcs\scripts\ecmascript\player_creative_tools_v1.4.js
- после чего подключить в игре на игрока.
- **Any information received by the code can be seen in two languages. Depends on the language of the command sent.**
- **At the moment it is English and Russian.**
- Любую информацию, получаемую кодом, можно увидеть на 2х языках. Зависит от языка команды.
- На текущий момент это Английский и Русский.
- мод: CustomNPCs_1.12.204(mar19-snapshot).jar
- Возможности:
- 0 - Подсказка по пользованию инструментами ниже. Пишите в чат: <действие> <команда действия>, где:
- <действие> - помощь / help - вызов подсказки
- <команда действия> - имя любого действия из описания ниже. Если не указывать, то выдаст общую информацию о всех инструментах.
- I - Любой предмет брошеный игроком с креативным режимом - удаляется.
- II - Инструмент, помогающий быстро строить столбы, стены, полы т.д. Пишите в чат: <действие> <высота> <ширина> <глубина>, где:
- <действие> - можно выбрать:
- 1) замещать / substitute - (установка блока) заменяет все блоки в зоне, блоком из правой или левой руки игрока, ну или первой позиции инвентаря.;
- 2) заменять / replace - (ПКМ или ЛКМ на блок, правая рука должна быть пуста) заменяет все блоки в зоне, кроме воздуха, блоком из правой или левой руки игрока, ну или первой позиции инвентаря.;
- 3) заполнять / complete - (ПКМ или ЛКМ на блок, правая рука должна быть пуста) заменяет всесь воздух, блоком из правой или левой руки игрока, ну или первой позиции инвентаря.
- <высота> <ширина> <глубина> - это зона в виде высоты, ширины и глубины действия, с центром в блоке, с которым взаимодействует игрок.
- автоматически определяется в зависимоти от стороны, куда смотрик игрок.
- (если написать только действие без параметров, зона будет принята как 3х3х1)
- Пример: "замещать 5 5 2" - будет строить стену, пол, потолок размером 5х5 толщиной 2 блока от игрока, с центром установленного блока, в сторону куда смотрит игрок.
- "заменять" - будет заменять все блоки кроме воздуха в зоне 3х3 толщиной 1 блок, блоком из первой позиции игрока, с центром блока взаимодействия.
- III - Инструмент сохранения телепортации по миру. Пишите в чат: <действие> <позиция>
- <действие> - можно выбрать:
- 1) сохранить / savetp - сохранит ваше текущее месторасположение в этим мире в объект <позиция>, если позицию не указать, перезапишет позицию "Назад";
- 2) вернуться / nowtp - телепортирует вас в ранее сохранённое <позиция>, если позицию не указать, телепортирует в позицию "Назад";
- 3) удалить / deletetp - удалит ранее сохранённую <позицию>, если позицию не указать - удалит всё кроме дома и назад.;
- 4) мои позиции / my positions - выдаст в чат все ваши сохранённые позиции.
- <позиция> - может быть как названием, так и порядковым номером. Не может быть числом при сохранении новой позиции!
- Учтите, что все названия инструмент сохраняет с маленькими индексами!
- IV - В любой момент вы можете посмотреть все настройки предмета в вашей правой или левой руке.
- Возмите предмет в руку и пишите в чат: "предмет" / "item"
- IIV - В любой момент вы можете посмотреть все настройки блока. Для этого пишите в чат: <действие> <x> <y> <z>, где:
- <действие> - блок / block - вызов команды
- <x> <y> <z> - координаты блока. Можно не указывать, тогда будет выбран блок под игроком.
- VI - В любой момент вы можете посмотреть все настройки любого существа. Для этого пишите в чат: <действие> <uuid>, или <действие> <имя>, или <действие> <тип>, или <действие> <x> <y> <z>, где:
- <действие> - существо / entity - вызов команды, если не указывать uuid, имя или координаты, будет искать первое существо в 12 блоках в сторону, куда смотрит игрок.
- <uuid> - числовой индефикатор UUID существа.
- <имя> - ищет ближайщее в 12 блоках от игрока существо с этим именем.
- <тип> - ищет ближайщее в 12 блоках от игрока существо указанного типа.
- <x> <y> <z> - координаты существа. (ищет ближайшее существо в радиусе 1го блока)
- Пример на собственные данные игрока: "существо я" или "entity my" - покажет ваши собственные данные.
- VII - В любой момент вы можете вызвать команду от мода, даже если вы на карте с запретом читов и командного блока. Для этого пишите в чат: <действие> /<команда>, где:
- <действие> - команда / command - вызов команды
- <команда> - сама команда
- Пример: "команда /time set 0" - выполниться, установит мировое время дня на "0".
- VIII - Чтобы увидеть, какие последние 30 команд были вызваны игроками пишите в чат "список" или "list". Своего рода мини логи.
- IX - В любой момент вы можете скопировать предмет в руке игрока. Для этого держите его в руке, и пишите в чат: <действие> <кратность>, где:
- <действие> - копия / copy - вызов команды
- <кратность> - сколько раз скопируется.
- Пример: в руке 2 железных слитка, вы вводите "копия 3" - будет (2^3) 16 железных слитков
- X - В любой момент вы можете посмотреть общие данные всех существ вокруге. Для этого пишите в чат: <действие> <радиус> <x> <y> <z>
- <действие> - ууид / uuid - вызов команды, если радиус не указать, то покажет всех существ в радиусе 10 блоках, если не указывать координаты, примет вашу позицию за центр.
- <радиус> - собственно, радиус сканирования с центром от вас. (можно не указыать)
- <x> <y> <z> - координаты места поиска. (можно не указыать)
- XI - Вы можете сканировать территорию на предмет поиска существ, если кто-то появится в зоне, инструмент вам об этом сообщит. Для этого пишите в чат: <действие> <радиус> <x> <y> <z> <секунды>
- <действие> - зона / zone - вызов команды, если радиус не указать, то покажет всех существ в радиусе 3 блоках, если не указывать координаты, примет вашу позицию за центр.
- - повторный вызов команды отключит сканирование зоны.
- <секунды> - как часто сканировать зону, после нахождения существ (по-умолчанию 3 секунды, можно не указыать)
- <радиус> - собственно, радиус сканирования с центром от вас. (можно не указыать)
- <x> <y> <z> - координаты места поиска. (можно не указыать)
- XII - В любой момент вы можете изменить свой игровой режим (если конечно у вас на это будет право). Для этого пишите в чат: "режим" или "mode"
- XIII - Такие инструменты как "Предмет", "Блок" и "Существо" сохраняют теги в постоянную память. Посмотреть их можно слеюдующим образом:
- 1 - файл лежит по пути \%appdata%\.minecraft\saves\<ваша карта>\customnpcs\scripts\world_data.json
- можно вручную поглядеть его или ...
- 2 - написать в чат: <действие> <имя переменной> <тип>, где:
- <действие> - дата / data - вызов команды
- <имя переменной> - имя переменной:
- temp_item_mine - Minecraft теги предмета
- temp_item_cust - CustomNPCs теги предмета
- temp_block - теги блока
- temp_entity_mine - Minecraft теги существа
- temp_entity_cust - CustomNPCs теги существа
- entity_around - список существ в зоне
- <тип> - "0" текст выдаст как строку, "1" - как список тегов. По-умолчанию 0
- */
- // переменные ниже можно оставить как есть:
- var playerID,log,space=0,buildType=0,bh,bw,bd,zone=false,secZone,sr,sx,sy,sz,srh=false,fn,fr,dLg;
- function login(event) {
- playerID = event.player;
- var name = playerID.getName(), dPlArr = eval('JSON.parse(playerID.world.getStoreddata().get("data_'+name.toLowerCase()+'"))');
- if (!dPlArr) {dLg = playerID.world.getTempdata().get("lang_en")}
- if (dLg!==eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")') && dPlArr) {dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")')}
- }
- function attack(event) {
- playerID = event.player;
- if (playerID.getGamemode()==1 && buildType) {
- var x,y,z,blockID;
- if (playerID.rayTraceBlock(8,false,false)==null || playerID.rayTraceBlock(8,false,false).getBlock().getName()=='minecraft:air') {return}
- if (playerID.getMainhandItem().isBlock()) {
- blockID=playerID.getMainhandItem();
- } else {
- if (playerID.getInventory().getSlot(0).isBlock()) {
- blockID=playerID.getInventory().getSlot(0);
- } else {return}
- }
- x=playerID.rayTraceBlock(8,false,false).getPos().getX();
- y=playerID.rayTraceBlock(8,false,false).getPos().getY();
- z=playerID.rayTraceBlock(8,false,false).getPos().getZ();
- build(playerID,x,y,z,buildType,blockID);
- event.setCanceled(true);
- }
- }
- function interact(event) {
- playerID = event.player;
- if (playerID.getGamemode() == 1) {playerID.timers.forceStart(200,1,false)}
- if (buildType>=2) {event.setCanceled(true)}
- }
- function chat(event) {
- playerID = event.player;
- var name = playerID.getName(), dPlArr = eval('JSON.parse(playerID.world.getStoreddata().get("data_'+name.toLowerCase()+'"))');
- var text = event.message.toLowerCase(); // убрать верхние символы
- if (text.indexOf("режим")==0 || text.indexOf("mode")==0) { // смена игрового режима
- event.setCanceled(true);
- if (text.indexOf("mode")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- if (playerID.hasFinishedQuest(35) || playerID.getName() == "BetaZavr") { // условия для возможности менять игровой режим
- if (text.indexOf("mode")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- if (dLg!==eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")') && dPlArr) {dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")')}
- temp = text.split(' ');
- if (temp.length > 1) {
- if (!Number(temp[1]) || Number(temp[1])<0 || Number(temp[1])>=3) {temp=(-1)} else {temp=Math.round(Number(temp[1]))}
- } else {
- temp=(-1);
- }
- if (temp==(-1)) {
- if (playerID.getGamemode() == 1) {
- if (!playerID.hasFinishedQuest(35)) {
- playerID.setGamemode(0);
- } else {
- playerID.setGamemode(2);
- }
- } else {
- playerID.setGamemode(1);
- }
- } else {
- if (playerID.getGamemode() !== temp) {
- playerID.setGamemode(temp);
- }
- }
- if (playerID.getGamemode() == 0) {temp = dLg.crt[1]} else if (playerID.getGamemode() == 1) {temp = dLg.crt[2]} else {temp = dLg.crt[3]}
- playerID.message(dLg.crt[0]+temp);
- }
- }
- if (playerID.getGamemode() == 1) { // если креатив
- var name = playerID.getName(), money = 0, temp_0, temp, entityArr; // переменные на игрока
- var posPl,posH,posSt,xPl=playerID.getPos().getX(),yPl=playerID.getPos().getY(),zPl=playerID.getPos().getZ(),rPl=Math.floor(playerID.getRotation()*10)/10,site; // переменные позиции игрока
- var com,x,y,z,r,n,world = playerID.world.getDimension().getName(),entityArr;
- if (text=="предмет" || text=="item") { // информация о предмете в руке
- event.setCanceled(true);
- if (text.indexOf("item")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- infoItem(playerID);
- }
- if (text.indexOf("поиск")==0 || text.indexOf("search")==0) { // информация о предмете в руке
- event.setCanceled(true);
- if (text.indexOf("search")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- temp = text.split(' ');
- if (temp.length == 2) {
- fn = temp[1];
- fr = 24;
- } else if (temp.length==3) {
- fn = temp[1];
- fr = temp[2].replace(',','.');
- } else {
- playerID.message(dLg.crt[215]);
- return;
- }
- if (!Number(fr)) {playerID.message('§c'+dLg.crt[92]+': §r'+sr+dLg.crt[91]); return}
- fr = Math.round(Number(temp[2]));
- srh=true;
- playerID.message(dLg.crt[218]+fn);
- searchEntity(event);
- playerID.timers.start(202,100,true);
- }
- if (text.indexOf("блок")==0 || text.indexOf("block")==0) { // информация о блоке под игроком или в мире
- event.setCanceled(true);
- if (text.indexOf("block")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- temp = text.split(' ');
- if (temp.length == 1) {
- x = playerID.getBlockX();
- y = playerID.getY()-0.9;
- z = playerID.getBlockZ();
- } else if (temp.length == 4) {
- x = temp[1].replace(',','.'), y = temp[2].replace(',','.'), z = temp[3].replace(',','.');
- } else {
- playerID.message(dLg.crt[83]);
- return;
- }
- if (!Number(x)&&x!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+x+dLg.crt[91]); return}
- if (!Number(y)&&y!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+y+dLg.crt[91]); return}
- if (!Number(z)&&z!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+z+dLg.crt[91]); return}
- infoBlock(playerID, Math.round(Number(x)), Math.round(Number(y)), Math.round(Number(z)));
- }
- if (text.indexOf("ууид")== 0 || text.indexOf("uuid")== 0) { // краткая информация о всех существах вокруг
- event.setCanceled(true);
- if (text.indexOf("uuid")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- temp = text.split(' ');
- if (temp.length == 1) {
- r = 10;
- x = playerID.getBlockX();
- y = playerID.getBlockY();
- z = playerID.getBlockZ();
- } else if (temp.length==2) {
- r = temp[1].replace(',','.');
- x = playerID.getBlockX();
- y = playerID.getBlockY();
- z = playerID.getBlockZ();
- } else if (temp.length==4) {
- r = 10;
- x = playerID.getBlockX();
- y = playerID.getBlockY();
- z = playerID.getBlockZ();
- } else if (temp.length==5) {
- r = temp[1].replace(',','.');
- x = temp[2].replace(',','.');
- y = temp[3].replace(',','.');
- z = temp[4].replace(',','.');
- } else {
- playerID.message(dLg.crt[208]);
- return;
- }
- if (!Number(r)&&r!==0) {playerID.message('§c'+dLg.crt[92]+': §r'+r+dLg.crt[91]); return}
- if (!Number(x)&&x!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+x+dLg.crt[91]); return}
- if (!Number(y)&&y!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+y+dLg.crt[91]); return}
- if (!Number(z)&&z!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+z+dLg.crt[91]); return}
- vastEntity(playerID, Math.round(Number(r)), Math.round(Number(x)), Math.round(Number(y)), Math.round(Number(z)));
- }
- if (text.indexOf("зона") == 0 || text.indexOf("zone")== 0) { // краткая информация о всех существах вокруг с таймером
- event.setCanceled(true);
- if (text.indexOf("zone")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- temp = text.split(' ');
- if (temp.length == 1) {
- sr=10;
- sx = playerID.getBlockX();
- sy = playerID.getBlockY();
- sz = playerID.getBlockZ();
- secZone=3;
- } else if (temp.length==2) {
- sr=temp[1];
- sx = playerID.getBlockX();
- sy = playerID.getBlockY();
- sz = playerID.getBlockZ();
- secZone=3;
- } else if (temp.length==3) {
- sr=temp[1].replace(',','.');
- sx = playerID.getBlockX();
- sy = playerID.getBlockY();
- sz = playerID.getBlockZ();
- secZone=temp[2].replace(',','.');
- } else if (temp.length==4) {
- sr=10;
- sx = playerID.getBlockX();
- sy = playerID.getBlockY();
- sz = playerID.getBlockZ();
- secZone=3;
- } else if (temp.length==5) {
- sr=temp[1].replace(',','.');
- sx = temp[2].replace(',','.');
- sy = temp[3].replace(',','.');
- sz = temp[4].replace(',','.');
- secZone=3;
- } else if (temp.length==6) {
- sr=temp[1].replace(',','.');
- sx = temp[2].replace(',','.');
- sy = temp[3].replace(',','.');
- sz = temp[4].replace(',','.');
- secZone=temp[5].replace(',','.');
- } else {
- playerID.message(dLg.crt[209]);
- return;
- }
- if (!Number(sr)&&sr!==0) {playerID.message('§c'+dLg.crt[92]+': §r'+sr+dLg.crt[91]); return}
- if (!Number(sx)&&sx!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+sx+dLg.crt[91]); return}
- if (!Number(sy)&&sy!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+sy+dLg.crt[91]); return}
- if (!Number(sz)&&sz!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+sz+dLg.crt[91]); return}
- if (!Number(secZone)) {playerID.message('§c'+dLg.crt[93]+': §r'+secZone+dLg.crt[91]); return}
- if (zone) {
- zone=false;
- playerID.message(dLg.crt[84]);
- } else {
- zone=true;
- 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]+'.');
- secZone = Math.round(Number(secZone));
- vastEntity(playerID, Math.round(Number(sr)), Math.round(Number(sx)), Math.round(Number(sy)), Math.round(Number(sz)));
- }
- }
- if (text.indexOf("существо") == 0 || text.indexOf("entity") == 0 ) {// информация о выбранном существе
- event.setCanceled(true);
- if (text.indexOf("entity")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- temp = text.split(' ');
- if (temp.length==1) { // самоопределение
- entityArr = playerID.rayTraceEntities(12.0,false,true);
- if (entityArr.length !== 0) {
- infoEntity(playerID, entityArr[0].getUUID());
- } else {
- infoEntity(playerID, playerID.getUUID());
- }
- } else if (temp.length==2) { // по uuid или имени
- if (temp[1].length>=30) { // uuid
- try {
- playerID.world.getEntity(temp[1]);
- infoEntity(playerID, temp[1]);
- } catch (err) {
- playerID.message(dLg.crt[86]+temp[1]+dLg.crt[87]);
- errUUID(playerID,temp[1]); // разбирает классические ошибки ввода uuid
- }
- } else if (temp[1]=='я' || temp[1]=='my') { // свои данные
- infoEntity(playerID, playerID.getUUID());
- } else if (Number(temp[1])<10) {
- if (Number(temp[1])==1) {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_PLAYER);
- temp='PLAYER';
- } else if (Number(temp[1])==2) {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_NPC);
- temp='NPC';
- } else if (Number(temp[1])==3) {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_MONSTER);
- temp='MONSTER';
- } else if (Number(temp[1])==4) {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_ANIMAL);
- temp='ANIMAL';
- } else if (Number(temp[1])==5) {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_LIVING);
- temp='LIVING';
- } else if (Number(temp[1])==6) {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_ITEM);
- temp='ITEM';
- } else if (Number(temp[1])==7) {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,EntityType_PROJECTILE);
- temp='PROJECTILE';
- } else {
- temp='ANY';
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,0);
- }
- if (entityArr.length==1 && temp==EntityType_PLAYER) {
- playerID.message(dLg.crt[88]);
- } else {
- if (entityArr.length>0) {
- if (entityArr.length==1 && temp=='PLAYER') {
- playerID.message(dLg.crt[88]);
- return;
- } else {
- if (temp=='PLAYER') {
- infoEntity(playerID, entityArr[1].getUUID());
- } else {
- infoEntity(playerID, entityArr[0].getUUID());
- }
- }
- return;
- }
- playerID.message(dLg.crt[89]+temp+'§c"!');
- }
- } else {
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,0);
- if (entityArr.length==1) {
- playerID.message(dLg.crt[94]+temp[1]+'§c"!');
- } else {
- for (var i=0;i<entityArr.length;i++) {
- if (entityArr[i].getMCEntity().func_70005_c_().toLowerCase()==temp[1]) {
- infoEntity(playerID, entityArr[i].getUUID());
- return;
- }
- }
- playerID.message(dLg.crt[94]+temp[1]+'§c"!');
- }
- }
- } else if (temp.length==3) { // по имени из двух слов
- temp=temp[1]+' '+temp[2];
- entityArr = playerID.world.getNearbyEntities(playerID.getPos(),12,0);
- if (entityArr.length==1) {
- playerID.message(dLg.crt[89]+temp+'§c"!');
- } else {
- for (var i=0;i<entityArr.length;i++) {
- if (entityArr[i].getMCEntity().func_70005_c_().toLowerCase()==temp) {
- infoEntity(playerID, entityArr[i].getUUID());
- return;
- }
- }
- playerID.message(dLg.crt[89]+temp+'§c"!');
- }
- } else if (temp.length==4) { // по координатам
- x=temp[1], y=temp[2], z=temp[3];
- if (!Number(x)&&x!==0) {playerID.message('§cX '+dLg.crt[90]+': §r'+x+dLg.crt[91]); return}
- if (!Number(y)&&y!==0) {playerID.message('§cY '+dLg.crt[90]+': §r'+y+dLg.crt[91]); return}
- if (!Number(z)&&z!==0) {playerID.message('§cZ '+dLg.crt[90]+': §r'+z+dLg.crt[91]); return}
- entityArr = playerID.world.getClosestEntity(playerID.world.getBlock(x,y,z).getPos(),1,0);
- if (entityArr) {
- infoEntity(playerID, entityArr.getUUID());
- } else {playerID.message(dLg.crt[95]+x+'§c:§f'+y+'§c:§f'+z+dLg.crt[96])}
- } else {playerID.message(dLg.crt[97])}
- }
- 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") { // телепортации
- event.setCanceled(true);
- 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'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- var player_tp_Array = JSON.parse(playerID.world.getStoreddata().get("player_tp_data")), home, back; // все телепортации хранятся в этой переменной "player_tp_data"
- home=dLg.crt[99];
- back=dLg.crt[100];
- if (player_tp_Array !== null) { // если массив не пуст
- for (var i = 0; i < player_tp_Array.length; i++) { // длина массива
- if (player_tp_Array[i].name == name) { // поиск в массиве текущего игрока
- posPl = i;
- break;
- }
- }
- } else { // если массива нет - создать
- 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}]}];
- posPl = 0;
- playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить массив данных в мире
- 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.');
- return;
- }
- if (posPl == undefined) { // если игрока в массиве нет - добавить
- 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}]});
- posPl = player_tp_Array.length;
- playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить массив данных в мире
- 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.');
- return;
- }
- if (text.indexOf("сохранить") == 0 || text.indexOf("savetp") == 0) { // для запоминания нового мета или перезаписи
- temp = text.split(' ');
- if (temp.length > 1) {site = temp[1]}
- if (text == "сохранить" || text == "сохранить назад" || text == "savetp" || text == "savetp back") {site = 0}
- if (text == "сохранить дом" || text == "savetp home") {site = 1}
- if (Number(site+1) && site < player_tp_Array[posPl].pos.length) { // если имя позиции - число, т.е. id и она есть у игрока
- posSt = site;
- } else if (!Number(site)) { // если имя не число
- for (var j = 0; j < player_tp_Array[posPl].pos.length; j++) {
- if (player_tp_Array[posPl].pos[j].site == site) {
- posSt = j;
- break;
- }
- }
- } else { // если имя - число, но у игрока тут нет.
- playerID.message(dLg.crt[103]+site+'§c!');
- return;
- }
- if (posSt !== undefined) {
- site=player_tp_Array[posPl].pos[posSt].site;
- player_tp_Array[posPl].pos[posSt].x = xPl;
- player_tp_Array[posPl].pos[posSt].y = yPl;
- player_tp_Array[posPl].pos[posSt].z = zPl;
- player_tp_Array[posPl].pos[posSt].r = rPl;
- player_tp_Array[posPl].pos[posSt].world = world;
- 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.');
- if (site == home) {
- playerID.setSpawnpoint(xPl,yPl,zPl);
- playerID.message(dLg.crt[105]);
- }
- } else {
- eval('player_tp_Array[posPl].pos.push({site:"'+site+'",world:"'+world+'",x:'+xPl+', y:'+yPl+', z:'+zPl+', r:'+rPl+'})');
- 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.');
- }
- playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить изменения
- return;
- }
- if (text.indexOf("вернуться") == 0 || text.indexOf("nowtp") == 0) { // для телепортации в позицию
- temp = text.split(' ');
- if (temp.length > 1) {site = temp[1]}
- if (text == "вернуться" || text == "вернуться назад" || text == "nowtp" || text == "nowtp back") {site = back}
- if (text == "вернуться дом" || text == "nowtp home") {site = 1}
- if (Number(site+1) && site < player_tp_Array[posPl].pos.length) {
- posSt = site;
- } else if (!Number(site)) {
- for (var j = 0; j < player_tp_Array[posPl].pos.length; j++) {
- if (player_tp_Array[posPl].pos[j].site == site) {
- posSt = j;
- break;
- }
- }
- } else {
- playerID.message(dLg.crt[107]);
- return;
- }
- if (posSt !== undefined) {
- site=player_tp_Array[posPl].pos[posSt].site;
- if (player_tp_Array[posPl].pos[posSt].world !== world) { // если позиция в другом мире
- playerID.message('§c'+dLg.crt[101]+': "§b'+site+dLg.crt[108]+player_tp_Array[posPl].pos[posSt].world+dLg.crt[109]);
- return;
- }
- if (player_tp_Array[posPl].pos[posSt].site !== back) { // перезаписать позицию Назад
- player_tp_Array[posPl].pos[0] = {'site':back,'world':world,'x':xPl,'y':yPl,'z':zPl,'r':rPl};
- 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.');
- }
- x = player_tp_Array[posPl].pos[posSt].x;
- y = player_tp_Array[posPl].pos[posSt].y;
- z = player_tp_Array[posPl].pos[posSt].z;
- r = player_tp_Array[posPl].pos[posSt].r;
- effect(event, playerID, 0, '/particle cloud '+xPl+' '+(yPl+0.75)+' '+zPl+' 0.3 0.3 0.3 0.00001 15');
- } else {
- playerID.message('§c'+dLg.crt[110]+': §f'+site+'§c!');
- return;
- }
- 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.');
- playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить изменения
- 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');
- return;
- }
- if (text.indexOf("удалить") == 0 || text.indexOf("deletetp") == 0) { // для удаления позиций
- temp = text.split(' ');
- if (temp.length > 1) {site = temp[1]}
- if (text == "удалить" || text == "deletetp") {site = (-1)}
- if (temp[1] == "0" || temp[1] == "1" || temp[1] == home.toLowerCase() || temp[1] == back.toLowerCase()) {
- playerID.message('§c'+dLg.crt[112]+'!');
- return;
- }
- if (Number(site) && site < player_tp_Array[posPl].pos.length && site !== (-1)) {
- posSt = site;
- } else if (!Number(site)) {
- for (var j = 0; j < player_tp_Array[posPl].pos.length; j++) {
- if (player_tp_Array[posPl].pos[j].site == site) {
- posSt = j;
- break;
- }
- }
- } else if (site !== (-1)) {
- playerID.message(dLg.crt[113]+site+dLg.crt[114]);
- return;
- }
- if (posSt !== undefined) {
- if (posSt !== undefined) {
- site = player_tp_Array[posPl].pos[posSt].site;
- player_tp_Array[posPl].pos.splice(posSt, 1); // удалить указанное местоположение
- playerID.message('§6'+dLg.crt[115]+': "§b'+site+dLg.crt[116]);
- } else {
- playerID.message(dLg.crt[113]+site+dLg.crt[114]);
- return;
- }
- } else {
- if (site == (-1)) {
- player_tp_Array[posPl].pos.splice(2,player_tp_Array[posPl].pos.length); // удалить все местоположения кроме "Дом" и "Назад"
- 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"');
- } else {
- playerID.message(dLg.crt[113]+site+dLg.crt[114]);
- }
- }
- playerID.world.getStoreddata().put("player_tp_data", JSON.stringify(player_tp_Array)); // сохранить изменения
- return;
- }
- if (text == "мои позиции" || text == "my positions") { // для показа всех позиций игрока
- if (player_tp_Array.length !==0) {playerID.message(dLg.crt[118])}
- for (var j = 0; j < player_tp_Array[i].pos.length; j++) {
- site = player_tp_Array[i].pos[j].site;
- world = player_tp_Array[i].pos[j].world;
- xPl = player_tp_Array[i].pos[j].x;
- yPl = player_tp_Array[i].pos[j].y;
- zPl = player_tp_Array[i].pos[j].z;
- rPl = player_tp_Array[i].pos[j].r;
- 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.');
- }
- }
- }
- if (text.indexOf("команда /")==0 || text.indexOf("command /")==0) { // вызов команды с сохранением в короткие логи
- text = event.message;
- if (text.indexOf("command")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- text = text.substring(text.indexOf("/"));
- if (text.indexOf("~") !== (-1)) {
- for (var i=0;i<=2;i++) {
- temp=[0,0,0,0];
- if (i==0) {temp[0]=Math.round(xPl);
- } else if (i==1) {temp[0]=Math.round(yPl);
- } else {temp[0]=Math.round(zPl)}
- if (text.indexOf("~") !== (-1)) {
- temp[1]=text.indexOf("~");
- temp[2]=text.indexOf(" ",text.indexOf("~"));
- temp[3]=Number(text.slice(temp[1]+1,temp[2]));
- text=text.slice(0,temp[1])+(temp[0]+temp[3])+text.slice(temp[2]);
- }
- }
- }
- effect(event, playerID, text);
- event.setCanceled(true);
- }
- if (text.indexOf("замещать")==0 || text.indexOf("заменять")==0 || text.indexOf("заполнять")==0 || text.indexOf("substitute")==0 || text.indexOf("replace")==0 || text.indexOf("complete")==0) { // режимы строительства
- event.setCanceled(true);
- if (text.indexOf("substitute")==0 || text.indexOf("replace")==0 || text.indexOf("complete")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- if (text.indexOf("замещать")==0 || text.indexOf("substitute")==0) { // замещение всех блоков
- temp = text.split(' ');
- if (temp.length == 1) {
- bh=1,bw=1,bd=0;
- } else if (temp.length == 4) {
- bh = Math.round((Number(temp[1])-1)/2);
- bw = Math.round((Number(temp[2])-1)/2);
- bd = Math.round(Number(temp[3])-1);
- } else {
- playerID.message(dLg.crt[119]);
- return;
- }
- if (!Number(bh+1)) {playerID.message(dLg.crt[120]+': §r'+bh+dLg.crt[91]); return}
- if (!Number(bw+1)) {playerID.message(dLg.crt[121]+': §r'+bw+dLg.crt[91]); return}
- if (!Number(bd+1)) {playerID.message(dLg.crt[122]+': §r'+bd+dLg.crt[91]); return}
- if (buildType==1) {
- buildType=0;
- playerID.message(dLg.crt[123]+dLg.abt[23]);
- } else {
- if (buildType==0) {temp = dLg.abt[22]} else {temp = dLg.abt[24]}
- buildType=1;
- playerID.message(dLg.crt[124]+temp+'§8, '+dLg.abt[25]+' §2'+((bh*2)+1)+'§8x§2'+((bw*2)+1)+'§8x§2'+(bd+1));
- }
- }
- if (text.indexOf("заменять")==0 || text.indexOf("replace")==0) { // замена всех блоков кроме воздуха
- temp = text.split(' ');
- if (temp.length == 1) {
- bh=1,bw=1,bd=0;
- } else if (temp.length== 4) {
- bh = Math.round(Number(temp[1])/2);
- bw = Math.round(Number(temp[2])/2);
- bd = Math.round(Number(temp[3])-1);
- } else {
- playerID.message(dLg.crt[125]);
- return;
- }
- if (!Number(bh+1)) {playerID.message(dLg.crt[120]+': §r'+bh+dLg.crt[91]); return}
- if (!Number(bw+1)) {playerID.message(dLg.crt[121]+': §r'+bw+dLg.crt[91]); return}
- if (!Number(bd+1)) {playerID.message(dLg.crt[122]+': §r'+bd+dLg.crt[91]); return}
- if (buildType==2) {
- buildType=0;
- playerID.message(dLg.crt[126]+dLg.abt[23]);
- } else {
- if (buildType==0) {temp = dLg.abt[22]} else {temp = dLg.abt[24]}
- buildType=2;
- playerID.message(dLg.crt[126]+temp+'§8, '+dLg.abt[25]+' §2'+((bh*2)+1)+'§8x§2'+((bw*2)+1)+'§8x§2'+(bd+1));
- }
- }
- if (text.indexOf("заполнять")==0 || text.indexOf("complete")==0) { // замена только воздуха
- temp = text.split(' ');
- if (temp.length == 1) {
- bh=1,bw=1,bd=0;
- } else if (temp.length== 4) {
- bh = Math.round(Number(temp[1])/2);
- bw = Math.round(Number(temp[2])/2);
- bd = Math.round(Number(temp[3])-1);
- } else {
- playerID.message(dLg.crt[127]);
- return;
- }
- if (!Number(bh+1)) {playerID.message(dLg.crt[120]+': §r'+bh+dLg.crt[91]); return}
- if (!Number(bw+1)) {playerID.message(dLg.crt[121]+': §r'+bw+dLg.crt[91]); return}
- if (!Number(bd+1)) {playerID.message(dLg.crt[122]+': §r'+bd+dLg.crt[91]); return}
- if (buildType==3) {
- buildType=0;
- playerID.message(dLg.crt[128]+dLg.abt[23]);
- } else {
- if (buildType==0) {temp = dLg.abt[22]} else {temp = dLg.abt[24]}
- buildType=3;
- playerID.message(dLg.crt[128]+temp+'§8, '+dLg.abt[25]+' §2'+((bh*2)+1)+'§8x§2'+((bw*2)+1)+'§8x§2'+(bd+1));
- }
- }
- }
- if (text.indexOf("копия") == 0 || text.indexOf("copy")==0) { // копирование предмета в руке
- event.setCanceled(true);
- if (text.indexOf("copy")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- temp = text.split(' ');
- if (temp.length > 1) {
- if (!Number(temp[1])) {temp=[1,'']} else {temp=[Math.round(Number(temp[1])),'']}
- } else {
- temp=[1,''];
- }
- if (playerID.getMainhandItem().getName() !== 'minecraft:air') {
- temp[1]=playerID.getMainhandItem();
- } else if (playerID.getOffhandItem().getName() !== 'minecraft:air') {
- temp[1]=playerID.getOffhandItem();
- } else {
- playerID.message(dLg.crt[129]);
- return;
- }
- for (var i=1; i<=temp[0]; i++) {playerID.giveItem(playerID.getMainhandItem().copy())}
- playerID.message(dLg.crt[130]+temp[1].getDisplayName()+'§7, §2'+temp[0]+' §7'+dLg.abt[26]+'.');
- }
- if (text.indexOf("список") == 0 || text.indexOf("list")==0) { // выводит в чат логи из команд игроков
- event.setCanceled(true);
- if (text.indexOf("list")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- var comList = JSON.parse(playerID.world.getStoreddata().get("comlist"));
- playerID.message(dLg.crt[131]);
- if (comList !== undefined && comList !== null && comList !== 0) {
- temp=[0,0,0]
- for (var i=0; i<comList.length; i++) {
- if (comList[i].type) {temp[0]=dLg.crt[132]} else {temp[0]=dLg.crt[133]}
- 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);
- }
- } else {playerID.message(dLg.crt[134])}
- }
- if (text.indexOf("дата") == 0 || text.indexOf("data")==0) { // выводит в чат содержимое переменной в Storeddata
- event.setCanceled(true);
- if (text.indexOf("data")==0) {dPlArr.lang='en'} else {dPlArr.lang='ru'}
- dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")');
- temp = text.split(' ');
- if (Number(temp[1])==0) {
- temp[1]='temp_item_mine';
- } else if (Number(temp[1])==1) {
- temp[1]='temp_item_cust';
- } else if (Number(temp[1])==2) {
- temp[1]='temp_block';
- } else if (Number(temp[1])==3) {
- temp[1]='temp_entity_mine';
- } else if (Number(temp[1])==4) {
- temp[1]='temp_entity_cust';
- } else if (Number(temp[1])==5) {
- temp[1]='entity_around';
- }
- if (temp.length == 1) {
- playerID.message(dLg.crt[213]);
- if (playerID.world.getStoreddata().get('temp_item_mine')) {playerID.message(dLg.crt[212]+'§rid:§30 §7- §ftemp_item_mine')}
- if (playerID.world.getStoreddata().get('temp_item_cust')) {playerID.message(dLg.crt[212]+'§rid:§31 §7- §ftemp_item_cust')}
- if (playerID.world.getStoreddata().get('temp_block')) {playerID.message(dLg.crt[212]+'§rid:§32 §7- §ftemp_block')}
- if (playerID.world.getStoreddata().get('temp_entity_mine')) {playerID.message(dLg.crt[212]+'§rid:§33 §7- §ftemp_entity_mine')}
- if (playerID.world.getStoreddata().get('temp_entity_cust')) {playerID.message(dLg.crt[212]+'§rid:§34 §7- §ftemp_entity_cust')}
- if (playerID.world.getStoreddata().get('entity_around')) {playerID.message(dLg.crt[212]+'§rid:§35 §7- §fentity_around')}
- playerID.message(dLg.crt[214]);
- temp=[playerID.world.getStoreddata().getKeys(),0];
- for (var i=0;i<temp[0].length;i++) {
- if (temp[1]) {
- temp[1]=temp[0][i];
- } else {
- temp[1]=temp[1]+';\n'+temp[0][i];
- }
- }
- playerID.message(temp[1]);
- return;
- } else if (temp.length == 2 && playerID.world.getStoreddata().get(temp[1]) !== null) {
- com=[temp[1],0];
- } else if (temp.length == 3 && Number(temp[2]) && playerID.world.getStoreddata().get(temp[1]) !== null) {
- if (Number(temp[2]) !== 1 && Number(temp[2]) !== 2) {
- com=[temp[1],0];
- playerID.message(dLg.crt[135]+temp[2]+dLg.crt[136]);
- } else {com=[temp[1],temp[2]]}
- } else if (temp.length >1 && playerID.world.getStoreddata().get(temp[1]) == null) {
- playerID.message(dLg.crt[137]+temp[1]+dLg.crt[138]);
- temp=[playerID.world.getStoreddata().getKeys(),0];
- for (var i=0;i<temp[0].length;i++) {
- if (temp[1]) {
- temp[1]=temp[0][i];
- } else {
- temp[1]=temp[1]+';\n'+temp[0][i];
- }
- }
- playerID.message(temp[1]);
- return;
- } else {
- playerID.message(dLg.crt[139]+'\n'+dLg.crt[219]);
- temp=[playerID.world.getStoreddata().getKeys(),0];
- for (var i=0;i<temp[0].length;i++) {
- if (temp[1]) {
- temp[1]=temp[0][i];
- } else {
- temp[1]=temp[1]+';\n'+temp[0][i];
- }
- }
- playerID.message(temp[1]);
- return;
- }
- playerID.message('§4------------------------------------------------------------------------');
- temp=String(playerID.world.getStoreddata().get(com[0]));
- if (com[1]==1) {
- playerID.message(dLg.crt[137]+com[0]+dLg.crt[140]);
- try {
- playerID.message('-----------------');
- parseTAG(event.API.stringToNbt(temp),'D_');
- playerID.message('-----------------\n'+dLg.crt[141])
- } catch (err) {playerID.message('-----------------\n'+dLg.crt[142]+'\n'+dLg.crt[137]+com[0]+dLg.crt[143]+'\n§b'+temp)}
- } else {playerID.message(dLg.crt[137]+com[0]+dLg.crt[143]+'\n§b'+temp)}
- }
- }
- eval('playerID.world.getStoreddata().put("data_'+name.toLowerCase()+'", JSON.stringify(dPlArr))'); // сохранить базу в мире
- }
- function toss(event) { // отмена выбрасывания предметов для креатива - удаление
- playerID = event.player;
- if (playerID.getGamemode() == 1) {
- playerID.message(dLg.crt[144]+event.item.getDisplayName()+' §r'+event.item.getStackSize()+' §7'+dLg.abt[6]);
- event.setCanceled(true);
- }
- }
- function tick(event) {
- playerID = event.player;
- var name = playerID.getName();
- var dPlArr = eval('JSON.parse(playerID.world.getStoreddata().get("data_'+name.toLowerCase()+'"))'); // база данных игрока
- if (dLg!==eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")') && dPlArr) {dLg = eval('playerID.world.getTempdata().get("lang_'+dPlArr.lang+'")')}
- if (zone && !playerID.timers.has(201)) { // сканировать зону на предмет существ
- var entityArr = playerID.world.getNearbyEntities(sx, sy, sz, sr, 0);
- if (entityArr.length > 0) { // если существа есть
- playerID.message(dLg.crt[145]+sx+'§7:§f'+sy+'§7:§f'+sz+'§7, '+dLg.abt[15]+':§f'+sr+'§7 '+dLg.abt[29]+'.');
- vastEntity(playerID, sr, sx, sy, sz);
- playerID.message(dLg.crt[146]+secZone+'§7 '+dLg.abt[3]+'.');
- playerID.timers.forceStart(201,(secZone*20),false); // запуск задержки
- }
- }
- }
- function timer(event) {
- var x,y,z,blockID;
- if (event.id == 200) { // стройка
- if (buildType!==1) {
- if (playerID.getMainhandItem().isBlock() && playerID.getMainhandItem().getName()!=='minecraft:air') {
- blockID=playerID.getMainhandItem();
- } else if (playerID.getOffhandItem().isBlock() && playerID.getOffhandItem().getName()!=='minecraft:air') {
- blockID=playerID.getOffhandItem();
- } else if (playerID.getInventory().getSlot(0).isBlock() && playerID.getInventory().getSlot(0)!=='minecraft:air') {
- blockID=playerID.getInventory().getSlot(0);
- } else {return}
- } else {
- if (playerID.getMainhandItem().isBlock()) {
- blockID=playerID.getMainhandItem();
- } else if (playerID.getOffhandItem().isBlock()) {
- blockID=playerID.getOffhandItem();
- } else if (playerID.getInventory().getSlot(0).isBlock()) {
- blockID=playerID.getInventory().getSlot(0);
- } else {return}
- }
- if (playerID.rayTraceBlock(8,false,false) == null || playerID.rayTraceBlock(8,false,false).getBlock().getName()=='minecraft:air') {return}
- x=playerID.rayTraceBlock(8,false,false).getPos().getX();
- y=playerID.rayTraceBlock(8,false,false).getPos().getY();
- z=playerID.rayTraceBlock(8,false,false).getPos().getZ();
- build(playerID,x,y,z,buildType,blockID);
- }
- if (event.id == 202) { // поиск существ с именем
- if (srh && fn && fr) {
- searchEntity(event);
- playerID.message(dLg.crt[218]+fn);
- } else {
- playerID.timer.stop(202);
- }
- }
- }
- function build(playerID,x,y,z,type,blockID) { // функция работы строительных инструментов
- var cx, cy, cz, maxX, maxY, maxZ, minX, minY, minZ, rot, temp;
- if (playerID.getPitch()<-60) { // потолок
- maxX=x+bh, maxY=y+bd, maxZ=z+bw;
- minX=x-bh, minY=y, minZ=z-bw;
- } else if (playerID.getPitch()>60) { // пол
- maxX=x+bh, maxY=y, maxZ=z+bw;
- minX=x-bh, minY=y-bd, minZ=z-bw;
- } else { // стена
- if (playerID.getRotation()<0) {rot=360+playerID.getRotation()} else {rot=playerID.getRotation()}
- if (rot>=45&&rot<135) { // запад
- maxX=x, maxY=y+bw, maxZ=z+bh;
- minX=x-bd, minY=y-bw, minZ=z-bh;
- } else if (rot>=135&&rot<225) { // север
- maxX=x+bh, maxY=y+bw, maxZ=z;
- minX=x-bh, minY=y-bw, minZ=z-bd;
- } else if (rot>=225&&rot<315) { // восток
- maxX=x+bd, maxY=y+bw, maxZ=z+bh;
- minX=x, minY=y-bw, minZ=z-bh;
- } else { // юг
- maxX=x+bh, maxY=y+bw, maxZ=z+bd;
- minX=x-bh, minY=y-bw, minZ=z;
- }
- }
- cx=minX, cy=minY, cz=minZ;
- while (cy < maxY+1) {
- if (cy >= 2) {
- temp=playerID.world.getBlock(cx,cy,cz).getName();
- if (temp!=='customnpcs:npcscripted' && temp!=='customnpcs:npcscripteddoor' && temp!=='customnpcs:npcredstoneblock' && temp!=='customnpcs:npcborder' && temp!=='customnpcs:npcwaypoint') {
- if (type==1) { // замещать
- playerID.world.setBlock(cx,cy,cz,blockID.getName(),blockID.getItemDamage());
- } else if (type==2 && temp!=='minecraft:air') { // заменять
- playerID.world.setBlock(cx,cy,cz,blockID.getName(),blockID.getItemDamage());
- } else if (type==3 && temp=='minecraft:air') { // заполнять
- playerID.world.setBlock(cx,cy,cz,blockID.getName(),blockID.getItemDamage());
- }
- }
- }
- if (cx == maxX) {
- cx=minX;
- if (cz == maxZ) {
- cz = minZ;
- cy++;
- } else {cz++}
- } else {cx++}
- }
- }
- function infoItem(playerID) { // функция вывода информации о предмете
- var itemPlayer;
- playerID.message("§2--------------------------------------------------------------------------------");
- if (playerID.getMainhandItem().getName() !== 'minecraft:air') { // поиск предмета в правой руке
- itemPlayer = playerID.getMainhandItem();
- playerID.message(dLg.crt[147]+dLg.crt[148]+' §7:§r '+itemPlayer.getDisplayName());
- } else if (playerID.getOffhandItem().getName() !== 'minecraft:air') { // поиск предмета в левой руке
- itemPlayer = playerID.getOffhandItem();
- playerID.message(dLg.crt[147]+dLg.crt[149]+' §7:§r '+itemPlayer.getDisplayName());
- } else {
- playerID.message(dLg.crt[152]);
- return;
- }
- playerID.message('§7'+dLg.crt[150]+':');
- parseTAG(itemPlayer.getNbt(),"M_");
- if (String(itemPlayer.getNbt().getMCNBT()).length <= 440) {
- playerID.message('§7'+dLg.crt[150]+':');
- parseTAG(itemPlayer.getNbt(),"M_");
- playerID.message('§2'+dLg.crt[153]+':\n'+String(itemPlayer.getNbt().getMCNBT()));
- } else {playerID.message(dLg.crt[154])}
- playerID.world.getStoreddata().put("temp_item_mine", String(itemPlayer.getNbt().getMCNBT()));
- playerID.message('§7'+dLg.crt[150]+dLg.crt[155]+'temp_item_mine"§7.\n-----------------\n'+dLg.crt[156]);
- if (itemPlayer.getItemNbt().getKeys().length !== null) { // проверка на теги
- playerID.message("-----------------");
- playerID.message('§7'+dLg.crt[151]+':');
- parseTAG(itemPlayer.getItemNbt(),"C_");
- if (String(itemPlayer.getItemNbt().getMCNBT()).length <= 440) {
- playerID.message('§7'+dLg.crt[151]+':');
- parseTAG(itemPlayer.getItemNbt(),"C_");
- playerID.message('§2'+dLg.crt[153]+':\n'+String(itemPlayer.getItemNbt().getMCNBT()));
- } else {playerID.message(dLg.crt[154])}
- playerID.world.getStoreddata().put("temp_item_cust", String(itemPlayer.getItemNbt().getMCNBT()));
- playerID.message('§7'+dLg.crt[151]+dLg.crt[155]+'temp_item_cust"§7.\n-----------------\n'+dLg.crt[156]);
- }
- playerID.message("-----------------");
- if (itemPlayer.getType()==0) { // тип предмета
- playerID.message(dLg.abt[30]+': §2'+dLg.crt[157]);
- } else if (itemPlayer.getType()==1) {
- playerID.message(dLg.abt[30]+': §2'+dLg.crt[158]);
- } else if (itemPlayer.getType()==2) {
- playerID.message(dLg.abt[30]+': §2'+dLg.crt[159]);
- } else if (itemPlayer.getType()==3) {
- playerID.message(dLg.abt[30]+': §2'+dLg.crt[160]);
- } else if (itemPlayer.getType()==4) {
- playerID.message(dLg.abt[30]+': §2'+dLg.crt[161]);
- } else if (itemPlayer.getType()==5) {
- playerID.message(dLg.abt[30]+': §2'+dLg.crt[162]);
- } else if (itemPlayer.getType()==6) {
- playerID.message(dLg.abt[30]+': §2'+dLg.crt[163]);
- }
- if (itemPlayer.getName() == "minecraft:enchanted_book" || itemPlayer.isEnchanted()) { // проверка на зачарование
- playerID.message(dLg.crt[164]+':');
- var totalEnch, tag, temp=itemPlayer.getItemNbt().getCompound('tag');
- if (temp.has('ench')) {tag = 'ench'} else {tag = 'StoredEnchantments'}
- 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])}
- }
- playerID.message(dLg.crt[166]+'§6'+itemPlayer.getName());
- playerID.message(dLg.crt[167]+'§e'+itemPlayer.getDisplayName());
- playerID.message(dLg.crt[168]+'§c'+itemPlayer.getItemName());
- playerID.message(dLg.crt[169]+itemPlayer.getItemDamage()+' '+dLg.abt[31]+' '+itemPlayer.getMaxItemDamage()+' '+dLg.abt[32]+'. (metadata)');
- playerID.message(dLg.crt[170]+'§9'+itemPlayer.getStackSize()+' '+dLg.abt[31]+' '+itemPlayer.getMaxStackSize()+' '+dLg.abt[32]+'.');
- if (itemPlayer.getAttackDamage() != 0) {playerID.message(dLg.crt[171]+'§4'+itemPlayer.getAttackDamage())} // проверка на наносимый урон
- if (itemPlayer.getFoodLevel() != 0) {playerID.message(dLg.crt[172]+itemPlayer.getFoodLevel())} // проверка предмета на еду
- if (itemPlayer.getItemNbt().getCompound('tag').has('AttributeModifiers')) {
- playerID.message(dLg.crt[173]+':');
- if (itemPlayer.getAttribute("generic.maxHealth") > 0) {playerID.message(' §e'+dLg.crt[174]+' §f='+itemPlayer.getAttribute("generic.maxHealth"))}
- if (itemPlayer.getAttribute("generic.knockbackResistance") > 0) {playerID.message(' §e'+dLg.crt[175]+' §f='+itemPlayer.getAttribute("generic.knockbackResistance"))}
- if (itemPlayer.getAttribute("generic.movementSpeed") > 0) {playerID.message(' §e'+dLg.crt[176]+' §f='+itemPlayer.getAttribute("generic.movementSpeed"))}
- if (itemPlayer.getAttribute("generic.armor") > 0) {playerID.message(' §e'+dLg.crt[177]+' §f='+itemPlayer.getAttribute("generic.armor"))}
- if (itemPlayer.getAttribute("generic.armorToughness") > 0) {playerID.message(' §e'+dLg.crt[178]+' §f='+itemPlayer.getAttribute("generic.armorToughness"))}
- if (itemPlayer.getAttribute("generic.attackDamage") > 0) {playerID.message(' §e'+dLg.crt[179]+' §f='+itemPlayer.getAttribute("generic.attackDamage"))}
- if (itemPlayer.getAttribute("generic.attackSpeed") > 0) {playerID.message(' §e'+dLg.crt[180]+' §f='+itemPlayer.getAttribute("generic.attackSpeed"))}
- if (itemPlayer.getAttribute("generic.luck") > 0) {playerID.message(' §e'+dLg.crt[181]+' §f='+itemPlayer.getAttribute("generic.luck"))}
- }
- }
- function infoBlock(playerID, x, y, z) { // функция вывода информации о блоке
- var blockInWorld = playerID.world.getBlock(x,y,z), temp;
- playerID.message("§6--------------------------------------------------------------------------------");
- if (playerID.getBlockX()==x&&playerID.getBlockY()==y+1&&playerID.getBlockZ()==z) {temp = ' §7('+dLg.abt[33]+')'} else {temp = ' §7('+dLg.abt[34]+')'}
- playerID.message(dLg.crt[182]+'§eX:§f'+x+' §eY:§f'+y+' §eZ:§f'+z+temp);
- if (blockInWorld.hasTileEntity() && blockInWorld.getTileEntityNBT().getKeys().length) {
- playerID.message("-----------------");
- if (String(blockInWorld.getTileEntityNBT().getMCNBT()).length <= 440) {
- playerID.message('§7'+dLg.crt[151]+':');
- parseTAG(blockInWorld.getTileEntityNBT(),"C_");
- playerID.message('§2'+dLg.crt[153]+':\n'+String(blockInWorld.getTileEntityNBT().getMCNBT()));
- } else {
- playerID.message(dLg.crt[154])
- }
- playerID.world.getStoreddata().put("temp_block", String(blockInWorld.getTileEntityNBT().getMCNBT()));
- playerID.message('§7'+dLg.crt[151]+dLg.crt[155]+'temp_block"§7.\n-----------------\n'+dLg.crt[156]);
- }
- playerID.message("-----------------");
- playerID.message(dLg.crt[183]+': §6' + blockInWorld.getName()+'\n'+dLg.crt[184]+': §9' + blockInWorld.getMetadata());
- }
- function vastEntity(playerID, r, x, y, z) { // функция вывода краткой информации о найденных в зоне существах
- var entityArr = playerID.world.getNearbyEntities(playerID.world.getBlock(x,y,z).getPos(), r, 0);
- var temp, type, text, entityX, entityY, entityZ, name;
- playerID.message('§7------------------------------------------------------\n'+dLg.crt[185]+'§6'+x+'§7:§6'+y+'§7:§6'+z+'§7; '+dLg.abt[15]+':§6'+r+'§7:');
- for (var i=0; i< entityArr.length; i++) { // зазборка массива
- name = entityArr[i].getMCEntity().func_70005_c_();
- entityX=entityArr[i].getBlockX();
- entityY=entityArr[i].getBlockY();
- entityZ=entityArr[i].getBlockZ();
- type=dLg.ett[entityArr[i].getType()];
- if (entityArr[i].getType()==0) {
- text='§3'+entityArr[i].getType()+'§7:'+'§3'+type+' §7'+dLg.abt[21]+': §3';
- } else if (entityArr[i].getType()==1) {
- text='§f'+entityArr[i].getType()+'§7:'+'§f'+type+' §7'+dLg.abt[21]+': §f';
- } else if (entityArr[i].getType()==2) {
- text='§5'+entityArr[i].getType()+'§7:'+'§5'+type+' §7'+dLg.abt[21]+': §5';
- } else if (entityArr[i].getType()==3) {
- text='§b'+entityArr[i].getType()+'§7:'+'§b'+type+' §7'+dLg.abt[21]+': §b';
- } else if (entityArr[i].getType()==4) {
- text='§7'+entityArr[i].getType()+'§7:'+'§d'+type+' §7'+dLg.abt[21]+': §d';
- } else if (entityArr[i].getType()==5) {
- text='§8'+entityArr[i].getType()+'§7:'+'§8'+type+' §7'+dLg.abt[21]+': §8';
- } else if (entityArr[i].getType()==6) {
- text='§2'+entityArr[i].getType()+'§7:'+'§2'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==7) {
- text='§a'+entityArr[i].getType()+'§7:'+'§a'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==8) {
- text='§1'+entityArr[i].getType()+'§7:'+'§1'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==9) {
- text='§4'+entityArr[i].getType()+'§7:'+'§4'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==10) {
- text='§6'+entityArr[i].getType()+'§7:'+'§6'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==11) {
- text='§e'+entityArr[i].getType()+'§7:'+'§e'+type+' §7'+dLg.abt[21]+': §2';
- } else {
- text='§9'+entityArr[i].getType()+'§7:'+'§9'+type+' §7'+dLg.abt[21]+': §9';
- }
- 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());
- if (temp) {
- 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())});
- } else {
- 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())}];
- }
- }
- playerID.world.getStoreddata().put("entity_around", JSON.stringify(temp)); // сохранить массив данных его в мире
- playerID.message(dLg.crt[186]+'"§fentity_around§7"');
- }
- function searchEntity(event) { // функция поиска существа по имени и телепортация игрока к нему.
- if (!fn || !fr || !playerID) {
- srh=false;
- return;
- } else {
- x=playerID.getX(),y=playerID.getY(),z=playerID.getZ();
- }
- var entityArr = playerID.world.getNearbyEntities(playerID.world.getBlock(x,y,z).getPos(), fr, 0);
- var type, text, entityX, entityY, entityZ, name;
- for (var i=0; i< entityArr.length; i++) { // зазборка массива
- name = entityArr[i].getMCEntity().func_70005_c_();
- if (name.toLowerCase().indexOf(fn) !== (-1)) {
- entityX=entityArr[i].getBlockX();
- entityY=entityArr[i].getBlockY();
- entityZ=entityArr[i].getBlockZ();
- type=dLg.ett[entityArr[i].getType()];
- if (entityArr[i].getType()==0) {
- text='§3'+entityArr[i].getType()+'§7:'+'§3'+type+' §7'+dLg.abt[21]+': §3';
- } else if (entityArr[i].getType()==1) {
- text='§f'+entityArr[i].getType()+'§7:'+'§f'+type+' §7'+dLg.abt[21]+': §f';
- } else if (entityArr[i].getType()==2) {
- text='§5'+entityArr[i].getType()+'§7:'+'§5'+type+' §7'+dLg.abt[21]+': §5';
- } else if (entityArr[i].getType()==3) {
- text='§b'+entityArr[i].getType()+'§7:'+'§b'+type+' §7'+dLg.abt[21]+': §b';
- } else if (entityArr[i].getType()==4) {
- text='§7'+entityArr[i].getType()+'§7:'+'§d'+type+' §7'+dLg.abt[21]+': §d';
- } else if (entityArr[i].getType()==5) {
- text='§8'+entityArr[i].getType()+'§7:'+'§8'+type+' §7'+dLg.abt[21]+': §8';
- } else if (entityArr[i].getType()==6) {
- text='§2'+entityArr[i].getType()+'§7:'+'§2'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==7) {
- text='§a'+entityArr[i].getType()+'§7:'+'§a'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==8) {
- text='§1'+entityArr[i].getType()+'§7:'+'§1'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==9) {
- text='§4'+entityArr[i].getType()+'§7:'+'§4'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==10) {
- text='§6'+entityArr[i].getType()+'§7:'+'§6'+type+' §7'+dLg.abt[21]+': §2';
- } else if (entityArr[i].getType()==11) {
- text='§e'+entityArr[i].getType()+'§7:'+'§e'+type+' §7'+dLg.abt[21]+': §2';
- } else {
- text='§9'+entityArr[i].getType()+'§7:'+'§9'+type+' §7'+dLg.abt[21]+': §9';
- }
- 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]);
- srh=false;
- fr=0;
- fn=0;
- break;
- }
- }
- }
- function infoEntity(playerID, uuid) { // функция вывода информации о существе
- 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;
- playerID.message("§b--------------------------------------------------------------------------------");
- if (entity.getNbt().getKeys().length !==null) {
- playerID.message('§7'+dLg.crt[150]+':');
- parseTAG(entity.getNbt(),"M_");
- playerID.message('§2'+dLg.crt[153]+':\n'+String(entity.getNbt().getMCNBT()));
- playerID.world.getStoreddata().put("temp_entity_mine", String(entity.getNbt().getMCNBT()));
- playerID.message('§7'+dLg.crt[150]+dLg.crt[155]+'temp_entity_mine"§7.\n-----------------\n'+dLg.crt[156]+'\n-----------------');
- }
- if (entity.getEntityNbt().getKeys().length !==null) {
- playerID.message("-----------------");
- playerID.message(dLg.crt[151]+': '+dLg.crt[154])
- playerID.world.getStoreddata().put("temp_entity_cust", String(entity.getEntityNbt().getMCNBT()));
- playerID.message('§7'+dLg.crt[151]+dLg.crt[155]+'temp_entity_cust"§7.\n-----------------\n'+dLg.crt[156]+'\n-----------------');
- }
- playerID.message(dLg.crt[187]+' UUID: §f'+uuid+'\n §7'+dLg.abt[19]+': X:§f'+x+'§7; Y:§f'+y+'§7; Z:§f'+z);
- if (entity.getType()==0) {
- type='§3'+entity.getType()+'§7:'+'§3'+dLg.ett[0]+' §7'+dLg.abt[21]+': §3';
- } else if (entity.getType()==1) {
- type='§f'+entity.getType()+'§7:'+'§f'+dLg.ett[1]+' §7'+dLg.abt[21]+': §f';
- } else if (entity.getType()==2) {
- type='§5'+entity.getType()+'§7:'+'§5'+dLg.ett[2]+' §7'+dLg.abt[21]+': §5';
- } else if (entity.getType()==3) {
- type='§b'+entity.getType()+'§7:'+'§b'+dLg.ett[3]+' §7'+dLg.abt[21]+': §b';
- } else if (entity.getType()==4) {
- type='§7'+entity.getType()+'§7:'+'§d'+dLg.ett[4]+' §7'+dLg.abt[21]+': §d';
- } else if (entity.getType()==5) {
- type='§8'+entity.getType()+'§7:'+'§8'+dLg.ett[5]+' §7'+dLg.abt[21]+': §8';
- } else if (entity.getType()==6) {
- type='§2'+entity.getType()+'§7:'+'§2'+dLg.ett[6]+' §7'+dLg.abt[21]+': §2';
- } else if (entity.getType()==7) {
- type='§a'+entity.getType()+'§7:'+'§a'+dLg.ett[7]+' §7'+dLg.abt[21]+': §2';
- } else {
- type='§9'+entity.getType()+'§7:'+'§9'+dLg.ett[8]+' §7'+dLg.abt[21]+': §9';
- }
- playerID.message(dLg.crt[188]+type+entity.getMCEntity().func_70005_c_());
- if (entity.getType()>=1&&entity.getType()<=5) {
- var age=0, time, timeMin, timeSec;
- 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());
- try {playerID.message(dLg.crt[193]+entity.getAttackTarget().getMCEntity().func_70005_c_())} catch (err) {}
- try {playerID.message(dLg.crt[194]+entity.getLastAttacked().getMCEntity().func_70005_c_())} catch (err) {}
- if (playerID.world.getTime()>=18000) {temp=playerID.world.getTime()-18000} else {temp=6000+playerID.world.getTime()}
- timeMin = Math.floor((temp%1000)/16.6666), timeSec = Math.floor((((temp%1000)/16.6666)-timeMin)*60);
- if (timeMin <10) {timeMin = "0"+timeMin}
- if (timeSec <10) {timeSec = "0"+timeSec}
- time = Math.floor(temp/1000)+":"+timeMin+":"+timeSec+"";
- playerID.message(dLg.crt[195]+time);
- if (entity.getType()>=1&&entity.getType()<=3) { // экипировка
- 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())}}
- if (entity.getMainhandItem().getName()!=='minecraft:air') {playerID.message(dLg.crt[197]+entity.getMainhandItem().getDisplayName())}
- if (entity.getOffhandItem().getName()!=='minecraft:air') {playerID.message(dLg.crt[198]+entity.getMainhandItem().getDisplayName())}
- }
- if (entity.getType()==1) { // если это игрок
- age = playerID.getAge();
- timeMin = Math.floor((age%72000)/1200), timeSec = Math.floor((age%1200)/20);
- if (timeMin <10) {timeMin = "0"+timeMin}
- if (timeSec <10) {timeSec = "0"+timeSec}
- time = Math.floor(age/72000)+":"+timeMin+":"+timeSec+"";
- playerID.message(dLg.crt[199]+time+'\n'+dLg.crt[200]);
- 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())}}
- }
- }
- }
- function parseTAG(nbt,text) { // функция разбирает nbt на теги с учётом типа тега
- var temp=[0,0,0,0];
- for (var i = 0; i < nbt.getKeys().length; i++) {
- temp[0]=nbt.getKeys()[i]; // имя тега
- temp[1]=nbt.getType(temp[0]); // тип тега
- if (temp[1] == 1) {
- playerID.message(text+i+' §b'+temp[0]+'§7:§r'+nbt.getByte(temp[0]));
- } else if (temp[1] == 2) {
- playerID.message(text+i+' §6'+temp[0]+'§7:§r'+nbt.getShort(temp[0]));
- } else if (temp[1] == 3) {
- playerID.message(text+i+' §3'+temp[0]+'§7:§r'+nbt.getInteger(temp[0]));
- } else if (temp[1] == 4) {
- playerID.message(text+i+' §2'+temp[0]+'§7:§r'+nbt.getLong(temp[0]));
- } else if (temp[1] == 5) {
- playerID.message(text+i+' §5'+temp[0]+'§7:§r'+nbt.getFloat(temp[0]));
- } else if (temp[1] == 6) {
- playerID.message(text+i+' §6'+temp[0]+'§7:§r'+nbt.getDouble(temp[0]));
- } else if (temp[1] == 7) {
- playerID.message(text+i+' §7s'+temp[0]+'§7:§e[§r'+nbt.getShortArray(temp[0])+'§e]');
- } else if (temp[1] == 8) {
- playerID.message(text+i+' §c'+temp[0]+'§7:§e"§r'+nbt.getString(temp[0])+'§e"');
- } else if (temp[1] == 9) {
- log='';
- space=1;
- temp[2] = nbt.getListType(temp[0]);
- if (temp[0]=='Scripts' && nbt.getList(temp[0],temp[2]).length!==0) {
- playerID.message(text+i+' §a'+temp[0]+'§e(§a'+temp[2]+'§e)§7:§e{§7('+dLg.crt[201]+')§e}');
- } else {
- listTAG(nbt.getList(temp[0],temp[2]), temp[2]);
- playerID.message(text+i+' §a'+temp[0]+'§e(§a'+temp[2]+'§e)§7:§e{§r\n'+log+'\n§e}');
- }
- } else if (temp[1] == 10) {
- log='';
- space=1;
- temp[2] = nbt.getCompound(temp[0]);
- compoundTAG(temp[2]);
- playerID.message(text+i+' §d'+temp[0]+'§7:§e{\n'+log+'\n§e}');
- } else if (temp[1] == 11) {
- playerID.message(text+i+' §1'+temp[0]+'§7:§e"§r'+nbt.getIntegerArray(temp[0])+'§e"');
- }
- }
- }
- function listTAG(nbt,type) { // функция разбирает тег типа list
- var temp=[0,0,0,0];
- if (type == 10) { // для nbt
- for (var i=0;i<nbt.length;i++) {
- for (var h=0; h<space; h++) {log=log+' '}
- log=log+'§7[';
- for (var j=0;j<nbt[i].getKeys().length;j++) {
- temp[0]=nbt[i].getKeys()[j]; // имя тега
- temp[1]=nbt[i].getType(temp[0]); // тип тега
- if (temp[1]==1) {
- log=log+'§b'+temp[0]+'§7:§r'+nbt[i].getByte(temp[0]);
- } else if (temp[1]==2) {
- log=log+'§6'+temp[0]+'§7:§r'+nbt[i].getShort(temp[0]);
- } else if (temp[1]==3) {
- log=log+'§3'+temp[0]+'§7:§r'+nbt[i].getInteger(temp[0]);
- } else if (temp[1]==4) {
- log=log+'§2'+temp[0]+'§7:§r'+nbt[i].getLong(temp[0]);
- } else if (temp[1]==5) {
- log=log+'§5'+temp[0]+'§7:§r'+nbt[i].getFloat(temp[0]);
- } else if (temp[1]==6) {
- log=log+'§6'+temp[0]+'§7:§r'+nbt[i].getDouble(temp[0]);
- } else if (temp[1]==7) {
- log=log+'§7'+temp[0]+'§7:§7[§r'+nbt[i].getShortArray(temp[0])+'§7]';
- } else if (temp[1]==8) {
- log=log+'§c'+temp[0]+'§7:§7"§r'+nbt[i].getString(temp[0])+'§7"';
- } else if (temp[1]==11) {
- log=log+'§1'+temp[0]+'§7:§7[§r'+nbt[i].getIntegerArray(temp[0])+'§7]';
- }
- if (i!==nbt[i].getKeys().length-1) {log=log+'§7,'}
- }
- if (i!==nbt.length-1) {log=log+'§7],\n'} else {log=log+'§7]'}
- }
- } else { // остальные
- for (var i=0; i<nbt.length;i++) {
- for (var h=0; h<space; h++) {log=log+' '}
- if (i!==(nbt.length-1)) {log=log+'§7"§r'+nbt[i]+'§7",\n'} else {log=log+'§7"§r'+nbt[i]+'§7"'}
- }
- }
- space--;
- }
- function compoundTAG(nbt) { // функция разбирает объект nbt на теги
- var temp=[0,0,0,0];
- for (var i = 0; i < nbt.getKeys().length; i++) {
- for (var h=0; h<space; h++) {log=log+' '}
- temp[0]=nbt.getKeys()[i]; // имя тега
- temp[1]=nbt.getType(temp[0]); // тип тега
- if (temp[1]==1) {
- log=log+'§b'+temp[0]+'§7:§r'+nbt.getByte(temp[0]);
- } else if (temp[1]==2) {
- log=log+'§6'+temp[0]+'§7:§r'+nbt.getShort(temp[0]);
- } else if (temp[1]==3) {
- log=log+'§3'+temp[0]+'§7:§r'+nbt.getInteger(temp[0]);
- } else if (temp[1]==4) {
- log=log+'§2'+temp[0]+'§7:§r'+nbt.getLong(temp[0]);
- } else if (temp[1]==5) {
- log=log+'§5'+temp[0]+'§7:§r'+nbt.getFloat(temp[0]);
- } else if (temp[1]==6) {
- log=log+'§6'+temp[0]+'§7:§r'+nbt.getDouble(temp[0]);
- } else if (temp[1]==7) {
- log=log+'§7'+temp[0]+'§7:§7[§r'+nbt.getShortArray(temp[0])+'§7]';
- } else if (temp[1]==8) {
- log=log+'§c'+temp[0]+'§7:§7"§r'+nbt.getString(temp[0])+'§7"';
- } else if (temp[1]==9) {
- temp[2] = nbt.getListType(temp[0]);
- if (temp[0]=='Scripts' && nbt.getList(temp[0],temp[2]).length!==0) {
- log=log+'§a'+temp[0]+'§7(§a'+temp[2]+'§7):{('+dLg.crt[201]+')}';
- } else {
- log=log+'§a'+temp[0]+'§7(§a'+temp[2]+'§7):§8{§r\n';
- listTAG(nbt.getList(temp[0],temp[2]), temp[2]);
- log=log+'\n'
- for (var h=0; h<space; h++) {log=log+' '}
- log=log+'§8}'
- space++;
- }
- } else if (temp[1]==10) {
- space++;
- log=log+'§d'+temp[0]+'§7:§e{§r\n'
- temp[2] = nbt.getCompound(temp[0]);
- compoundTAG(temp[2]);
- log=log+'\n'
- for (var h=0; h<space; h++) {log=log+' '}
- log=log+'§e}'
- } else if (temp[1]==11) {
- log=log+'§1'+temp[0]+'§7:[§r'+nbt.getIntegerArray(temp[0])+'§7]'
- }
- if (i!==(nbt.getKeys().length-1)) {log=log+'§7,\n'}
- }
- space--;
- }
- function errUUID(playerID,text) { // функция проверки и вывода ошибок ввода uuid
- var temp=[[[0,0,7],[1,9,12],[2,14,17],[3,19,22],[4,24,35]],0];
- if (text.length!==36) {playerID.message(dLg.crt[202]+text.length+'§c.')} // общее число символов
- if (text.charCodeAt(8)!==45) { // положение дефисов
- 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".');
- } else if (text.charCodeAt(13)!==45) {
- 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".');
- } else if (text.charCodeAt(18)!==45) {
- 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".');
- } else if (text.charCodeAt(23)!==45) {
- 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".');
- }
- for (var i=0; i<5; i++) { // символовы/цыфры не из 16ой системы
- for (var j=temp[0][i][1]; j<=temp[0][i][2]; j++) {
- temp[1]=0;
- if (text.charCodeAt(j)==45 || !Number(text.charAt(j)+1)) {
- for (var k=97; k<=102; k++) {
- if (text.charCodeAt(j) == k) {
- temp[1]=1;
- break;
- }
- }
- 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])}
- }
- }
- }
- }
- function effect(event, playerID, command, particle) { // функция вызова команд от игрока с сохранением, + спавн эффектов в мир
- var comList = JSON.parse(playerID.world.getStoreddata().get("comlist")), temp; // получить логи - список команд
- if (comList == null || comList == undefined) {comList = []} // создать если пуст
- if (command !== undefined && command !== null && command !== 0) { // выполнение общих команд
- if ((typeof command) == "string") { // если одна команда
- if (playerID.getGamemode() == 1) {playerID.message(dLg.crt[206]+command)}
- event.API.executeCommand(playerID.world,command);
- temp = {type:true, name:playerID.getName(), com:command, world:playerID.world.getDimension().getName(), x:playerID.getBlockX(), y:playerID.getBlockY(), z:playerID.getBlockZ(), tab:'creative'};
- if (comList.length >= 0 && comList.length < 31) { // Сохранение команды для отладки (мах 30)
- comList.push(temp); // Добавить команду в список.
- } else {
- var del = comList.shift(); // удалить крайнюю команду в массиве
- comList.push(temp);
- }
- } else { // если серия команд
- if (playerID.getGamemode() == 1) {playerID.message(dLg.crt[206]+command[0])}
- for (var i=0; i < command.length; i++) {event.API.executeCommand(playerID.world,command[i])}
- 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'};
- if (comList.length >= 0 && comList.length < 31) { // Сохранение 1й команды из серии для отладки (мах 30)
- comList.push();
- } else {
- var del = comList.shift();
- comList.push(temp);
- }
- }
- playerID.world.getStoreddata().put("comlist", JSON.stringify(comList)); // сохранить список команд
- }
- if (particle !== undefined && particle !== null && particle !== 0) { // выполнение частиц (те же команды, но без сохранения в короткие логи)
- if ((typeof particle) == "string") { // если одна команда частиц
- event.API.executeCommand(playerID.world,particle);
- } else { // если серия команд частиц
- for (var i=0; i < particle.length; i++) {
- event.API.executeCommand(playerID.world,particle[i]);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement