Помогите Отлечить один предмет от другово

  • Автор темы Автор темы koliab
  • Дата начала Дата начала

koliab

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
kolia1_1
В gui инвенторе есть 2 предмета которые находятся на 1 - 2 слоте
надо пометить 1 и потом найти его среди всех, точно такие-же по виду, которые внешним видом не отличаются.
1 :grass
2 :grass
-Можно ли такое сделать вопще?
 
Сравнивает в предметах все, кроме количества.
Возвращает true если все одинаково, false если нет.
Мне надо поставить отметку на предмет что бы его найти, не по внншневнвиду а по отметке
 
XD авто поправка : це - цена
Ну серез нмс итемстак ставишь теги, погугли в кой то веке, там все прозрачно и очевидно. Хочешь на нескольких версиях - абстракция или прокси классы.
 
Вот тебе метка.
Код:
package Example;

import java.lang.reflect.Field;

import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.enchantments.EnchantmentTarget;
import org.*********ventory.ItemStack;

public class FaceEnchantment extends Enchantment {

    public FaceEnchantment(NamespacedKey key) {
        super(key);
        fix(this);
    }

    @Override
    public boolean canEnchantItem(ItemStack arg0) {
        return true;
    }

    @Override
    public boolean conflictsWith(Enchantment arg0) {
        return false;
    }

    @Override
    public EnchantmentTarget getItemTarget() {
        return null;
    }

    @Override
    public int getMaxLevel() {
        return 2;
    }

    @Override
    public String getName() {
        return "FaceEnchantment";
    }

    @Override
    public int getStartLevel() {
        return 1;
    }

    @Override
    public boolean isCursed() {
        return false;
    }

    @Override
    public boolean isTreasure() {
        return false;
    }

    private void fix(FaceEnchantment ench) {
        try {
            Field f = Enchantment.class.getDeclaredField("acceptingNew");
            f.setAccessible(true);
            f.set(null, true);
            Enchantment.registerEnchantment(ench);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
this.ench = new FaceEnchantment(NamespacedKey.minecraft("120"));
Item.addEnchantment(this.plugin.ench, 1);
Item.getEnchantments().get(this.plugin.ench) !=null
 
Последнее редактирование:
Вот тебе метка.
Код:
package Example;

import java.lang.reflect.Field;

import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.enchantments.EnchantmentTarget;
import org.*********ventory.ItemStack;

public class FaceEnchantment extends Enchantment {

    public FaceEnchantment(NamespacedKey key) {
        super(key);
        fix(this);
    }

    @Override
    public boolean canEnchantItem(ItemStack arg0) {
        return true;
    }

    @Override
    public boolean conflictsWith(Enchantment arg0) {
        return false;
    }

    @Override
    public EnchantmentTarget getItemTarget() {
        return null;
    }

    @Override
    public int getMaxLevel() {
        return 2;
    }

    @Override
    public String getName() {
        return "FaceEnchantment";
    }

    @Override
    public int getStartLevel() {
        return 1;
    }

    @Override
    public boolean isCursed() {
        return false;
    }

    @Override
    public boolean isTreasure() {
        return false;
    }

    private void fix(FaceEnchantment ench) {
        try {
            Field f = Enchantment.class.getDeclaredField("acceptingNew");
            f.setAccessible(true);
            f.set(null, true);
            Enchantment.registerEnchantment(ench);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
this.ench = new FaceEnchantment(NamespacedKey.minecraft("120"));
Item.addEnchantment(this.plugin.ench, 1);
Item.getEnchantments().get(this.plugin.ench) !=null
Смысл костылить зачарованием, если это тот же Nbt тег, когда можно поставить кастомный нбт тег.
 
Смысл костылить зачарованием, если это тот же Nbt тег, когда можно поставить кастомный нбт тег.
Смысл кроссверсионности без костылей с nms. Один раз зарегал и все. И теперь энчантов с 1.13 может быть околобесконечно.
Да и кастомные теги могут стираться бакитом, чарки останутся железно.
 
Последнее редактирование:
Смысл кроссверсионности без твоих костылей с nms. Один раз зарегал и все. И теперь энчантов с 1.13 может быть околобесконечно.
Да и кастомные теги могут стираться бакитом, чарки останутся железно.
На предмете бакит не стирает кастомное нбт. В нбт можно помимо метки информацию какую-то адекватно хранить, а костыль твой это именно с зачарованием, это тот же самый нбт тег, но применяется не по назначению и неудобно его использовать для этого. Хз у кого там проблеми с кроссверсионностью, можно использовать прокси классы и при помощи аннотаций легко врапать NBTTagCompount и т. п., намного быстрее писать чем этот костыль с зачарованием.upload_2019-1-4_15-11-18.png
 
На предмете бакит не стирает кастомное нбт. В нбт можно помимо метки информацию какую-то адекватно хранить, а костыль твой это именно с зачарованием, это тот же самый нбт тег, но применяется не по назначению и неудобно его использовать для этого. Хз у кого там проблеми с кроссверсионностью, можно использовать прокси классы и при помощи аннотаций легко врапать NBTTagCompount и т. п., намного быстрее писать чем этот костыль с зачарованием.Посмотреть вложение 52724
Слишком жирно так костылять ради тупо метки. Чарки хватит. И ТС не осилит твои прокси классы, которые еще частенько придется подгонять под новые nms имена. Ему легче мое готовое взять.
 
Слишком жирно так костылять ради тупо метки. Чарки хватит. И ТС не осилит твои прокси классы. Ему легче мое готовое взять.
Ну если тс только метка нужна и все, то можно и костылить зачаром, если уже написанного апи нет.
Но костыль это применение не по назначению, и использование нбт тегов по назначению не нужно называть костылем.
Сетать нбт теги оч часто может понадобится, так что лучше один раз апи для проксирования написать, чем каждый раз выдумывать что-то.
Ну и не ток нбт теги, для многих вещей в нмс лезть приходится.
 
Ну если тс только метка нужна и все, то можно и костылить зачаром, если уже написанного апи нет.
Но костыль это применение не по назначению, и использование нбт тегов по назначению не нужно называть костылем.
Сетать нбт теги оч часто может понадобится, так что лучше один раз апи для проксирования написать, чем каждый раз выдумывать что-то.
1 раз не получится. nms мапинг иногда меняется. Инжект чарки же проживет околовечно.
 
Назад
Верх