TileEntity — различия между версиями

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

Текущая версия на 16:52, 5 февраля 2018

Tile entity - технология, добавляемая Core Engine для быстрого создания интерактивных блоков, таких как сундук или печь, модами. Для регистрации tile entity используется модуль TileEntity. Регистрация производится с помощью привязки к какому то ID блока объекта-прототипа, который будет дополнен и клонирован для каждого tile entity в мире.

 

Регистрация прототипа происходит с помощью метода TileEntity.registerPrototype(id блока, прототип);

 

Объект прототипа обладает набором событий, областью для сохраняемых данных и контейнером, если какие то события не нужны данному типу tile entity, то их просто можно не писать. Внутри событий и методов обращения, обращаться к текущему объекту tile entity нужно через ключевое слово this.

 

Разъяснение всех элементов прототипа:

 

{

     defaultValues: {

          // здесь прописаны все сохраняемые поля и их значения по умолчанию, далее они будут скопированы в поле data

     },

     container: ..., // стандартное для всех tile entity поле, содержит объект контейнера для данного tile entity, подробнее в главе про контейнеры

     liquidStorage: ..., // стандартное для всех tile entity поле, содержит объект хранилища жидкости для данного tile entity, подробнее в главе про жидкости


     created: function(){

          // событие, вызывается при создании tile entity

     },

    

     init: function(){

          // событие, вызывается при инициализации (загрузке в мир) tile entity

     },

    

     tick: function(){

          // событие, вызывается каждый тик

     },


     click: function(id, count, data, coords){

          // событие, вызывается при нажатии на блок tile entity, если возвращает истинное значение, то предотвращает открытие интерфейса

          return false;

     },


     destroyBlock: function(coords, player){

          // событие, вызывается, когда tile entity уничтожается игроком

     },


     redstone: function(params){

          // событие, вызывается, когда на tile entity подается сигнал redstone, или же он прекращает подачу, params.power содержит новую мощность сигнала

     },


     projectileHit: function(coords, projectile){

          // событие, вызывается, когда кидаемый предмет разбивается о данный tile entity, coords.x, coords.y, coords.z - координаты, coords.side - сторона

     },


     destroy: function(){

          // вызывается при попытке уничтожить объект tile entity, если возврращает истинное значение, то предотвращает уничтожение объекта (но не блока, если оно было вызвано уничтожением блока)

     },


     getGuiScreen: function(){

          // событие, вызывается при попытке открыть интерфейс, если возвращает объект интерфейса, то он открывается для данного tile entity, подробнее в разделе про интерфейс

     },

    

     requireMoreLiquid: function(liquid, amount){

          // событие, вызывается, когда из внутреннего хранилища жидкости пытаются выкачать больше жидкости типа liquid, чем там есть, на amount ведер, подробнее в главе про жидкости

     },

    

     selfDestroy: function(), // стандартный метод, уничтожает объект tile entity, учтите, что будет вызвано событие destroy

}

 

Пример регистрации прототипа:


IDRegistry.genBlockID("testBlock");

// ...

// создаем блок


TileEntity.registerPrototype(BlockID.testBlock, {

     defaultValues: {

          someValue: 0 // сохраняемое значение someValue, по умолчанию 0

     },


     tick: function(){

          // что то сделать каждый тик, к примеру выводим someValue

          Debug.message(this.data.someValue);

     },

    

     click: function(id, count, data, coords){

          this.data.someValue = 1; // установить значение someValue на 1

     }

    

     // остальные события не трогаем

});