Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Стартап [ПЕРЕВОД] Собственные модели предметов в 1.9 и выше

Переводить ли статьи со spigotmc дальше?

  • Да — это нужно русскому сообществу разработчиков.

    3 голосов 75,0%
  • Да — статью на русском читать легче, чем на английском.

    0 голосов 0,0%
  • Нет — это уже неактуально и является "баяном".

    0 голосов 0,0%
  • Нет — подавляющее большинство разработчиков знают английский.

    0 голосов 0,0%
  • Да — другое.

    1 голосов 25,0%
  • Нет — другое.

    0 голосов 0,0%

  • Опрос закрыт .

Dexel

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
SiRiuS_OSiRiuS
Оригинал

ЦЕЛЬ
Одна из самых классных вещей в 1.9 заключается в том, что предметы могут иметь различные модели в зависимости от их прочности. Предположительно, таким образом вы можете показать, что предметы изношены, но в то же время мы можем использовать это, чтобы добавить тысячи новых предметов в Minecraft!

Например, всё, что показано здесь, является деревянной мотыгой с разными значениями прочности:
c2ca89e9861a861d29af16880e35e677160ea979


КОД
Эта часть банально проста. Возьмите предмет с прочностью (например, инструмент) и создайте ItemStack для этого предмета с установленной прочностью. Давайте для примера используем прочность 1:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
Этот код даст нам немного поломанную деревянную мотыгу. Как-то так:
6efcb96a63eab34f8e54f8917dc00ad144d83c88

Но, естественно, мы не хотим, чтобы показывалась полоска прочности предмета, и не хотим, чтобы прочность изменялась, когда предмет используется как инструмент. К счастью, для этого есть тег!

Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true); // Для версий 1.11 и выше
customItem.setItemMeta(meta);
Этот код даёт нам следующий предмет:
4d86eb5880900d6ed945f85fe38f560458063b1c

Хорошо, больше нет полоски прочности! Но если мы создаём свой предмет, вероятно, мы не захотим всего этого "ванильного" описания. К счастью, и для этого есть API! Вы можете добавить флаг предмету на скрытие описания, как-то так:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE);
customItem.setItemMeta(meta);
e0a0ad8256c852dfc87b8ed1f6a6a9780bedb4eb

Прекрасно, теперь у нас есть предмет с установленной прочностью, которая не будет меняться, и в описании нет ничего странного.

На этом часть кода заканчивается! Возможно, вы захотите установить название предмета или добавить описание, но я оставлю это вам.

Этот предмет готов стать собственным предметом вашей мечты... ему просто нужна новая текстура.


РЕСУРСПАК
Здесь всё немного сложнее. Если у вас нет опыта в создании ресурспака, это будет довольно сложно. Создайте новую пустую папку и положите в неё файл pack.mcmeta, он будет выглядеть как-то так:
Код:
{
  "pack": {
    "pack_format": 3,
    "description": "Официальный Магический Ресурспак от elMakers"
  }
}
!!! Для Minecraft 1.10 и ниже используйте pack_format: 2

Затем добавьте все подпапки, идущие вплоть до "assets/minecraft/models/item".

В папке предмета создайте новый файл под названием wooden_hoe.json. Он будет "хранилищем" для всех ваших собственных предметов. Он говорит клиенту, какие модели использовать при определённой прочности деревянной мотыги.

Этот файл будет выглядеть как-то так:


Код:
{
  "parent": "item/handheld",
  "textures": {
    "layer0": "items/wood_hoe"
  },
  "overrides": [
    {"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"}
  ]
}
Хорошо, давайте на этом остановимся.

Мы перезаписываем деревянную мотыгу, но исходя из базовой версии. "parent" и "textures" указывают клиенту использовать мотыгу по умолчанию. Это значит, что мотыга без повреждений будет нормально смотреться.

Теперь для новой вещи - блок "overrides" позволяет вам указывать разные модели для использования в зависимости от определённых параметров предмета. Эти параметры называются "predicades", в нашем случае сфокусируемся на параметре "damage".

Модель предмета будет варьироваться в зависимости от повреждения в виде какого-то процента от 0 до 1. Таким образом, значение "0.016666" исходит из соотношения "1/60" - потому что я хочу применить свою модель для мотыги с повреждением 1, а максимальная прочность деревянной мотыги - 60.

Посетите Minecraft вики, чтобы увидеть список прочностей предметов: https://minecraft-ru.gamepedia.com/Мотыга


Вы можете добавлять сколько угодно моделей, вплоть до максимальной прочности предмета - просто для каждой делайте "x/60".

Также вы можете использовать этот сайт, чтобы автоматически сгенерировать шаблон указанного вида инструмента без математических рассчётов:
http://accidentalgames.com/media/durabilityModels.php

Сохранение "ванильных" предметов
Если вы хотите по-прежнему использовать "ванильные" предметы с работающей прочностью, это можно реализовать!
Добавьте ещё одну запись в ваш файл с моделью, чтобы конец этого файла в итоге выглядел примерно так:
Код:
{
  "parent": "item/handheld",
  "textures": {
    "layer0": "items/wood_hoe"
  },
  "overrides": [
    {"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"},
    {"predicate": {"damaged": 1, "damage": 0}, "model": "item/wooden_hoe"}
  ]
}
Это заставит повреждённые версии предмета продолжить использовать основную модель. Обратите внимание, если вы использовали этот JSON-генератор, вам придётся изменить последнюю запись - она должна обращаться к названию модели, например, wooden_hoe вместо wood_hoe.

И, наконец, положите модель предмета в папку "item" в ресурспаке, в данном случае модель будет называться "my_cool_custom_item.json". (Создание собственных моделей предметов не является целью данного туториала, я думаю, в Интернете полно видеоуроков по этой теме. Или, в конце концов, можете использовать Cubik).

Заархивируйте ваш ресурспак в формате .zip в папку <minecraft>/resourcepacks. После этого вы сможете поставить этот ресурспак и увидеть ваш предмет!
bc72f045a5a55d73334ef403fa5e23b815427295


Если что-то не получилось, посмотрите структуру ресурспака из этого туториала на GitHub:
https://github.com/elBukkit/MagicPlugin/tree/master/Magic/src/resource-pack/default

ФИНАЛЬНЫЕ АККОРДЫ
Когда у вас всё получилось, вы можете рассмотреть следующие вещи:
  • Чем выше максимальная прочность предмета, тем больше моделей вы сможете сделать. У алмазной мотыги максимальная прочность - 1,562 (!)
  • Когда настало время отправлять ресурспак игрокам, вам нужно будет где-то разместить его! Я думаю, Dropbox подойдёт, просто получите прямую ссылку и добавьте её в файл server.properties.
  • Если вы собираетесь обновлять ресурспак, имейте в виду, что вам также придётся добавить хэш SHA1 в ваш server.properties. Или для каждого "обновления" переименовывать ресурспак. Иначе клиенты не станут заново загружать его.
  • В 1.9 есть ещё одна крутая вещь - предметы можно носить как шапки, и они будут показываться в игре! Для этого нужно добавить блок отображения "head" в json-файл модели. Короче, https://github.com/elBukkit/MagicPl...ecraft/models/item/custom/magic_hat.json#L587
Я надеюсь, эта статья поможет вам. Просьба в личных сообщениях указать на смысловые или ошибки в переводе.
 
Последнее редактирование:
Знал про эту тему уже давно, узнал почти сразу как вышла 1.9.
В целом неплохо, но жаль прочность убивается. А обрабатывать её вручную не хочется...
По переводу нареканий вроде нету.
 
Не актуально же для школодюпосирвиров. Там обычно гибридпротокол 1.8++. Школота быстрее повесится, чем обновит сервер до 1.9 и выше и уберет протоколсапорт или виаверсион.
 
Не актуально же для школодюпосирвиров. Там обычно гибридпротокол 1.8++. Школота быстрее повесится, чем обновит сервер до 1.9 и выше и уберет протоколсапорт или виаверсион.
Всегда искренне надеюсь, что школота или поумнеет (UPD: как произошло со мной - года 3 назад я сидел только на 1.7.2, потом только на 1.5.2, потом только на 1.8, а уже потом пошёл на новизну), или бросит эту тему.
 
Последнее редактирование:
Оригинал

ЦЕЛЬ
Одна из самых классных вещей в 1.9 заключается в том, что предметы могут иметь различные модели в зависимости от их прочности. Предположительно, таким образом вы можете показать, что предметы изношены, но в то же время мы можем использовать это, чтобы добавить тысячи новых предметов в Minecraft!

Например, всё, что показано здесь, является деревянной мотыгой с разными значениями прочности:
c2ca89e9861a861d29af16880e35e677160ea979


КОД
Эта часть банально проста. Возьмите предмет с прочностью (например, инструмент) и создайте ItemStack для этого предмета с установленной прочностью. Давайте для примера используем прочность 1:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
Этот код даст нам немного поломанную деревянную мотыгу. Как-то так:
6efcb96a63eab34f8e54f8917dc00ad144d83c88

Но, естественно, мы не хотим, чтобы показывалась полоска прочности предмета, и не хотим, чтобы прочность изменялась, когда предмет используется как инструмент. К счастью, для этого есть тег!

Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true); // Для версий 1.11 и выше
customItem.setItemMeta(meta);
Этот код даёт нам следующий предмет:
4d86eb5880900d6ed945f85fe38f560458063b1c

Хорошо, больше нет полоски прочности! Но если мы создаём свой предмет, вероятно, мы не захотим всего этого "ванильного" описания. К счастью, и для этого есть API! Вы можете добавить флаг предмету на скрытие описания, как-то так:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE);
customItem.setItemMeta(meta);
e0a0ad8256c852dfc87b8ed1f6a6a9780bedb4eb

Прекрасно, теперь у нас есть предмет с установленной прочностью, которая не будет меняться, и в описании нет ничего странного.

На этом часть кода заканчивается! Возможно, вы захотите установить название предмета или добавить описание, но я оставлю это вам.

Этот предмет готов стать собственным предметом вашей мечты... ему просто нужна новая текстура.


РЕСУРСПАК
Здесь всё немного сложнее. Если у вас нет опыта в создании ресурспака, это будет довольно сложно. Создайте новую пустую папку и положите в неё файл pack.mcmeta, он будет выглядеть как-то так:
Код:
{
  "pack": {
    "pack_format": 3,
    "description": "Официальный Магический Ресурспак от elMakers"
  }
}
!!! Для Minecraft 1.10 и ниже используйте pack_format: 2

Затем добавьте все подпапки, идущие вплоть до "assets/minecraft/models/item".

В папке предмета создайте новый файл под названием wooden_hoe.json. Он будет "хранилищем" для всех ваших собственных предметов. Он говорит клиенту, какие модели использовать при определённой прочности деревянной мотыги.

Этот файл будет выглядеть как-то так:


Код:
{
  "parent": "item/handheld",
  "textures": {
    "layer0": "items/wood_hoe"
  },
  "overrides": [
    {"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"}
  ]
}
Хорошо, давайте на этом остановимся.

Мы перезаписываем деревянную мотыгу, но исходя из базовой версии. "parent" и "textures" указывают клиенту использовать мотыгу по умолчанию. Это значит, что мотыга без повреждений будет нормально смотреться.

Теперь для новой вещи - блок "overrides" позволяет вам указывать разные модели для использования в зависимости от определённых параметров предмета. Эти параметры называются "predicades", в нашем случае сфокусируемся на параметре "damage".

Модель предмета будет варьироваться в зависимости от повреждения в виде какого-то процента от 0 до 1. Таким образом, значение "0.016666" исходит из соотношения "1/60" - потому что я хочу применить свою модель для мотыги с повреждением 1, а максимальная прочность деревянной мотыги - 60.

Посетите Minecraft вики, чтобы увидеть список прочностей предметов: https://minecraft-ru.gamepedia.com/Мотыга


Вы можете добавлять сколько угодно моделей, вплоть до максимальной прочности предмета - просто для каждой делайте "x/60".

Также вы можете использовать этот сайт, чтобы автоматически сгенерировать шаблон указанного вида инструмента без математических рассчётов:
http://accidentalgames.com/media/durabilityModels.php

Сохранение "ванильных" предметов
Если вы хотите по-прежнему использовать "ванильные" предметы с работающей прочностью, это можно реализовать!
Добавьте ещё одну запись в ваш файл с моделью, чтобы конец этого файла в итоге выглядел примерно так:
Код:
{
  "parent": "item/handheld",
  "textures": {
    "layer0": "items/wood_hoe"
  },
  "overrides": [
    {"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"},
    {"predicate": {"damaged": 1, "damage": 0}, "model": "item/wooden_hoe"}
  ]
}
Это заставит повреждённые версии предмета продолжить использовать основную модель. Обратите внимание, если вы использовали этот JSON-генератор, вам придётся изменить последнюю запись - она должна обращаться к названию модели, например, wooden_hoe вместо wood_hoe.

И, наконец, положите модель предмета в папку "item" в ресурспаке, в данном случае модель будет называться "my_cool_custom_item.json". (Создание собственных моделей предметов не является целью данного туториала, я думаю, в Интернете полно видеоуроков по этой теме. Или, в конце концов, можете использовать Cubik).

Заархивируйте ваш ресурспак в формате .zip в папку <minecraft>/resourcepacks. После этого вы сможете поставить этот ресурспак и увидеть ваш предмет!
bc72f045a5a55d73334ef403fa5e23b815427295


Если что-то не получилось, посмотрите структуру ресурспака из этого туториала на GitHub:
https://github.com/elBukkit/MagicPlugin/tree/master/Magic/src/resource-pack/default

ФИНАЛЬНЫЕ АККОРДЫ
Когда у вас всё получилось, вы можете рассмотреть следующие вещи:
  • Чем выше максимальная прочность предмета, тем больше моделей вы сможете сделать. У алмазной мотыги максимальная прочность - 1,562 (!)
  • Когда настало время отправлять ресурспак игрокам, вам нужно будет где-то разместить его! Я думаю, Dropbox подойдёт, просто получите прямую ссылку и добавьте её в файл server.properties.
  • Если вы собираетесь обновлять ресурспак, имейте в виду, что вам также придётся добавить хэш SHA1 в ваш server.properties. Или для каждого "обновления" переименовывать ресурспак. Иначе клиенты не станут заново загружать его.
  • В 1.9 есть ещё одна крутая вещь - предметы можно носить как шапки, и они будут показываться в игре! Для этого нужно добавить блок отображения "head" в json-файл модели. Короче, https://github.com/elBukkit/MagicPl...ecraft/models/item/custom/magic_hat.json#L587
Я надеюсь, эта статья поможет вам. Просьба в личных сообщениях указать на смысловые или ошибки в переводе.
А возможно сделать разные текстуры в зависимости от дисплейнейма (кастомного)?
 
А возможно сделать разные текстуры в зависимости от дисплейнейма (кастомного)?
В этом деле нужно, чтобы у игрока был OptiFine. Нагугли ресурспак ItemBound, там много предметов, да и в целом понятно что-как делать.
 
В этом деле нужно, чтобы у игрока был OptiFine. Нагугли ресурспак ItemBound, там много предметов, да и в целом понятно что-как делать.
Окей, тогда... Возможно ли как-то не пускать игрока на сервер (без модов, spigot), если у него нет Optifine?
 
Оригинал

ЦЕЛЬ
Одна из самых классных вещей в 1.9 заключается в том, что предметы могут иметь различные модели в зависимости от их прочности. Предположительно, таким образом вы можете показать, что предметы изношены, но в то же время мы можем использовать это, чтобы добавить тысячи новых предметов в Minecraft!

Например, всё, что показано здесь, является деревянной мотыгой с разными значениями прочности:
c2ca89e9861a861d29af16880e35e677160ea979


КОД
Эта часть банально проста. Возьмите предмет с прочностью (например, инструмент) и создайте ItemStack для этого предмета с установленной прочностью. Давайте для примера используем прочность 1:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
Этот код даст нам немного поломанную деревянную мотыгу. Как-то так:
6efcb96a63eab34f8e54f8917dc00ad144d83c88

Но, естественно, мы не хотим, чтобы показывалась полоска прочности предмета, и не хотим, чтобы прочность изменялась, когда предмет используется как инструмент. К счастью, для этого есть тег!

Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true); // Для версий 1.11 и выше
customItem.setItemMeta(meta);
Этот код даёт нам следующий предмет:
4d86eb5880900d6ed945f85fe38f560458063b1c

Хорошо, больше нет полоски прочности! Но если мы создаём свой предмет, вероятно, мы не захотим всего этого "ванильного" описания. К счастью, и для этого есть API! Вы можете добавить флаг предмету на скрытие описания, как-то так:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE);
customItem.setItemMeta(meta);
e0a0ad8256c852dfc87b8ed1f6a6a9780bedb4eb

Прекрасно, теперь у нас есть предмет с установленной прочностью, которая не будет меняться, и в описании нет ничего странного.

На этом часть кода заканчивается! Возможно, вы захотите установить название предмета или добавить описание, но я оставлю это вам.

Этот предмет готов стать собственным предметом вашей мечты... ему просто нужна новая текстура.


РЕСУРСПАК
Здесь всё немного сложнее. Если у вас нет опыта в создании ресурспака, это будет довольно сложно. Создайте новую пустую папку и положите в неё файл pack.mcmeta, он будет выглядеть как-то так:
Код:
{
  "pack": {
    "pack_format": 3,
    "description": "Официальный Магический Ресурспак от elMakers"
  }
}
!!! Для Minecraft 1.10 и ниже используйте pack_format: 2

Затем добавьте все подпапки, идущие вплоть до "assets/minecraft/models/item".

В папке предмета создайте новый файл под названием wooden_hoe.json. Он будет "хранилищем" для всех ваших собственных предметов. Он говорит клиенту, какие модели использовать при определённой прочности деревянной мотыги.

Этот файл будет выглядеть как-то так:


Код:
{
  "parent": "item/handheld",
  "textures": {
    "layer0": "items/wood_hoe"
  },
  "overrides": [
    {"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"}
  ]
}
Хорошо, давайте на этом остановимся.

Мы перезаписываем деревянную мотыгу, но исходя из базовой версии. "parent" и "textures" указывают клиенту использовать мотыгу по умолчанию. Это значит, что мотыга без повреждений будет нормально смотреться.

Теперь для новой вещи - блок "overrides" позволяет вам указывать разные модели для использования в зависимости от определённых параметров предмета. Эти параметры называются "predicades", в нашем случае сфокусируемся на параметре "damage".

Модель предмета будет варьироваться в зависимости от повреждения в виде какого-то процента от 0 до 1. Таким образом, значение "0.016666" исходит из соотношения "1/60" - потому что я хочу применить свою модель для мотыги с повреждением 1, а максимальная прочность деревянной мотыги - 60.

Посетите Minecraft вики, чтобы увидеть список прочностей предметов: https://minecraft-ru.gamepedia.com/Мотыга


Вы можете добавлять сколько угодно моделей, вплоть до максимальной прочности предмета - просто для каждой делайте "x/60".

Также вы можете использовать этот сайт, чтобы автоматически сгенерировать шаблон указанного вида инструмента без математических рассчётов:
http://accidentalgames.com/media/durabilityModels.php

Сохранение "ванильных" предметов
Если вы хотите по-прежнему использовать "ванильные" предметы с работающей прочностью, это можно реализовать!
Добавьте ещё одну запись в ваш файл с моделью, чтобы конец этого файла в итоге выглядел примерно так:
Код:
{
  "parent": "item/handheld",
  "textures": {
    "layer0": "items/wood_hoe"
  },
  "overrides": [
    {"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"},
    {"predicate": {"damaged": 1, "damage": 0}, "model": "item/wooden_hoe"}
  ]
}
Это заставит повреждённые версии предмета продолжить использовать основную модель. Обратите внимание, если вы использовали этот JSON-генератор, вам придётся изменить последнюю запись - она должна обращаться к названию модели, например, wooden_hoe вместо wood_hoe.

И, наконец, положите модель предмета в папку "item" в ресурспаке, в данном случае модель будет называться "my_cool_custom_item.json". (Создание собственных моделей предметов не является целью данного туториала, я думаю, в Интернете полно видеоуроков по этой теме. Или, в конце концов, можете использовать Cubik).

Заархивируйте ваш ресурспак в формате .zip в папку <minecraft>/resourcepacks. После этого вы сможете поставить этот ресурспак и увидеть ваш предмет!
bc72f045a5a55d73334ef403fa5e23b815427295


Если что-то не получилось, посмотрите структуру ресурспака из этого туториала на GitHub:
https://github.com/elBukkit/MagicPlugin/tree/master/Magic/src/resource-pack/default

ФИНАЛЬНЫЕ АККОРДЫ
Когда у вас всё получилось, вы можете рассмотреть следующие вещи:
  • Чем выше максимальная прочность предмета, тем больше моделей вы сможете сделать. У алмазной мотыги максимальная прочность - 1,562 (!)
  • Когда настало время отправлять ресурспак игрокам, вам нужно будет где-то разместить его! Я думаю, Dropbox подойдёт, просто получите прямую ссылку и добавьте её в файл server.properties.
  • Если вы собираетесь обновлять ресурспак, имейте в виду, что вам также придётся добавить хэш SHA1 в ваш server.properties. Или для каждого "обновления" переименовывать ресурспак. Иначе клиенты не станут заново загружать его.
  • В 1.9 есть ещё одна крутая вещь - предметы можно носить как шапки, и они будут показываться в игре! Для этого нужно добавить блок отображения "head" в json-файл модели. Короче, https://github.com/elBukkit/MagicPl...ecraft/models/item/custom/magic_hat.json#L587
Я надеюсь, эта статья поможет вам. Просьба в личных сообщениях указать на смысловые или ошибки в переводе.
А это без оптифайна делается?
 
Ставить Cauldron/Sponge как ядро (извращение, правда?)
Можно свой клиент делать, и проверку файлов. Но нахрена правда? Это если там ZombieMod/Шутеры, но уже надо онлайн большой(
 
Вообщем если это понадобится для минигеймов надо делать лаунчер. Это говно.
 
Вообщем если это понадобится для минигеймов надо делать лаунчер. Это говно.
Можно попробовать написать sp614x чтобы добавил свой плагин-мод канал. Тогда бы и проверку есть ли мод на клиенте можно делать.
(хз как работает кастомный канал, просто идея)
 
Можно попробовать написать sp614x чтобы добавил свой плагин-мод канал. Тогда бы и проверку есть ли мод на клиенте можно делать.
(хз как работает кастомный канал, просто идея)
Я не даун, знаю)
 

Поделиться этой страницей

Назад
Верх