1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите NBT для спавнера

Тема в разделе "Разработка плагинов для новичков", создана пользователем Fenix78563, 25 дек 2016.

  1. Автор темы
    Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Доброго времени суток, форумчане.

    пытаюсь добавить спавнеру в инвентаре NBT Tag EntityId

    Код:
    net.minecraft.server.v1_10_R1.ItemStack stack = CraftItemStack.asNMSCopy(item);
    NBTTagCompound tag = stack.getTag(); //Create the NMS Stack's NBT (item data)
    tag.setString("EntityId", monster);stack.setTag(tag);
    item = CraftItemStack.asCraftMirror(stack);
    return item;
    
    Однако код не пашет. Ни ошибок ничего.

    Сначала пытался сделать код независимым от версии и было так:
    Код:
    Object nmsStack = getCraftbukkitClass("inventory.CraftItemStack").getMethod("asNMSCopy", ItemStack.class).invoke(null, item);
    Object tag = (Boolean)nmsStack.getClass().getMethod("hasTag").invoke(nmsStack) ? nmsStack.getClass().getMethod("getTag").invoke(nmsStack) : getNmsClass("NBTTagCompound").newInstance();
    Object nested = getNmsClass("NBTTagCompound").newInstance();
    nested.getClass().getMethod("setString", String.class, String.class).invoke(nested, "EntityId", monster);
    tag.getClass().getMethod("set", String.class, getNmsClass("NBTBase")).invoke(tag, "SpawnData", nested);
    nmsStack.getClass().getMethod("setTag", getNmsClass("NBTTagCompound")).invoke(nmsStack, tag);
    item = (ItemStack) getCraftbukkitClass("inventory.CraftItemStack").getMethod("asBukkitCopy", getNmsClass("ItemStack")).invoke(null, nmsStack);
    
    Но он делал все ту же свинью, и я решил сначала проверить на более простом, но он, как я сказал выше, не пашет(делает свинку). Где подстава?
     
    Последнее редактирование: 25 дек 2016
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тут есть свои плюсы и минусы, рефлексия раза в 3 тормознее будет.
     
  3. Автор темы
    Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    зато мультиверсия.

    И проблема в том что таг не ставится. (вместо коровы\курицы и т.д все еще дефолтная свинюха)
     

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