Редактирование:Контейнеры

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
  
 
Контейнер - это объект, позволяющий хранить предметы в слотах, осуществлять операции с ними и так же обладающий методами для интеграции с любым интерфейсом, который открыт для этого контейнера. Произвольный контейнер может быть открыт как любой интерфейс, при этом он будет привязан ко всем слотам интерфейса.
 
Контейнер - это объект, позволяющий хранить предметы в слотах, осуществлять операции с ними и так же обладающий методами для интеграции с любым интерфейсом, который открыт для этого контейнера. Произвольный контейнер может быть открыт как любой интерфейс, при этом он будет привязан ко всем слотам интерфейса.
 +
 +
 
  
 
Каждый объект tile entity в мире по умолчанию обладает контейнером, который автоматически сохраняется и для которого открывается интерфейс, отданый при выполнении события getGuiScreen. Подробнее об этом в уроке по tile entity и ниже.
 
Каждый объект tile entity в мире по умолчанию обладает контейнером, который автоматически сохраняется и для которого открывается интерфейс, отданый при выполнении события getGuiScreen. Подробнее об этом в уроке по tile entity и ниже.
 +
 +
 
  
 
Все специальные контейнеры, такие как инвентарь игрока или сундука наследуют все методы базового контейнера.
 
Все специальные контейнеры, такие как инвентарь игрока или сундука наследуют все методы базового контейнера.
 +
 +
 
  
 
=== Методы ===
 
=== Методы ===
  
 
Создание нового контейнера:
 
Создание нового контейнера:
<pre>var container = new UI.Container();
+
<pre>var container = new UI.Container();</pre>
</pre>
+
 
 +
&nbsp;
  
 
Обращение к встроенному контейнеру внутри tile entity: this.container
 
Обращение к встроенному контейнеру внутри tile entity: this.container
 +
 +
&nbsp;
  
 
=== Работа со слотами ===
 
=== Работа со слотами ===
 +
 +
*getSlot("имя слота") - возвращает объект слота с данным именем, если такого слота нет, создает пустой слот на этом имени и возвращает его. Слот это объект вида {id: id предмета, count: кол-во предмета, data: data предмета}. К слотам интерфейса привязываются слоты с такими же именами, как и у элементов этих слотов в интерфейсе.
 +
 +
&nbsp;
  
 
Пример:
 
Пример:
Строка 31: Строка 44:
 
     }
 
     }
  
}
+
}</pre>
</pre>
+
 
 +
&nbsp;
  
 
А прототип tile entity имеет событие клика предметом по нему:
 
А прототип tile entity имеет событие клика предметом по нему:
Строка 53: Строка 67:
 
}</pre>
 
}</pre>
  
<br/> Таким образом каждый раз, когда мы будем тапать предметом по блоку данного tile entity, то в слоте test_slot будет лежать тот же самый предмет, что и в руке.
+
&nbsp;
 +
 
 +
Таким образом каждый раз, когда мы будем тапать предметом по блоку данного tile entity, то в слоте test_slot будет лежать тот же самый предмет, что и в руке.
  
=== Работа с контейнером ===
+
&nbsp;
  
*getSlot("имя слота") - возвращает объект слота с данным именем, если такого слота нет, создает пустой слот на этом имени и возвращает его. Слот это объект вида {id: id предмета, count: кол-во предмета, data: data предмета}. К слотам интерфейса привязываются слоты с такими же именами, как и у элементов этих слотов в интерфейсе.
 
 
*setSlot("имя слота", id, кол-во, data) - устанавливает переданный предмет в слот с данным именем. Краткая запись того, что было показано в примере.  
 
*setSlot("имя слота", id, кол-во, data) - устанавливает переданный предмет в слот с данным именем. Краткая запись того, что было показано в примере.  
 
*clearSlot("имя слота") - очищает слот с данным именем  
 
*clearSlot("имя слота") - очищает слот с данным именем  
Строка 65: Строка 80:
 
*refreshSlots() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов обновляет данные о слотах в контейнере  
 
*refreshSlots() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов обновляет данные о слотах в контейнере  
 
*applyChanges() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов сохраняет изменения, которые были произведены на контейнере  
 
*applyChanges() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов сохраняет изменения, которые были произведены на контейнере  
 +
 +
&nbsp;
 +
 +
&nbsp;
 +
 +
=== Работа с интерфейсом ===
 +
 
*openAs(объект интерфейса любого типа) - открывает данный объект интерфейса и привязывается к нему  
 
*openAs(объект интерфейса любого типа) - открывает данный объект интерфейса и привязывается к нему  
 
*isOpened() - возвращает, открыт ли этот контейнер для какого-то интерфейса  
 
*isOpened() - возвращает, открыт ли этот контейнер для какого-то интерфейса  

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