Помогите Как внести NBT тег в Entity? (ItemEntity)

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

XjCyan1de

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
XjCyan1de
Собсна нужно сделать чтобы определённый предмет лежал на земле вечно и чтобы сервак не удалял его через N-е количество времени, знаю что нужно этому энтити поставить тег Age:-32768 но я долго мучился с NBTTagCompound и так и не понял как записать его в энтити. Помогите пожалуйста, перелазил все форумы но либо методы устаревшие, либо я дибил не понимаю

код:
Java:
Item item = block.getWorld().dropItem(location, itemstack);

/*
Тута код который мне нужен чтобы получить энтити для того чтобы записать тег
*/

NBTTagCompound tag = new NBTTagCompound();
tag.setInt("Age", -32768);

/*
А тут мне нужно этот тег сохранить
*/
 
Пиши их в конфиг и все. Если предмет пропал на загруженном чанке, спавни опять.
 
Оу... всё так просто? Пойду попробую...
Нет не работает.
Во первых: нельзя поставить отрицательное число
Во вторых: изменяется не Age, а Spigot.ticksLived

Повторяюсь, мне нужно узнать как записать в энтити NBT тег через NBTTagCompound. Доков я нигде не нашёл
 
а версия какая у тебя?
Вообще нету разницы как бэ... 1.11.2
а версия какая у тебя?
http://minecraft.gamepedia.com/Tutorials/Command_NBT_tags

Кстате, таг записывается в item, а не в энтити
NBT Теги записываются в TileEntity, Item и в Entity здрасте
 
Вообще нету разницы как бэ... 1.11.2
Мне кажется, что если бы разницы не было, то тех скобочек тоже не было бы. скобки наверное не спроста.
upload_2017-2-6_18-42-55.png

Хотя о чем это я, бред это все, без разницы все
 
Вот я даунич. Просто я привык к командным блокам и постоянно пытаюсь ванильными способами решать. Совсем забыл что есть такие простые методы. Тема закрыта
Ах да, нашёл всё таки как заносить NBT теги, малоли кому пригодится:
Java:
        //Работает на 1.11, если хотите то можно и 1.10 и 1.9 сделать
        //@param entity Сам энтити к которому мы будем добавлять NBT теги
        Item entity = l.getWorld().dropItem(l, itemStack);
        try {
            Object nmsEntity = entity.getClass().getMethod("getHandle").invoke(entity);
            if (ReflectionUtils.getVersion().startsWith("v1_11_")) {
                try {
                    ReflectionUtils.setFieldValue(nmsEntity, "bA", 2039583);
                } catch (IllegalArgumentException x) {
                    ReflectionUtils.setFieldValue(nmsEntity, "bB", true);
                }
            }
            else {
                Method method = nmsEntity.getClass().getMethod("getNBTTag");
                Object tag = method.invoke(nmsEntity);
                if(tag == null) {
                    tag = ReflectionUtils.getClass("NBTTagCompound").newInstance();
                }
                method = nmsEntity.getClass().getMethod("c", ReflectionUtils.getClass("NBTTagCompound"));
                method.invoke(nmsEntity, tag);

                //Вот тут прописываем NBT Теги:
                //Допустим ставим Age:-32768
                tag.getClass().getMethod("setInt", String.class, int.class).invoke(tag, "Age", -32768);
                nmsEntity.getClass().getMethod("a", ReflectionUtils.getClass("NBTTagCompound")).invoke(nmsEntity, tag);
                //А тут например PickupDelay:32767
                tag.getClass().getMethod("setInt", String.class, int.class).invoke(tag, "PickupDelay", 32767);
                nmsEntity.getClass().getMethod("a", ReflectionUtils.getClass("NBTTagCompound")).invoke(nmsEntity, tag);
            }
        } catch (Exception x) {
            x.printStackTrace();
        }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх