Редактирование:TileEntity

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
<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="b-pageLayout b-pageLayout__xs" data-layout="xs" id="pageLayout"><div class="b-pageContent m-pageContent__withoutLeft m-pageContent__withoutRight" id="pageContent">
 
<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="b-pageLayout b-pageLayout__xs" data-layout="xs" id="pageLayout"><div class="b-pageContent m-pageContent__withoutLeft m-pageContent__withoutRight" id="pageContent">
Tile entity - технология, добавляемая Core Engine для быстрого создания интерактивных блоков, таких как сундук или печь, модами. Для регистрации tile entity используется модуль TileEntity. Регистрация производится с помощью привязки к какому то ID блока объекта-прототипа, который будет дополнен и клонирован для каждого tile entity в мире.
+
{| class="b-pageContent__layout"
 +
|-
 +
| class="b-pageContent__side" |
 +
{| id="internal_wrapper"
 +
|-
 +
| class="b-pageContent__side m-pageContent__side__middle" id="pageContentMiddle" | <div class="b-workZone m-workZone__withoutSideNav" id="workZone" style="height: auto">
 +
{| class="b-workZone__layout"
 +
|-
 +
| class="b-workZone__side m-workZone__side__article" id="workZone_article" | <div class="b-workZone__content" id="workZone_article__content"><div class="b-article" id="article" style="height: auto"><div class="b-article__preWrapper" style="height: auto"><div class="b-article__wrapper" style="height: auto;  min-height: 0px"><div class="b-article__innerWrapper" id="description_on_page_placeholder" style="height: auto"><div class="description_on_page"><div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">Tile entity - технология, добавляемая Core Engine для быстрого создания интерактивных блоков, таких как сундук или печь, модами. Для регистрации tile entity используется модуль TileEntity. Регистрация производится с помощью привязки к какому то ID блока объекта-прототипа, который будет дополнен и клонирован для каждого tile entity в мире.</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">&nbsp;</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">Регистрация прототипа происходит с помощью метода TileEntity.registerPrototype(id блока, прототип);</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">&nbsp;</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">Объект прототипа обладает набором событий, областью для сохраняемых данных и контейнером, если какие то события не нужны данному типу tile entity, то их просто можно не писать. Внутри событий и методов обращения, обращаться к текущему объекту tile entity нужно через ключевое слово this.</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">&nbsp;</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">Разъяснение всех элементов прототипа:</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">&nbsp;</div> <pre class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr"><span class="code">{</span>
  
&nbsp;
+
<span class="code">    defaultValues: {</span>
  
Регистрация прототипа происходит с помощью метода TileEntity.registerPrototype(id блока, прототип);
+
<span class="code">          // здесь прописаны все сохраняемые поля и их значения по умолчанию, далее они будут скопированы в поле data</span>
  
&nbsp;
+
<span class="code">    },</span>
  
Объект прототипа обладает набором событий, областью для сохраняемых данных и контейнером, если какие то события не нужны данному типу tile entity, то их просто можно не писать. Внутри событий и методов обращения, обращаться к текущему объекту tile entity нужно через ключевое слово this.
+
<span class="code">    container: ..., // стандартное для всех tile entity поле, содержит объект контейнера для данного tile entity, подробнее в главе про контейнеры</span>
  
&nbsp;
+
<span class="code">    liquidStorage: ..., // стандартное для всех tile entity поле, содержит объект хранилища жидкости для данного tile entity, подробнее в главе про жидкости</span>
  
Разъяснение всех элементов прототипа:
 
  
&nbsp;
+
<span class="code">     created: function(){</span>
<pre>{
 
  
    defaultValues: {
+
<span class="code">          // событие, вызывается при создании tile entity</span>
  
          // здесь прописаны все сохраняемые поля и их значения по умолчанию, далее они будут скопированы в поле data
+
<span class="code">    },</span>
  
    },
+
<span class="code">    </span>
  
    container: ..., // стандартное для всех tile entity поле, содержит объект контейнера для данного tile entity, подробнее в главе про контейнеры
+
<span class="code">    init: function(){</span>
  
    liquidStorage: ..., // стандартное для всех tile entity поле, содержит объект хранилища жидкости для данного tile entity, подробнее в главе про жидкости
+
<span class="code">          // событие, вызывается при инициализации (загрузке в мир) tile entity</span>
  
 +
<span class="code">    },</span>
  
    created: function(){
+
<span class="code">    </span>
  
          // событие, вызывается при создании tile entity
+
<span class="code">    tick: function(){</span>
  
    },
+
<span class="code">          // событие, вызывается каждый тик</span>
  
      
+
<span class="code">     },</span>
  
    init: function(){
 
  
          // событие, вызывается при инициализации (загрузке в мир) tile entity
+
<span class="code">    click: function(id, count, data, coords){</span>
  
    },
+
<span class="code">          // событие, вызывается при нажатии на блок tile entity, если возвращает истинное значение, то предотвращает открытие интерфейса</span>
  
   
+
<span class="code">          return false;</span>
  
    tick: function(){
+
<span class="code">    },</span>
  
          // событие, вызывается каждый тик
 
  
    },
+
<span class="code">    destroyBlock: function(coords, player){</span>
  
 +
<span class="code">          // событие, вызывается, когда tile entity уничтожается игроком</span>
  
    click: function(id, count, data, coords){
+
<span class="code">    },</span>
  
          // событие, вызывается при нажатии на блок tile entity, если возвращает истинное значение, то предотвращает открытие интерфейса
 
  
          return false;
+
<span class="code">    redstone: function(params){</span>
  
    },
+
<span class="code">          // событие, вызывается, когда на tile entity подается сигнал redstone, или же он прекращает подачу, params.power содержит новую мощность сигнала</span>
  
 +
<span class="code">    },</span>
  
    destroyBlock: function(coords, player){
 
  
          // событие, вызывается, когда tile entity уничтожается игроком
+
<span class="code">    projectileHit: function(coords, projectile){</span>
  
    },
+
<span class="code">          // событие, вызывается, когда кидаемый предмет разбивается о данный tile entity, coords.x, coords.y, coords.z - координаты, coords.side - сторона</span>
  
 +
<span class="code">    },</span>
  
    redstone: function(params){
 
  
          // событие, вызывается, когда на tile entity подается сигнал redstone, или же он прекращает подачу, params.power содержит новую мощность сигнала
+
<span class="code">    destroy: function(){</span>
  
    },
+
<span class="code">          // вызывается при попытке уничтожить объект tile entity, если возврращает истинное значение, то предотвращает уничтожение объекта (но не блока, если оно было вызвано уничтожением блока)</span>
  
 +
<span class="code">    },</span>
  
    projectileHit: function(coords, projectile){
 
  
          // событие, вызывается, когда кидаемый предмет разбивается о данный tile entity, coords.x, coords.y, coords.z - координаты, coords.side - сторона
+
<span class="code">    getGuiScreen: function(){</span>
  
    },
+
<span class="code">          // событие, вызывается при попытке открыть интерфейс, если возвращает объект интерфейса, то он открывается для данного tile entity, подробнее в разделе про интерфейс</span>
  
 +
<span class="code">    },</span>
  
    destroy: function(){
+
<span class="code">    </span>
  
          // вызывается при попытке уничтожить объект tile entity, если возврращает истинное значение, то предотвращает уничтожение объекта (но не блока, если оно было вызвано уничтожением блока)
+
<span class="code">    requireMoreLiquid: function(liquid, amount){</span>
  
    },
+
<span class="code">          // событие, вызывается, когда из внутреннего хранилища жидкости пытаются выкачать больше жидкости типа liquid, чем там есть, на amount ведер, подробнее в главе про жидкости</span>
  
 +
<span class="code">    },</span>
  
    getGuiScreen: function(){
+
<span class="code">    </span>
  
          // событие, вызывается при попытке открыть интерфейс, если возвращает объект интерфейса, то он открывается для данного tile entity, подробнее в разделе про интерфейс
+
<span class="code">    selfDestroy: function(), // стандартный метод, уничтожает объект tile entity, учтите, что будет вызвано событие destroy</span>
  
    },
+
<span class="code">}</span>
  
   
+
</pre>
 +
<div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">Пример регистрации прототипа:</div> <div class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr">&nbsp;</div> <pre class="p" style="text-align: left;  text-indent: 0px;  margin-left: 0px;  direction: ltr"><span class="code">IDRegistry.genBlockID("testBlock");</span>
  
    requireMoreLiquid: function(liquid, amount){
+
<span class="code">// ...</span>
  
          // событие, вызывается, когда из внутреннего хранилища жидкости пытаются выкачать больше жидкости типа liquid, чем там есть, на amount ведер, подробнее в главе про жидкости
+
<span class="code">// создаем блок</span>
  
    },
 
  
   
+
<span class="code">TileEntity.registerPrototype(BlockID.testBlock, {</span>
  
    selfDestroy: function(), // стандартный метод, уничтожает объект tile entity, учтите, что будет вызвано событие destroy
+
<span class="code">    defaultValues: {</span>
  
}</pre>
+
<span class="code">          someValue: 0 // сохраняемое значение someValue, по умолчанию 0</span>
  
&nbsp;
+
<span class="code">    },</span>
  
Пример регистрации прототипа:
 
<pre>
 
  
IDRegistry.genBlockID("testBlock");
+
<span class="code">    tick: function(){</span>
  
// ...
+
<span class="code">          // что то сделать каждый тик, к примеру выводим someValue</span>
  
// создаем блок
+
<span class="code">          Debug.message(this.data.someValue);</span>
  
 +
<span class="code">    },</span>
  
TileEntity.registerPrototype(BlockID.testBlock, {
+
<span class="code">    </span>
  
    defaultValues: {
+
<span class="code">    click: function(id, count, data, coords){</span>
  
          someValue: 0 // сохраняемое значение someValue, по умолчанию 0
+
<span class="code">          this.data.someValue = 1; // установить значение someValue на 1</span>
  
    },
+
<span class="code">    }</span>
  
 +
<span class="code">    </span>
  
    tick: function(){
+
<span class="code">    // остальные события не трогаем</span>
  
          // что то сделать каждый тик, к примеру выводим someValue
+
<span class="code">});</span></pre>
 +
</div> </div> </div> </div> </div> </div>
 +
|}
 +
</div>
 +
|}
  
          Debug.message(this.data.someValue);
+
|}
 
 
    },
 
 
 
   
 
 
 
    click: function(id, count, data, coords){
 
 
 
          this.data.someValue = 1; // установить значение someValue на 1
 
 
 
    }
 
 
 
   
 
 
 
    // остальные события не трогаем
 
 
 
});</pre>
 
 
</div> </div> </div> </div>
 
</div> </div> </div> </div>

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