Лидеры
Популярный контент
Показан контент с высокой репутацией 09.05.2020 в Записи блога
-
3 баллаРасширение для работы с minecraft. Если вы ещё не прочитали вступительную статью - рекомендуется сделать это сейчас, так как описания данных предметов/жидкостей/сущностей здесь нет. Содержание: Адаптеры блоков Инвентарь - предоставляет возможность управлять внутренними ячейками любого инвентаря. Идентификатор: inventory getInventoryName():string - название инвентаря getInventorySize():string - количество ячеек в инвентаре getStackInSlot(slotNumber:number[, proxy:bool]):object - получить предмет в ячейке, если proxy не задан или false - возвращает всю информацию о предмете destroyStack(slotNumber:number) - уничтожить стек в ячейке expandStack(stack:table):object - узнать всю информацию о предмете (о любом предмете, даже если такого нет в инвентаре), необходимо передать id и мету swapStacks(fromSlot:number, intoSlot:number[, fromDirection:string[, toDirection:string]]) - поменять местами предметы в слотах -- fromDirection и toDirection используются для инвентарей, с которыми можно взаимодействовать через стороны, например - печь. -- Если передать в эти параметры сторону, то можно расширить поведение подобных инвентарей. -- Например печь swapStacks(1,2) без использования сторон, можно менять верхний и нижние слоты, если в них находится что-то горючее. -- Если передать вторым параметром "DOWN" swapStacks(1,2,nil,"DOWN") - то вынуть топливо уже не возможно. -- Но если в этом слоте есть пустое ведро (от лавы), то поменять слоты становится возможным. condenseItems() - собрать в кучу разбросанные в инвентаре предметы -- использовать с ОСТОРОЖНОСТЬЮ - если первые ячейки инвентаря не смогут принять предмет - он уничтожится Инвентарь в мире - предоставляет возможность взаимодействовать с соседними блоками-инвентарями. Идентификатор: inventory-world pullItem|pullItemIntoSlot(direction:string, slot:number[, maxAmount[, intoSlot]]):number - забрать предмет из соседнего инвентаря. Возвращает количество перемещенных предметов. pushItem|pushItemIntoSlot(direction:string, slot:number[, maxAmount[, intoSlot]]):number - поместить предмет в соседний инвентарь. Возвращает количество перемещенных предметов. Жидкостный бак - можно получить информацию о жидкости в баке. Идентификатор: fluid_tank getInfo():table - информация о хранилище жидкости Жидкостный контроллер - можно получить информацию о жидкостных хранилищах в блоке. Идентификатор: fluid_handler getTankInfo([direction]):table[] - информация о всех хранилищах жидкостей, можно передать конкретную сторону для получения бака Датчик дневного света - позволяет узнать информацию о небе и солнце. Идентификатор: vanilla_daylight_sensor hasSky():bool - имеется ли небо в этом биоме (его нет в энде, например) getSkyLight():number - освещенность неба, 0-15 (работает только в биомах с небом) getBlockLight():number - получить освещенность датчика, 0-15 getCelestialAngle():number - получить угол солнца, 0 это зенит, 0.0-360.0 Табличка - предоставляет управление табличкой. Идентификатор: vanilla_sign getText():string - получить текст таблички setText(text:string) - установить текст getLines():string[] - получить линии таблички setLines(lines:string[]) - установить линии таблички getLine(line:number):string - получить линию таблички setLine(line:number, text:string) - установить линию таблички Нотный блок - предоставляет управление нотным блоком. Идентификатор: vanilla_note getNote():number - получить текущую ноту setPitch(note):bool - установить ноту, 0-25 triggerNote() - проиграть текущую ноту incrementPitch() - увеличить текущую ноту на единицу playSound(sound:string, pitch:number, volume:number[, x:number, y:number, z:number]) - проигрывает ЛЮБОЙ звук из игры -- pitch и volume 0.0-1.0 -- x,y,z - относительно нотного блока -- список основных звуков можно узнать тут - https://minecraft-ru.gamepedia.com/Sounds.json Маяк - можно получить информацию о маяке и эффектах, но выставить необходимый эффект невозможно. Идентификатор: vanilla_beacon getPrimaryEffect():string - имя основного эффекта getSecondaryEffect():string - имя дополнительного эффекта int getLevels():number - количество уровней маяка Варочная стойка - можно получить информацию о времени варки. Для автоматической варки можно воспользоваться методами инвентаря. Идентификатор: vanilla_brewing getBrewTime():number - оставшееся время варки в тиках Компаратор - можно узнать уровень исходящего сигнала... и всё. Идентификатор: vanilla_comparator getOutputSignal():number - сила сигнала, 0-15 Цветочный горшок - можно узнать что в нём. Идентификатор: flower_pot getContents():table - получить информацию о предмете в горшке Печь - информация о состоянии печи. Идентификатор: vanilla_furnace getBurnTime():number - оставшееся время горения, в тиках getCookTime():number - сколько тиков прошло с момента начала обжарки предмета, в тиках getCurrentItemBurnTime():number - полное время обжарки предмета, в тиках isBurning():bool - активна ли печь Спавнер мобов - информация о мобе. Идентификатор: vanilla_spawner getSpawningMobName():string - имя моба Проигрыватель пластинок - можно узнать текущую пластинку. Идентификатор: vanilla_player getRecord():string - получить текущую пластинку Череп/голова - получить информацию о черепе или голове. Идентификатор: skull getType():string - тип головы/черепа getPlayer():string, string - информация о игроке: уникальный идентификатор и имя Провайдеры предметов Ore Dictionary Ключ: ore_dict Значение: table {имя_ore_dict=true} Хэш-сумма всех nbt-данных предмета Ключ: nbt_hash Значение: string Контейнер жидкости - информация о хранилище жидкости Ключ: fluid_container Значение: table Зачарованная книга - список зачарований на книге Ключ: enchanted_book Значение: table - name:string - имя зачарования - level:number - уровень зачарования - fullName:string - название зачарования, зависит от языка сервера Зачарованный предмет - список зачарований на предмете Ключ: ench Значение: table - name:string - имя зачарования - level:number - уровень зачарования - fullName:string - название зачарования, зависит от языка сервера Класс инструмента Ключ: tool_class Значение: table {тип_инструмента=уровень_добычи:number} Зелье Ключ: potion Значение: table - splash:bool - взрывное ли зелье - effects:table - список эффектов зелья - duration:number - длительность эффекта - amplifier:number - сила эффекта - effect - информация о эффекте, структура: - name:string - имя эффекта - instant:bool - моментальный ли эффект от зелья - color:number - цвет частиц зелья, 0xRRGGBB Броня Ключ: armor Значение: table - material:string - материал брони - type:string - тип части брони - color:number? - цвет окрашенной брони, 0xRRGGBB Меч Ключ: sword Значение: table - material:string - материал меча Инструмент Ключ: tool Значение: table - material:string - материал инструмента Время горения предмета в тиках Ключ: burn_time Значение: number Провайдеры сущностей Список предметов в инвентаре сущности Ключ: inventory|inventory-provider Значение: table[] - список proxy Информация о живом существе - огромное количество данных, может съесть память Ключ: living Значение: table - health:number - текущее здоровье - maxHealth:number - максимальное здоровье - yaw:number - поворот тела, вертикальная ось, -360 - 360 - yawHead:number - поворот головы, вертикальная ось, -360 - 360 - pitch:number - поворот головы, поперечная ось, -360 - 360 - heldItem:table - предмет в руке - armor:table - броня сущности - boots:table - предмет ботинок - leggings:table - предмет поножей - chestplate:table - предмет нагрудника - helmet:table - предмет шлема - potionEffects:string[] - список имён действующих эффектов - potion_effects:table[] - подробный список действующих эффектов - duration:number - длительность эффекта, в секундах - amplifier:number - сила эффекта - is_ambient:bool - эффект области, например в зоне действия маяка - effect:table - информация о эффекте - name:string - имя эффекта - instant:bool - моментальный ли эффект от зелья - color:number - цвет частиц зелья, 0xRRGGBB - lookingAt:table - на что смотрит существо - type:string - block или entity - id:number? - индекс сущности, для типа entity - position:number? - абсолютная или относительная(не относительно существа, а относительно сканера, например) позиция блока, для типа block - isAirborne:bool - существо находится в воздухе, т.е. летает или падает - isBurning:bool - существо горит - isAlive:bool - существо живо - isDead:bool - существо мертво, если было сохранено proxy существа - то при смерти значение выставится в true - isInWater:bool - существо в воде - isOnLadder:bool - существо на лестнице - isSleeping:bool - игрок спит - isRiding:bool - существо оседлало другую сущность - isSneaking:bool - существо приседает - isSprinting:bool - существо бежит - isWet:bool - существо мокрое, например после нахождения в воде - isChild:bool - существо-ребёнок Полоска здоровья босса Ключ: boss Значение: table - name:string - имя босса - health:number - текущее здоровье босса - maxHealth:number - максимальное здоровье босса Рамка для предметов Ключ: item_frame Значение: table - item:table - информация о предмете - rotation:number - поворота предмета, 0-3 Картина Ключ: painting Значение: table - title:string - название картины - width:number - ширина картины в блоках - height:number - высота картины в блоках Предмет на земле Ключ: item Значение: table - stack:table - информация о предмете - age:number - какое время предмет находится на земле, в тиках - lifespan:number - общее время "жизни" предмета, в тиках Приручаемое существо, например оцелот Ключ: tameable Значение: table - isTamed:bool - приручено ли существо - isSitting:bool? - сидит ли существо - ownerUUID:string? - uuid игрока, приручившего существо Индивидуальные провайдеры существ Игрок Ключ: player Значение: table - inventory:table[] - список proxy предметов инвентаре - isAirBorne:bool - находится ли в воздухе - isBlocking:bool - блок мечом - profile:table - профиль игрока - foodLevel:number - уровень сытости - isCreativeMode:bool - находится ли в креативе - experience:table - информация о опыте - level:number - уровень игрока - levelProgress:number - прогресс уровня, 0.0-1.0 - nextLevelXp:number - общее количество опыта до следующего уровня Летучая мышь Ключ: bat Значение: table - isHanging:bool - висит ли мышь Крипер Ключ: creeper Значение: table - isCharged:bool - заряженный ли крипер Лошадь, осёл или мул Ключ: horse Значение: table - eatingHaystack:bool - лошать ест сено - hasReproduced:bool - имеет ли потомство, не используется, всегда false - bred:bool - возможно ли размножение - horseType:number - тип лошади, 0-4 - horseVariant:number - раскраска лошади: текстура - первые 8 бит, пятна - следующие 8 бит - horseTemper:number - характер лошади, 0-100, чем больше значение - тем быстрее приручается - horseTame:bool - приручена ли лошадь - ownerUUID:string - uuid владельца лошади - chestedHorse:bool - если сундук на осле/муле - chest:table[]? - список proxy предметов в сундуке Свинья Ключ: pig Значение: table - isSaddled:bool - есть ли седло на свинье Овца Ключ: sheep Значение: table - sheepColor:number - цвет овцы, индекс 0-15 - isSheared:bool - пострижена ли овца Житель Ключ: villager Значение: table - profession:number - профессия жителя, 0-4 - isMating:bool - житель размножается - isPlaying:bool - ребёнок жителя играет - isTrading:bool - сейчас торгует с игроком - customer:table? - профиль игрока-покупателя Ведьма Ключ: witch Значение: table - isAggressive:bool - агрессивна ли ведьма Волк Ключ: wolf Значение: table - isShaking:bool - волк отряхивается - isAngry:bool - волк злой - collarColor:bool - цвет ошейника, индекс 0-15 Зомби Ключ: zombie Значение: table - isVillagerZombie:bool - является ли зомби-жителем - convertingToVillager:bool - сейчас превращается в жителя На этом функционал ванилы окончен.
-
2 баллаНа повестке дня аддон для OpenComputers и ComputerCraft всех времён и народов, реализующий большое количество функционала для работы с миром Minecraft'а и его модификациями. Но поговорим только о версии для OpenComputers (она несколько обрезана, по сравнению с СС). Жизнь без этого мода оказалась тем ещё кошмаром, особенно при попытке играть на серверах более поздних версий майнкрафта. Но что это был за кошмар, удалось узнать только недавно - OpenPeripheral не только добавлял удобные способы взаимодействия со всем миром, но и дополнял функционал OpenComputers'а при работе со многими модификациями. Итак, аддон состоит из 3х модулей, которые будут описываться отдельно: - Core - собственно, ядро аддона, реализует некоторые базовые функции - Integration - расширенное взаимодействие с майнкрафтом и модами - Addons - дополнительная периферия для пк Информация актуальная для версии Minecraft 1.7.10. В этой части разговор пойдет о ядре аддона, так как его функционал является основополагающим для остальных модулей. Итак, в моде реализована система адаптеров - интерфейсов lua-minecraft (он-же драйвер), предоставляющих функционал для взаимодействия с объектами. У каждого адаптера есть свой идентификатор, и этот идентификатор используется для определения "владельца" функционала. В ядре, есть только адаптер для отображения документации объекта. В будущих же статьях будут описаны адаптеры в модуле, и предоставляемый ими функционал. Документация функций Ядро реализует неплохую систему документации всех своих функций, которую можно просмотреть через lua: listMethods([filterSource]):string - возвращает строчку со всеми методами методов. filterSource - идентификатор адаптера Пример: listMethods():"doc(method), getAdvancedMethodsData(method?), listMethods(filterSource?), listSources()" listSources():table - возвращает таблицу {name=true} со всеми адаптерами. Пример: listSources():{["<meta>"]=true, skull=true} - список адаптеров черепа, <meta> - адаптер ядра, skull - адаптер черепов/голов doc(method):string - возвращает текстовое описание метода. Пример: doc("doc"):"function(method:string):string -- Brief description of method" getAdvancedMethodsData([method]):table - возвращает полную информацию о методе, или всех методах. возвращаемая структура: - description:string - текстовое описание - source:string - идентификатор адаптера - returnTypes:string - строчка с возвращаемым типом(типами) данных - args:table - аргументы функции: - name:string - type:string - тип аргумента, но есть баг - отображается java-тип - description:string - nullable:bool? - принимает ли значение nil - optional:bool? - является ли необязательным аргументом - vararg:bool? - переменное кол-во аргументов (или ...) Предметы и сущности Одной из интересных особенностей OpenPeripheral является система доступа к метаданным предметов или сущностей, а именно - прокси (proxy, он же - паттерн "заместитель"). Прокси является неким контейнером, содержащем прямую ссылку на java-объект, что позволяет получать актуальную информацию о предмете или сущности, до тех пор пока прокси или объект не выгрузится из памяти. Многие методы OpenPeripheral, возвращающие данные о предметах или сущностях, могут вернуть прокси. Это позволяет экономить память в условиях огромного объема обрабатываемой информации, например - получение всех предметов ME сети, или наоборот - при малом объеме памяти на пк. Но есть и серьезный минус при работе с прокси - любая попытка доступа к данным будет занимать один игровой тик. Прокси предметов или сущностей возвращают некоторую базовую информацию, например идентификатор, позиция и т.п. Но для более подробной информации используются провайдер - интерфейс, предоставляющий специфичные данные, записанные, например, в NBT. У объекта может быть несколько провайдеров, по этому у провайдера есть идентификатор, или ключ, под которым записаны данные конкретного провайдера в объекте. Прокси реализует доступ как к отдельным провайдерам, так и сразу ко всей информации. Для предметов и сущностей структура прокси одинакова: basic():table - базовая информация об объекте, содержит фиксированные поля. Данные зависят от реализации. all():table - содержит информацию из basic(), а также предоставляемую провайдерами информацию. keys():table - возвращает таблицу {name=true} со всеми провайдерами. single(key):object - возвращает информацию, предоставляемую провайдером. select(keys...):object - возвращает информацию, предоставляемую всеми переданными провайдерами. Примечание: прокси выгруженных объектов, при обращении к функциям, будут возвращать nil. Провайдеры добавляются отдельными модулями OpenPeripheral, а в ядре содержится только базовая информация, возвращаемая функцией base(). Базовая информация предмета: id:string - полный идентификатор предмета mod:name name:string - идентификатор предмета в модификации mod_id:string - идентификатор модификации display_name:string - отображаемое имя, зависит от языка сервера, и назначенного на наковальне имени raw_name:string - имя предмета для локализации, в нижнем регистре qty:number - кол-во предметов в стаке dmg:number - мета, или прочность предмета health_bar:number? - отображаемое в полоске прочности значение, 0.0-1.0 max_dmg:number - максимальная прочность предмета max_size:number - максимальный размер стака Базовая информация сущности: position:table {x,y,z} - относительная или абсолютная позиция сущности name:string - имя сущности id:number - номер сущности (по порядку появления в мире) uuid:string - уникальный идентификатор сущности (идентификатор в базе данных) riddenBy:number? - номер сущности, оседлавшей это существо ridingEntity:number? - номер сущности, которую оседлало это существо Жидкости Информация о жидкости: amount:number - объем жидкости id:number - идентификатор жидкости name:string? - имя жидкости rawName:string? - название жидкости - зависит от языка сервера Информация о хранилище жидкости: capacity:number - общий объем хранилища contents:table - содержащаяся жидкость Игровой профиль Информация о игроке: name:string - имя игрока uuid:string - уникальный идентификатор игрока Если у вас есть мысли, что может дополнить статью - был бы рад услышать.
-
1 баллНекоторые помнят мою передавалку чисел по рэдстоуну... Но чисел мало... Но теперь скорость настолько большая,что можно передавать даже файлы! Зато изменились протокол передачи и программа) Краткая характеристика: Поддержка юникода + Скорость передачи байта от 0,1 до 0,3 секунд Посмотреть код:
Эта таблица лидеров рассчитана в Москва/GMT+03:00
