Стартап Работа с API 1.13

Cool_boy

Активный участник
Пользователь
Баллы
96
Имя в Minecraft
prettydude
Создал тему чтобы люди, которые имеют вопросы по поводу обновления плагинов под 1.13, могли задавать их здесь. Думаю, через некоторое время, вынесу самые важные изменения с примерами в шапку.

Как скомпилировать плагин под 1.13?
Чтобы Bukkit/Spigot увидел ваш плагин как уже обновлённый под 1.13, в файле plugin.yml надо дописать
Код:
api-version: 1.13

Почему нужно указывать версию API, раньше же и без этого работало?
В 1.13 изменилось большое количество материалов (они теперь называются так же, как и в игре), и чтобы плагины со старых версий хотя бы имели шанс запуститься на новой версии, Bukkit/Spigot при загрузке попытается обновить их в нужный формат.

Что такое Tag?
В 1.13 вместе с наборами данных появились тэги (метки). С их помощью можно группировать предметы или блоки вместе. В Bukkit добавили только ванильные тэги, которые представляют из себя простой список материалов.
Чтобы проверить входит ли материал в список, есть метод isTagged(). Не ясно, добавят ли возможность добавлять или изменять их, но уже лучше чем проверять цветную шерсть через .contains("WOOL").

Что такое BlockData?
BlockData - замена для MaterialData. На все существующие классы MaterialData есть аналогичный вариант BlockData (поэтому следите, что вы импортируете). MaterialData нормально могут использовать только плагины которые не написаны под 1.12 и ниже, поэтому она была помечена устаревшей.
Работа с BlockData идентична работе с MaterialData.
PHP:
if (Tag.STAIRS.isTagged(block.getType())) { //проверяем ступени ли это
    Stairs stairs = (Stairs) block.getBlockData(); //получаем BlockData
    stairs.setWaterlogged(true); //"затопливаем" ступеньки
    stairs.setShape(Stairs.Shape.OUTER_LEFT); //устанавливаем форму
    stairs.setHalf(Bisected.Half.TOP); //меняем половину
    stairs.setFacing(BlockFace.EAST); //меняем направление
    block.setBlockData(stairs); //задаём BlockData
}

Можно ли сериализовать её?
Да, и даже удобнее чем это было раньше. Теперь можно использовать строки как в самой игре. Например, немного съеденный торт можно записать как minecraft:cake[bites=3], и получить его BlockData можно через Server.createBlockData(String). Чтобы конвертировать BlockData в строку добавлен метод getAsString().

Как теперь получить цветной блок?
Так как каждый цвет теперь отдельный материал, то достаточно прописать нужный. Если вам нужно получить материал нужного цвета, можно использовать этот метод.
(md_5 переименовал DyeColor.SILVER, теперь всё ок)
PHP:
public static Material getMaterialByColor(DyeColor color, String suffix) {
    return Material.getMaterial(color + "_" + suffix);
}

Небольшие изменения
  • Переименовали картины BURNING_SKULL и DONKEY_KONG, но это и так никого не волнует.
  • Опять удалили/добавили целую кучу звуков в классе Sounds, впрочем, как всегда.
  • Статистика PLAY_ONE_TICK теперь PLAY_ONE_MINUTE, небольшая потеря точности.
  • Переименованы биомы в классе Biome, теперь всё как и в игре.
  • Много BlockState теперь deprecated, так как всё теперь хранится в материале.
  • Ранее deprecated класс Fish (ранее отвечавший за поплавок) теперь отвечает за новых мобов.
  • NotePlayEvent теперь не реагирует на setInstrument / setNote, редактируйте блок в мире чтобы изменить звук.
  • Удалили метод BukkitScheduler.cancelAllTasks().
  • Material.isTransparent() теперь deprecated, потому что никто точно не знает, что считать прозрачным блоком.
  • Для стрел добавили метод getAttachedBlock().
  • Увеличили лимиты для префикса/суффикса. Не перестарайтесь.
    8ad9ceb981690acea3a58975c10357a4ffd74734
 
Последнее редактирование:
Снимок экрана 2018-07-18 в 21.40.00.png
По губке не всё так однозначно, всё же завязано на фордже. Но хотя бы не потеряется совместимость.
 
О, нашёл версию WorldEdit'а.
https://github.com/sk89q/WorldEdit/...orldedit/schematic/MCEditSchematicFormat.java
Кек, в последнем коммите удалили экспорт в файл. Надо искать где теперь он находится.
Почему так сложно теперь? хд Сейчас роюсь - никак не пойму как они сконвертили data в blockdata..
 
Почему так сложно теперь? хд Сейчас роюсь - никак не пойму как они сконвертили data в blockdata..
Кажется ещё не добавили возможность записи в Schematic, нигде не найду... Говорят что там Sponge свой вариант формата предложил, возможно они ещё и несовместимы будут.
 
В майнкрафте есть только один формат схематиков - тот, что даёт ванилла. В губке используется этот самый вариант.
Оно всегда так и было. Обычный nbt формат. Только подпись сверху добавляли и все.
 
У меня вопрос Зачем вам оно все?? Что бы писать Гавно плагины снова ??
PS. блин так кончано сделали 1.13
теперь нельзя написать /gm 1
А все идет через жопу.
 
У меня вопрос Зачем вам оно все?? Что бы писать Гавно плагины снова ??
PS. блин так кончано сделали 1.13
теперь нельзя написать /gm 1
А все идет через жопу.
Ну если так хочешь писать /gm 1, то можно сделать такой плагин, делов то.
 
У меня вопрос Зачем вам оно все?? Что бы писать Гавно плагины снова ??
PS. блин так кончано сделали 1.13
теперь нельзя написать /gm 1
А все идет через жопу.
Дорогой мой человек, скажи мне — ты траллишь меня или всерьёз решил, что в майнкрафте по-дефолту существует сокращение /gm?
 
Дорогой мой человек, скажи мне — ты траллишь меня или всерьёз решил, что в майнкрафте по-дефолту существует сокращение /gm?
вспомним старые версии 1.12.2 и нижу .. как там пишать надо
/gamemode 1 или 2
а теперь 1.13
как нужно писать....
PS. Скоро сделают так /minecraft:gamemode
Я же писал все через жопу делают . Им лишь бы денег с рубить
 
вспомним старые версии 1.12.2 и нижу .. как там пишать надо
/gamemode 1 или 2
а теперь 1.13
как нужно писать....
PS. Скоро сделают так /minecraft:gamemode
Я же писал все через жопу делают . Им лишь бы денег с рубить
Да, они убрали цифры. Ну и хрен с ними, всё равно если понадобится модно вернуть через function. По мне это не слишком большая цена за интерфейс autocomplete для команд.
 
вспомним старые версии 1.12.2 и нижу .. как там пишать надо
/gamemode 1 или 2
а теперь 1.13
как нужно писать....
PS. Скоро сделают так /minecraft:gamemode
Я же писал все через жопу делают . Им лишь бы денег с рубить
Каким образом через отмену чисел они срубили деньги?
 
Назад
Верх Низ