Block.getType() возвращает устаревший материал

Статус
Закрыто для дальнейших ответов.

ieldan22

Активный участник
Баллы
61
Имя в Minecraft
ieldan22
Сегодня продолжил писать свой минигейм-API под 1.13. И тут, когда дело дошло до некого X класса, работающего с материалами, я заметил очень странную вещь. Т.к. я ещё новичок и это будет мой первый стоящий плагин, то возможно я просто ещё не догоняю, почему это происходит.
Вся суть и странность вот в чём:

Есть метод-команда:
{ Location loc = ((Player)sender).getLocation();
loc.setY(loc.getY() - 1);
Block block = ((Player) sender).getWorld().getBlockAt(loc);
sender.sendMessage(block.getType().name()); }
Этот метод был создан специально для дебага и выводит в чат игроку материал блока, на котором он стоит.

Я запускаю spigot-сервер с этим плагином, захожу на него, встаю на блок красной шерсти и прописываю тестовую команду, при вводе которой мне в чат должно написать "RED_WOOL".
Мне пишет в чат "WOOL". Заметьте, именно "WOOL". Не "LEGACY_WOOL".

Думаете я импортировал в плагин старый API баккита? Нет. Ведь это ещё не всё.

Стоит мне только "пропинговать" любой материал из 1.13, как подгружаются НОВЫЕ материалы и "WOOL", как и все остальные устаревшие названия заменяется на "RED_WOOL" и новые названия соответственно. Под словом "пропинговать" я имел в виду прямо использовать любым способом enum Material в коде, например:
if (Material.RED_SHULKER_BOX == Material.DIRT){//do nothing}

Я искал логику два часа, но так и не нашёл.

Плагин использует следующие API:
HolographicDisplays, ProtocolLib и сам Bukkit.

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

P.P.S. Если попытаться вывести в чат материал любого блока из 1.13 до пингования, в чат выведет "AIR".
 
P.s Мепня больше смущает отсутствие датаапи. Юзаю вот такою нмс хрень пока что.

Код:
    public static BlockData setBlockData(String data) {
        return CraftBlockData.newData(Material.matchMaterial(data.substring(0, data.indexOf("["))),
                data.substring(data.indexOf("[")));
    }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх