Войти или зарегистрироваться

Помогите [Решено] Как использовать NBT 1.12.2 (NMS)

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

therimuru_

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
therimuru_
Привет, недавно я задал вопрос как подключить NMS, у меня это получилось, теперь вопрос как это юзать. Мне нужно выдать предмету тег, чтобы отличать его от других, и при ивенте проверять его на наличие этого самого тега. Как это сделать?
 
Ну у тебя есть CustomModelData и PersistentDataContainer, выбирай что требуется и в nms лезть не придется.
CustomModelData придаст уникальный ключ еще и определит текстуру предмета через ресурспак, в PersistentDataContainer можно заносить кастомные значения для обработки плагином.
 
Если хочешь через NMS, то смотри пример: https://github.com/tr7zw/Item-NBT-API/issues/7#issue-239460859

Если без NMS, то смотри сам плагин (репозиторий выше как раз его)

Ну у тебя есть CustomModelData и PersistentDataContainer, выбирай что требуется и в nms лезть не придется.
CustomModelData придаст уникальный ключ еще и определит текстуру предмета через ресурспак, в PersistentDataContainer можно заносить кастомные значения для обработки плагином.
На 1.12.2 этого нет
 
Решено.


Utils,java:

PHP:
package org.therimuru.donateundyingshield;

import net.minecraft.server.v1_12_R1.NBTTagCompound;
import net.minecraft.server.v1_12_R1.NBTTagString;
import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack;
import org.*********ventory.ItemStack;

public class Utils {

    public static ItemStack setNBTTag(ItemStack itemStack, String key, String value) {
        ItemStack bukkitItemStack;
        net.minecraft.server.v1_12_R1.ItemStack nmsItem = CraftItemStack.asNMSCopy(itemStack);
        NBTTagCompound nmsItemCompound = (nmsItem.hasTag()) ? nmsItem.getTag() : new NBTTagCompound();
        nmsItemCompound.set(key, new NBTTagString(value));
        nmsItem.setTag(nmsItemCompound);
        bukkitItemStack = CraftItemStack.asBukkitCopy(nmsItem);
        return bukkitItemStack;
    }
}

USTestCommand.java:
PHP:
package org.therimuru.donateundyingshield;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;

public class USTestCommand implements CommandExecutor {

    private DonateUndyingShield plugin;

    public USTestCommand(DonateUndyingShield donateUndyingShield) {
        plugin = donateUndyingShield;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        ItemStack itemStack = Utils.setNBTTag(new ItemStack(Material.SHIELD), "DonateItem", "SHIELD_OF_UNDYING");
        ((Player) sender).getInventory().addItem(itemStack);
        return true;
    }
}


Спасибо alexandrage и Deymeth!
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх