Редактирование:Продвинутое создание блоков и предметов

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
<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="b-pageLayout b-pageLayout__xs" data-layout="xs" id="pageLayout"><div class="b-pageContent m-pageContent__withoutLeft m-pageContent__withoutRight" id="pageContent">
+
<div class="mw-parser-output"><div class="mw-parser-output"><div class="b-pageLayout b-pageLayout__xs" data-layout="xs" id="pageLayout"><div class="b-pageContent m-pageContent__withoutLeft m-pageContent__withoutRight" id="pageContent">
 
Кроме создания простейших блоков и предметов, Core Engine позволяет настраивать их и добавлять различные события для конкретного блока или предмета.
 
Кроме создания простейших блоков и предметов, Core Engine позволяет настраивать их и добавлять различные события для конкретного блока или предмета.
<div class="mw-parser-output"><div class="mw-parser-output">
+
 
 
<div class="mw-parser-output">
 
<div class="mw-parser-output">
 
=== Специальные типы блоков ===
 
=== Специальные типы блоков ===
  
Характеристики блока указывается в методах&nbsp;Block.createBlock и Block.createBlockWithRotation третьим параметром.&nbsp;Чтобы не повторять их для каждого блока, можно зарегистрировать специальный тип методом&nbsp;Block.createSpecialType(название, объект характеристик) и использовать название спец. типа.
+
Чтобы создать блок с параметрами, которые отличаются от стандартных (свечение, модель), используются специальные типы блоков. Регистрируются они с помощью функции Block.createSpecialType(объект характеристик) - функция принимает объект характеристик, которые нужно изменить и отдает специальный тип блока с этими характеристиками.
  
Все характеристики, их значения по умолчанию и разъяснение:
+
Специальный тип, созданный этой функцией передается в функцию Block.createBlock и Block.createBlockWithRotation третим параметром, чтобы блок был создан для данного специального типа. На одном специальном типе может быть создано суммарно до 16 вариаций различных блоков.
 +
 
 +
Все характеристики, их значения по-умолчанию и разъяснение:
 
<syntaxhighlight lang="Javascript">{
 
<syntaxhighlight lang="Javascript">{
     base: 0, // блок из MCPE, который будет взят за основу в создании блока, могут быть скопированы некоторые свойства и материал
+
     base: 20, // блок из MCPE, который будет взят за основу в создании блока, могут быть скопированы некоторые свойства и материал
     solid: false, // является ли блок твёрдым
+
     opaque: false, // непрозрачность, если true, то внутри блока мобы будут получать урон, а так же места соприкосновения этого блока с другими не будут отрисованы
     rendertype: 0, // тип модели
+
     rendertype: 0, // тип модели, не работает в 0.15.7 и выше
     renderlayer: 4, // тип рендера, 1: прозрачный, 2: непрозрачный, 4: прозрачный, но исчезает вдали
+
     renderlayer: 4, // тип рендера, 0: непрозрычный, 1: прозрачный, 2 : полупрозрачный - не работает?, 3: ??, 4: означает, что прозрачные части будут отрисованы прозрачными, а не черными
 
     destroytime: 1, // время ломания блока, время уничтожения зависит от используемого инструмента, -1: неразрушимый.
 
     destroytime: 1, // время ломания блока, время уничтожения зависит от используемого инструмента, -1: неразрушимый.
    explosionres: 3, // взрывоустойчивость
+
     redstoneconsumer: true, // будет ли происходить событие изменения редстоун-сигнала для этого блока
     friction: 0.6, // коэффициент скольжения
 
 
     lightopacity: 1, // непрозрачность для света, сколько света будет поглощаться при прохождении через этот блок, 0 - полностью прозрачен, 15 - полностью непрозрачен
 
     lightopacity: 1, // непрозрачность для света, сколько света будет поглощаться при прохождении через этот блок, 0 - полностью прозрачен, 15 - полностью непрозрачен
 
     lightlevel: 0, // свечение блока, 0 - нет свечения, 15 - максимальное свечение
 
     lightlevel: 0, // свечение блока, 0 - нет свечения, 15 - максимальное свечение
    translucency: 1, // полупрозрачность, число от 0 до 1, влияет на наложение теней на блок. 0 - нормальные тени, 1 - нет теней и блок выглядит ярче остальных.
+
     explosionres: 2, // взрывоустойчивость
     renderallfaces: true, // отрисовывает все стороны прозрачных блоков,
+
     color: [0xFFFFFF] // цвет для каждой стороны в формате 0xRRGGBB, если в массиве 1 элемент, то цвет будет установлен для всего блока
     mapcolor: 0, // цвет блока на карте
+
}</syntaxhighlight>
     sound: "default" // тип звука для блока
+
====Типы RenderLayer====
}
+
<syntaxhighlight lang="Javascript">  opaque = 0;//непрозрачный блок
 +
  opaque_seasons = 1;//делает блок чуть темнее, но делает слегка странную прозрачность
 +
  doubleside = 2;//делает сильно полупрозрачным с 2х сторон, а с других сторон нормально.
 +
  alpha_single_side = 4;//делает что-то непонятное)
 +
  alpha_seasons = 5;//не работает
 +
  blend = 6;//не работает
 +
  water = 7;//делает блок красным)
 +
  far = 9;//не работает
 +
  seasons_far = 10;//делает блок полностью прозрачным P.s может вылетать очень часто и может сломать мир
 +
  seasons_far_alpha = 11;//тоже самое
 +
  alpha = 4099;//вылет
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==== Пример: ====
+
====Пример: ====
 
 
 
Пример создания специального типа блока и самого блока:
 
Пример создания специального типа блока и самого блока:
<syntaxhighlight lang="Javascript">Block.createSpecialType("weak_light", { // блок этого типа будет абсолютно прозрачен для света и сам будет слабо светиться
+
<syntaxhighlight lang="Javascript">var BLOCK_TYPE_LOW_LIGHT = Block.createSpecialType({ // блок этого типа будет абсолютно прозрачен для света и сам будет слабо светиться
 
     lightlevel: 11,
 
     lightlevel: 11,
 
     lightopacity: 0
 
     lightopacity: 0
 
});
 
});
IDRegistry.genBlockID("testBlock"); // регистрация id
+
IDRegistry.genBlockID("testBlock"); // регистрациа id
 
Block.createBlock("testBlock", [
 
Block.createBlock("testBlock", [
 
     {name: "test block", texture: [["obsidian", 0], ["obsidian", 0], ["obsidian", 0], ["obsidian", 0], ["obsidian", 0], ["obsidian", 0]]}
 
     {name: "test block", texture: [["obsidian", 0], ["obsidian", 0], ["obsidian", 0], ["obsidian", 0], ["obsidian", 0], ["obsidian", 0]]}
], "weak_light"); // создаем блок на данном специальном типе</syntaxhighlight>
+
], BLOCK_TYPE_LOW_LIGHT); // создаем блок на данном специальном типе</syntaxhighlight>
 
</div>
 
</div>
  
Строка 43: Строка 53:
  
 
Функция дропа имеет такой формат:
 
Функция дропа имеет такой формат:
<syntaxhighlight lang="Javascript">function(coords, id, data, toolLevel, enchantData, item, region) {
+
<syntaxhighlight lang="Javascript">function(coords, id, data, diggingLevel, toolLevel){
 
     // coords - объект, содержащий координаты разрушенного блока - {x: , y: , z: } - coords.x, coords.y, coords.z
 
     // coords - объект, содержащий координаты разрушенного блока - {x: , y: , z: } - coords.x, coords.y, coords.z
     // id, data - id и data блока
+
     // id, data - id и data блока, id всегда совпадает с тем, на который была зарегистрирована функция и нужно, если одинаковая функция регистрируется на разные блоки
     // toolLevel - уровень инструмента в руке
+
     // diggingLevel - уровень ломания блока, где рука или инструмент другого типа - 0. Если же инструмент совпадает с материалом блока, то уровень будет равен уровню инструмента
     // enchantData - зачарования инструмента
+
     // toolLevel -  уровень инструмента в руке, не зависит от самого блока
    // item - предмет в руке
+
     // если блок что то дропает, эта функция должна вернуть массив из предметов, которые надо дропнуть, каждый предмет имеет формат [id, count, data]
     // если блок что-то дропает, эта функция должна вернуть массив из предметов, которые надо дропнуть, каждый предмет имеет формат [id, count, data] или [id, count, data, ExtraData]
 
 
}</syntaxhighlight>
 
}</syntaxhighlight>
  
Строка 93: Строка 102:
 
=== Установка свойств предмета ===
 
=== Установка свойств предмета ===
  
Для установки свойств предметов используются следующие функции:
+
Для установки свойств предметов используется функция Item.describeItem("строковый id", объект описания).
 +
 
 +
Все параметры в объекте описания, их стандартные значения и описание:
 +
<syntaxhighlight lang="Javascript">{
 +
     category: 0, // категория в креативе
 +
     enchant: {value: 0, type: 0}, // тип зачарования
 +
     toolRender: false, // рендер в руке, как инструмент
 +
     maxDamage: 0, // максимальный дамаг предмета (шкала прочности)
 +
     stackByData: false, // стакается по data
 +
     properties: {}, // родной объект параметров MCPE
 +
     useAnimation: 0 // анимация использозвания
 +
}</syntaxhighlight>
 +
 
 +
Функции - аналоги параметров:
  
 
*Item.setCategory(id, category) - аналог параметра category  
 
*Item.setCategory(id, category) - аналог параметра category  
Строка 110: Строка 132:
 
*Item.getUseAnimation(id) - отдает анимацию использования  
 
*Item.getUseAnimation(id) - отдает анимацию использования  
 
*Item.isValid(id, data) - возвращает, существует ли данный предмет  
 
*Item.isValid(id, data) - возвращает, существует ли данный предмет  
*Item.isNativeItem(id) - возвращает, является ли этот предмет предметом из MCPE, а не из модов  
+
*Item.isNativeItem(id) - возвращает, является ли этот предмет предметом из MCPE, а не из модов
 
+
====Категории предметов====
==== Категории предметов (не работают) ====
 
 
 
&nbsp;
 
 
<syntaxhighlight lang="Javascript">  DECORATION = 2;//декоративный предмет(?)
 
<syntaxhighlight lang="Javascript">  DECORATION = 2;//декоративный предмет(?)
 
   FOOD = 4;//еда
 
   FOOD = 4;//еда
Строка 144: Строка 163:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
</div> </div> </div> </div> </div> </div> </div>
+
</div> </div> </div> </div>

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