Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Объяснитеstack.isSimilar(stack2);
Чего именно? Это метод в ItemStack.Объясните
Что он из себя представляетЧего именно? Это метод в ItemStack.
Ну открой исходники и посмотриЧто он из себя представляет
Сравнивает в предметах все, кроме количества.Что он из себя представляет
Мне надо поставить отметку на предмет что бы его найти, не по внншневнвиду а по отметкеСравнивает в предметах все, кроме количества.
Возвращает true если все одинаково, false если нет.
ставь кастомный NBT тег.Мне надо поставить отметку на предмет что бы его найти, не по внншневнвиду а по отметке
А цена уже интересно какставь кастомный NBT тег.
Что, какая цена?А цена уже интересно как
XD авто поправка : це - ценаЧто, какая цена?
Ну серез нмс итемстак ставишь теги, погугли в кой то веке, там все прозрачно и очевидно. Хочешь на нескольких версиях - абстракция или прокси классы.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();
}
}
}
Смысл костылить зачарованием, если это тот же Nbt тег, когда можно поставить кастомный нбт тег.Вот тебе метка.
this.ench = new FaceEnchantment(NamespacedKey.minecraft("120"));Код: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(); } } }
Item.addEnchantment(this.plugin.ench, 1);
Item.getEnchantments().get(this.plugin.ench) !=null
Смысл кроссверсионности без костылей с nms. Один раз зарегал и все. И теперь энчантов с 1.13 может быть околобесконечно.Смысл костылить зачарованием, если это тот же Nbt тег, когда можно поставить кастомный нбт тег.
На предмете бакит не стирает кастомное нбт. В нбт можно помимо метки информацию какую-то адекватно хранить, а костыль твой это именно с зачарованием, это тот же самый нбт тег, но применяется не по назначению и неудобно его использовать для этого. Хз у кого там проблеми с кроссверсионностью, можно использовать прокси классы и при помощи аннотаций легко врапать NBTTagCompount и т. п., намного быстрее писать чем этот костыль с зачарованием.Смысл кроссверсионности без твоих костылей с nms. Один раз зарегал и все. И теперь энчантов с 1.13 может быть околобесконечно.
Да и кастомные теги могут стираться бакитом, чарки останутся железно.

Слишком жирно так костылять ради тупо метки. Чарки хватит. И ТС не осилит твои прокси классы, которые еще частенько придется подгонять под новые nms имена. Ему легче мое готовое взять.На предмете бакит не стирает кастомное нбт. В нбт можно помимо метки информацию какую-то адекватно хранить, а костыль твой это именно с зачарованием, это тот же самый нбт тег, но применяется не по назначению и неудобно его использовать для этого. Хз у кого там проблеми с кроссверсионностью, можно использовать прокси классы и при помощи аннотаций легко врапать NBTTagCompount и т. п., намного быстрее писать чем этот костыль с зачарованием.Посмотреть вложение 52724
Ну если тс только метка нужна и все, то можно и костылить зачаром, если уже написанного апи нет.Слишком жирно так костылять ради тупо метки. Чарки хватит. И ТС не осилит твои прокси классы. Ему легче мое готовое взять.
1 раз не получится. nms мапинг иногда меняется. Инжект чарки же проживет околовечно.Ну если тс только метка нужна и все, то можно и костылить зачаром, если уже написанного апи нет.
Но костыль это применение не по назначению, и использование нбт тегов по назначению не нужно называть костылем.
Сетать нбт теги оч часто может понадобится, так что лучше один раз апи для проксирования написать, чем каждый раз выдумывать что-то.