Редактирование: Minecraft Script Engine

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 58: Строка 58:
 
</div>
 
</div>
  
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">
 
 
== Команды ==
 
== Команды ==
  
Строка 100: Строка 99:
 
*getEntitiesFromSpatialView(SpatialView, X_0, Y_0, Z_0, X_1, Y_1, Z_1) - возвращает массив сущностей, которые попадают в коробку с координатами&nbsp;X_0, Y_0, Z_0, X_1, Y_1, Z_1, где нулевые координаты - координаты начала коробки, а первые - конца (У направлен вверх), либо&nbsp;''null ''в случае ошибки.&nbsp;  
 
*getEntitiesFromSpatialView(SpatialView, X_0, Y_0, Z_0, X_1, Y_1, Z_1) - возвращает массив сущностей, которые попадают в коробку с координатами&nbsp;X_0, Y_0, Z_0, X_1, Y_1, Z_1, где нулевые координаты - координаты начала коробки, а первые - конца (У направлен вверх), либо&nbsp;''null ''в случае ошибки.&nbsp;  
  
<div class="mw-parser-output"><div class="mw-parser-output">
+
<div class="mw-parser-output">
== Компоненты скрипта ==
 
 
 
Данный раздел документации посвящен описанию всех компонентов&nbsp;сущностей, доступных в '''Minecraft Script Engine'''. Компоненты разделяются на два типа - клиентские и серверные. Подробнее о том, в чем их различие, будет рассказано в соответствующих разделах документации ниже.&nbsp;
 
 
 
Компонент можно добавить к сущности, получить, изменить и убрать из сущности. Чтобы получить и обновить компонент, он должен быть привязан к сущности. Подробнее можно узнать в разделе команд для работы с компонентами выше.
 
 
 
=== Клиентские компоненты ===
 
 
 
Эти компоненты&nbsp;могут быть использованы только в клиентских скриптах:
 
 
 
*''minecraft:molang'' - предоставляет доступ к переменным MoLang сущности. Подробнее о переменных MoLang можно узнать в документации по адднам. Поскольку переменные MoLang содержат в своем названии точки (например, "entity.isgrazing"), для доступа к ним используется синтаксис [].&nbsp; Например,&nbsp;
 
<div><syntaxhighlight lang="Javascript">var molangComponent = this.createComponent(entity, "minecraft:molang");
 
molangComponent["entity.molangexample"] = 1.0;
 
this.needsUpdate(molangComponent);</syntaxhighlight>
 
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">
 
=== Серверные компоненты ===
 
 
 
Серверные компоненты предназначены для использования в серверных скриптах и синхронизируются со всеми клиентами (игроками) в игровом мире. Данные компоннты созданы так, чтобы по-максимуму соответствовать компонентам JSON-формата, использующимся в аддонах. На данный момнт доступны следующие компоненты:
 
 
 
*minecraft:attack''&nbsp;''- позволяет изменять урон и эффекты при атаке. Имеет свойства:
 
**''damage ''-&nbsp;урон при ударе, задается&nbsp;массивом из двух чисел (минимальное и максимальное значения)
 
**''effect_name''&nbsp;-&nbsp;позволяет задать эффект при атаке
 
**''effect_duration ''- время эффекта в секундах 
 
*minecraft:collision_box - позволяет задать хитбокс сущности. При применении компонента сущность сразу же получает новый хитбокс. '''Внимание!'''&nbsp;Если после изменения хитбокса сущность окажется в блоке, она может начать задыхаться! Свойства:
 
**''width'' - ширина и глубина хитбокса в блоках. Стоит заметить, что сечение хитбокса может быть только квадратным. Отрицательные значения будут интерпретированы как 0.
 
**''height ''- высота хитбокса в блоках.&nbsp;Отрицательные значения будут интерпретированы как 0. 
 
*minecraft:damage_sensor - определяет массив типов урона и того, как сущность будет реагировать на данный урон. Тригеры, существующие на данный момент в игре, не могут быть корректно представлены в подобной форму, поэтому вызов ''applyComponentChanges()''&nbsp;полностью заменит существующие триггеры. Свойства не протестированы и требуют уточнений:
 
**''on_damage ''- список триггеров с возможностью управления реакцией сущности на те или иные виды урона
 
**''deals_damage ''- если указано значение true, урон будет нанесен сущности, если false - проигнорирован.
 
**''cause ''- строка, представляющая тип урона, который вызвал данный набор событий. 
 
*minecraft:equipment - определяет броню и обмундирование моба. При примнении на сущность сразу же надевается соответствующая броня. Свойства:
 
**''table ''- путь к файлу (относительно корня пакета поведений), в котором хранится информация о луте.
 
**''slot_drop_chance ''- список слотов с шансом выпадания предмета при смерти сущности. 
 
*minecraft:equippable - определяет, какие и сполько предметов могут быть надеты на сущность. Единственное свойство '''''slots'''''&nbsp;содержит массив слотов и предметов, которые могут быть в нем размещены. Каждый отдельный элемент - объект следующей структуры:
 
**''slot ''(по умолчанию 0) - номер слота, который описан в этом объекте.
 
**''accepted_items'' - список предметов, которые в него можно положить.
 
**''item ''- название предмета, который можно положить в данный слот.
 
**''interact_text'' - надпись на кнопке, если сущности можно положить данный предмет в данную ячейку инвентаря (пример - седло для лошади)
 
**''on_equip ''- название события, которое вызывается, когда на сущность надевается данный предмет.
 
**''on_unequip ''-&nbsp;название события, которое вызывается, когда с сущности снимается данный предмет. 
 
*minecraft:explode - контроллирует взрыв сущности, а так же возникновение этого взрыва. Свойства:
 
**''fuseLength ''(по умолчанию [0, 0])&nbsp;- "длинна фитиля" - время в секундах до взрыва,&nbsp;задается&nbsp;массивом из двух чисел (минимальное и максимальное значения).
 
**''power ''(по умолчанию 3.0)&nbsp;- мощность взрыва, то есть его радиус и наносимый урон.
 
**''maxResistance ''(по умолчанию бесконечность)&nbsp;- если выставлено значение, взрывоустойчивость блоков во время взрыва не привысит данное значение. Может быть использовано для взрыва таких блоков, как обсидиан.&nbsp;
 
**''fuseLit ''(по умолчанию ''false'') - ''true'', если отсчет времени до взрыва уже идет, в противном случае ''false''.
 
**''causesFire ''(по умолчанию ''false'') - если свойство установлено в ''true'', после взрыва на его месте останется огонь. В противном случае ''false''.&nbsp;
 
**''breaks_blocks&nbsp;''(по умолчанию ''true'') - если свойство установлено в ''false'', не будет разрушать блоки в радиусе взрыва.&nbsp;
 
**''fireAffectedByGriefing&nbsp;''(по умолчанию ''false'') - если&nbsp;свойство установлено в ''true'', наличие огня после взрыва определяется игровым правилом&nbsp;''mob griefing''.&nbsp;
 
**''destroyAffectedByGriefing&nbsp;&nbsp;''(по умолчанию ''false'') - если&nbsp;свойство установлено в ''true'', разрушение блоков в радиусе взрыва&nbsp;определяется игровым правилом&nbsp;''mob griefing''.&nbsp; 
 
*minecraft:healable - определяет, как игрок может лечить сущность. Свойства:
 
**''force_use ''(по умолчанию ''false'') - если установлен в ''true'', игрок может использовать предмет для лечения сущности вне зависимости от её здоровья.&nbsp;
 
**''filters ''- группа фильтров, которая определяет условия возможности данного действия.
 
**''items ''- массив предметов, используемых для лечения сущности. Каждый элемент - независимый объект следующей структуры:
 
***''item'' - строковой ID предмета, используемый для лечения данной сущности
 
***''heal_amount ''(по умолчанию 1) - количество здоровья, восстанавливаемого данным предметом.
 
***''filters ''- группа фильтров,&nbsp;которая определяет условия возможности данного действия.   
 
*minecraft:health - определяет здоровье моба. Свойства:
 
**''health ''(по умолчанию 1) - текущее здоровье сущности.
 
**''maxHealth ''(по умолчанию 10) - максимальное здоровье, до которого сущность может вылечится.&nbsp; 
 
*minecraft:interact - определяет, каким образом игрок может взаимодействовать с сущностью. Имеет для этого следующие свойства:
 
**''spawn_entities ''- задает массив ID сущностей, которые призываются при взаимодействии с игроком.
 
**''on_interact ''- задает строковой ID события, которое вызывается при взаимодействии с игроком.
 
**''particle_on_start ''- задает эффект частиц в момент начала взаимодействия. Эффект задается объектом со следующими свойствами:
 
***''particle_type ''- строковой ID частицы
 
***''particle_y_offset ''(по умолчанию 0.0) - смещение эффекта вверх по оси Y
 
***''particle_offset_towards_interactor'' (по умолчанию ''false'') - если ''true'', эффект появится ближе к игроку 
 
**''cooldown ''- "охлаждение" - время, через которое сущность может снова взаимодействовать с игроком. По у молчанию 0.0
 
**''swing&nbsp;''(по умолчанию ''false'') - если установлен в true, игрок будет иметь анимацию "swing" (кивок головой) при взаимодействии с сущностью.&nbsp;
 
**''use_item&nbsp;''(по умолчанию ''false'') - если установлен в true, при взаимодействии будет тратится прдмет.
 
**''hurt_item'' (по умолчанию 0) - прочность, на которую будет умньшатся предмет при взаимодействии.&nbsp;
 
**''interact_text ''- текст, который будет показан на кнопке взаимодействия.
 
**''add_items.table'' -&nbsp;путь к файлу (относительно корня пакета поведений), в котором хранится информация о предметах, добавляемых в инвентарь после взаимодействия.
 
**''spawn_items.table'' -&nbsp;путь к файлу (относительно корня пакета поведений), в котором хранится информация о предметах, дропающихся рядом после взаимодействия.
 
**''transform_to_item ''- используемый прдмет превратится в указанный тут предмет после взаимодействия. Предмет указывается в формате "id:data".
 
**''play_sounds'' - массив строковых ID звуков, проигрываемых при взаимодействии. 
 
*minecraft:inventory - позволяет управлять инвентарем сущности, но не умеет менять его содержимое (к сожалению). Свойства:
 
**''container_type ''- задает тип интерфейса, может быть одним из следующих значений:&nbsp;''horse'', ''minecart_chest'', ''minecart_hopper'', ''inventory'', ''container ''и&nbsp;''hopper''.
 
**''inventory_size ''- задает размер инвентаря (количество доступных слотов). По умолчанию 5.&nbsp;
 
**''can_be_siphoned_from ''(по умолчанию ''false'')&nbsp;- если установлено в true, содержимое инвентаря сущности может быть вытянуто воронкой.
 
**''private ''(по умолчанию ''false'') - если установлено в true, только сущность имеет доступ к своему инвентарю.&nbsp;
 
**''restrict_to_owner ''(по умолчанию ''false'') - если установлено в true, доступ к инвентарю сущности имеет только&nbsp;она сама и её владелец.
 
**''additional_slots_per_strength ''(по умолчанию 0) - количество дополнительных слотов, которые сущность может получить (?). 
 
*minecraft:look_at - заставляет сущность некоторое время "пялиться" на другую сущность. Свойства:
 
**''filters ''(по умолчанию игрок) - фильтры, которыми определяется, на каких сущностей будет смотреть данная сущность.&nbsp;
 
**''look_cooldown ''(по умолчанию [0, 0]) - время, которое сущность будет стоять на месте и не будет искать цель/атаковать. Задается&nbsp;массивом из двух чисел (минимальное и максимальное значения).
 
**''look_event ''- идентификатор события, вызываемого, когда сущности из списка фильтров смотрят на эту сущность.
 
**''mAllowInvulnerable&nbsp;''(по умолчанию ''false'') - если установлено в ''true'', сущность будет смотреть даже на игрока в креативе.
 
**''searchRadius ''(по умолчанию 10.0) - максимальное расстояние в блоках, на котором будет срабатывать событие.
 
**''setTarget ''(по умолчанию ''true'') - если ''true'', сущность установит объект наблюдения в качестве цели для нападения.&nbsp; 
 
*minecraft:nameable - позволяет настраивать поведение и события сущности, когда к ней применяется бирка. Также позволяет заранее задавать имя сущности. Основные свойства:
 
**''name_actions ''- объект, представляющий собой описание события назначения имени мобу. Объект имеет следующую структуру:
 
***''on_named ''- название события, вызываемого при переименовании, если имя сущности входит в список&nbsp;''name_filter''
 
***''name_filter ''- список специальніх имен сущностей, для которых сработает событие&nbsp;''on_named'' 
 
**''default_trigger ''- переключатель, который срабатывает, когда сущность называют.
 
**''alwaysShow&nbsp;''(по умолчанию ''false'') - если выставлен в&nbsp;''true'', имя будет всегда показываться над мобом.
 
**''allowNameTagRenaming ''(по умолчанию ''true'') - если выставлен в&nbsp;''true'', сущность можно будет переименовать с помощью бирки.
 
**''name ''- позволяет задать или получить имя сущности, если оно было задано ранее. 
 
*minecraft:position - позволяет управлять положением сущности в мире. При применении мгновнно перемещает сущность в новое расположение. Свойства - координаты ''x, y z'' сущности entity.&nbsp;
 
*minecraft:rotation - возмоляет управлять поворотом сущности. Особое внимание стоит уделить свойствам, поскольку их названия семантически некорректны:
 
**''x'' (по умолчанию 0) - поворот головы вверх-вниз (по оси X). Является состовляющей '''''pitch'''''поворота объекта в общепринятой терминологии.&nbsp;
 
**y (по умолчанию 0) - поворот головы влево-вправо (по оси&nbsp;Y). Является состовляющей '''''yaw&nbsp;'''''поворота объекта в общепринятой терминологии.&nbsp; 
 
*minecraft:shooter - определяет, какими снарядами сущность будет вести дальний бой (стрельбу). Свойства:
 
**''def ''- идентификатор сущности, которая будет испольщована для дальнего боя. Для возможности стрельбы у этой сущности должен быть определен компонент projectile.
 
**''auxVal ''- ID эффекта зелья, который будет применен к сущности при попадании. 
 
*minecraft:spawn_entity - контроллирует способность моба призывать сущность или дроп. В качестве примера из ванильного Minecraft'а - курица, которая несет яйца. Свойста:
 
**''min_wait_time ''- минимальное время между призывами.в секундах. По умолчанию 300 секунд.
 
**''max_wait_time ''- максимальное время между призывами в секундах. По умолчанию 600 секунд.
 
**''spawn_sound ''- строковой ID звука, проигрываемого при спавне сущности.
 
**''spawn_item ''(по умолчанию egg) - если&nbsp;spawn_entity пустой, задает ID предмета, дропаемого сущностью.
 
**''spawn_entity ''- задает сущность, которую необходимо свавнить.
 
**''spawn_method ''- способ появления сущности. По умолчанию - ''born ''(рождение).
 
**''spawn_event ''- событие, вызываемое при спавне сущности. По умолчанию -&nbsp;''minecraft:entity_born''. 
 
*minecraft:teleport - задает возможность телепортации сущности (подобно Эндермену). Для разового перемещения используйте компонент&nbsp;minecraft:position.
 
**''darkTeleportChance ''- вероятность телепорта сущности, если она попадает в темноту. По умолчанию - 0.01.
 
**''lightTeleportChance'' -&nbsp;вероятность телепорта сущности, если она попадает на солнечный свет. По умолчанию - 0.01.
 
**''maxRandomTeleportTime ''- максимальное время в секунду между случайными перемещениями. По умолчанию - 20.0.
 
**''minRandomTeleportTime ''- минимальное время в секунду между случайными перемещениями. По умолчанию - 0.0.
 
**''randomTeleportCube ''- бокс&nbsp;случайной телепортации. Сущность будет телепортирована в приделах этого куба. Задается массивом из трех элементов - размерностей по осям ''x, y, z'' последовательно. По умолчанию -&nbsp;[32.0, 16.0, 32.0].
 
**''randomTeleports ''(по умолчанию ''true'') - если ''true'', сущность будет случайны образом тлепортироваться.
 
**''targetDistance ''- максимальное расстояние, на которое сущность будет телепортироваться во время атаки. По умолчанию - 16.0.
 
**''target_teleport_chance ''- вероятность телепортации, по умолчанию 1.0.&nbsp; 
 
 
 
=== Пользовательские компоненты ===
 
 
 
Пользовательские компоненты - особый вид компонентов, которые могут быть опрделены пользователем, но не дают сущности никакого поведения.&nbsp;Компонент должен быть зарегистрирован в Script Engine, для этого необходимо указать его имя и набор полей в формате name: value. После применения компонент ведет себя как&nbsp;и&nbsp;встроенный: вы можете получить его у сущности, изменить его значения и применить изменения. На данный момент пользовательские компоненты - единственные компоненты, которые могут быть добавлены к сущности на лету. Также они не сохраняются при выходе с уровня, поэтому заново присваивать их сущности необходимо при каждом заходе в мир.&nbsp;
 
 
 
Пример регистрации компонента:
 
<syntaxhighlight lang="Javascript">this.registerComponent("myNamespace:myComponent", { myString: "TamerJeison", myInt: 42, myFloat: 1.0, myArray: [1, 2, 3] });
 
</syntaxhighlight>
 
 
 
&nbsp;
 
</div> </div> </div> </div> </div> </div> </div> </div> </div>
 
 
 
 
== Ссылки ==
 
== Ссылки ==
  

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 или более поздняя (см. Mineprogramming wiki:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!