- Баллы
- 173
- Имя в Minecraft
- _Dereku
В общем, сабж в названии. Ищу тулзу, которая умеет из баккитовских материалов в языковые ключи майнкрафта. Или же какой ниб способ. Если кто встречал такое, скиньте. А то костылить мне ещё с этим не очень хочется.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
public String getItemStackName(Player player, ItemStack is) {
Location loc = player.getLocation();
Item item = loc.getWorld().dropItem(new Location(loc.getWorld(), loc.getBlockX(), 0, loc.getBlockZ()), is);
item.setCustomName(null);
String name = item.getName();
item.remove();
return name.substring(5) + ".name";
}

А по мне выглядит дико :/Сам спросил, сам ответил.
Java:public String getItemStackName(Player player, ItemStack is) { Location loc = player.getLocation(); Item item = loc.getWorld().dropItem(new Location(loc.getWorld(), loc.getBlockX(), 0, loc.getBlockZ()), is); item.setCustomName(null); String name = item.getName(); item.remove(); return name.substring(5) + ".name"; }
Дёргается всего лишь два эвента. А маппить все значения весьма неблагодарное занятие. Я молчу о том, что материалы баккиты различаются от материалов ванили.А по мне выглядит дико :/
Может лучше таки в начале отмапить все значения? При включении сервера. А потом не дергать понапрасну столько эвентов и прочей лабуды
Не совсем. Мне лично тоже не нравится создавать Entity лишь для имени. Но коли Bukkit не умеет в названия предметов, приходится изощряться таким методом.Ухтыжё, элегантное решение![]()
Достаточно закешировать их.Может лучше таки в начале отмапить все значения?
А вот про кэш я и не подумал. Вот тут спасибки.Достаточно закешировать их.
public String getItemStackName(ItemStack is) {
net.minecraft.server.v1_8_R3.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(is);
return nmsItemStack.a() + ".name";
}
private String getTrueMaterialName(ItemStack is) {
net.minecraft.server.v1_8_R3.ItemStack nmsItemStack = CraftItemStack.asNMSCopy(is);
MinecraftKey key = net.minecraft.server.v1_8_R3.Item.REGISTRY.c(nmsItemStack.getItem());
return key.toString();
}