Описание предмета по NBT

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.7.10
699
9
53
У меня есть предмет, и в нбт у него(у айтем стака) хранится количество некой энергии, я хочу выводить её кол-во в описание, тоесть например: "некая энергия: n-нное кол-во едениц". Как это сделать? Заранее спасибо!
 
Решение
К примеру у меня так:
Java:
    @Override
    public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean flag) {
        if (isTagEPT(itemStack)) {
            NBTTagCompound eet = checkEPT(itemStack);
            if (getEnergy(itemStack) >= 0) {
                String text = "Energy: " + getEnergy(itemStack);
                if (getEnergyMax(itemStack) >= 0)
                    text += " / " + getEnergyMax(itemStack);
                list.add(text + ".");
            }
        }
    }
Просто как единицы выводить
Java:
    @Override
    public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean flag) {
        NBTTagCompound nbt = itemStack.getTagCompound();
        if (nbt !=...

timaxa007

Модератор
5,831
409
672
К примеру у меня так:
Java:
    @Override
    public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean flag) {
        if (isTagEPT(itemStack)) {
            NBTTagCompound eet = checkEPT(itemStack);
            if (getEnergy(itemStack) >= 0) {
                String text = "Energy: " + getEnergy(itemStack);
                if (getEnergyMax(itemStack) >= 0)
                    text += " / " + getEnergyMax(itemStack);
                list.add(text + ".");
            }
        }
    }
Просто как единицы выводить
Java:
    @Override
    public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean flag) {
        NBTTagCompound nbt = itemStack.getTagCompound();
        if (nbt != null) {
            int money = 0;
            if (nbt.hasKey("Money", NBT.TAG_BYTE)) money = nbt.getByte("Money");
            else if (nbt.hasKey("Money", NBT.TAG_SHORT)) money = nbt.getShort("Money");
            else if (nbt.hasKey("Money", NBT.TAG_INT)) money = nbt.getInteger("Money");
            if (money != 0)
                list.add(StatCollector.translateToLocalFormatted("money4.value.desc", new Object[] {money / 100, money % 100}));
            else
                list.add(StatCollector.translateToLocal("money4.none.desc"));
        }
    }
money4.value.desc=Денег: §a%d §2рублей(-я) §rи §a%s §2копеек(-и).
Я порой просто тестирую подобные коды, а не пишу их в правильности их написании.
 
1,417
44
594
1. Как покрасить в другой цвет название/часть описания(тоесть например слово в описании)?
EnumChatFormatting.[Нужный тебе цвет/шрифт]
2. Как я понял, нбттегкомпоунд в стаке автоматически не создаётся?
Да, но если ты хочешь задать в нем владельца, то это лучше делать через крафт и т.п.
 

timaxa007

Модератор
5,831
409
672
1. Как покрасить в другой цвет название/часть описания(тоесть например слово в описании)?
Бывает несколько способов:
- зажимаешь Alt, затем в последовательности на Num Pad'е нажимаешь на 2, затем на 1 и отпускаешь Alt. Т.е. получается параграф '§'. Он то и используешь в майнкрафте.
- бывает что на сервере, то ли с каким-то плагином, я точно не помню, используется Амперсанд '&', типа место параграф '§'.
§ и & используют 16 цветов (типа цвета как у шерсти), а также различные форматирования текста ... Более подробнее можно почитать тут - Форматирование текста
- Если кодом, то EnumChatFormatting и использовать его константы.
2. Как я понял, нбттегкомпоунд в стаке автоматически не создаётся?
Ну, как-бы да. В ItemStack'е нужно создавать.
 
7,099
324
1,510
Статус
В этой теме нельзя размещать новые ответы.
Сверху