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".
Вся суть и странность вот в чём:
Есть метод-команда:
{ 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".