- Баллы
- 76
- Имя в Minecraft
- MySoR
Недавно увидел как можно создать свое кастом зачарование, чтобы оно и в чаровальном столе выпадало и в данжах в виде книг лежало. Попытался сделать свое но на клиенте не видно его название и уровень.
Код:
public class Enchantment3x3 extends Enchantment {
public Enchantment3x3(@NotNull NamespacedKey key) {
super(key);
fix(this);
}
@Override
public @NotNull String getName() {
return "Копатель";
}
@Override
public int getMaxLevel() {
return 3;
}
@Override
public int getStartLevel() {
return 0;
}
@Override
public @NotNull EnchantmentTarget getItemTarget() {
return EnchantmentTarget.TOOL;
}
@Override
public boolean isTreasure() {
return false;
}
@Override
public boolean isCursed() {
return false;
}
@Override
public boolean conflictsWith(@NotNull Enchantment other) {
return false;
}
@Override
public boolean canEnchantItem(@NotNull ItemStack item) {
return true;
}
@Override
public @NotNull Component displayName(int level) {
return Component.text("Копатель");
}
@Override
public boolean isTradeable() {
return false;
}
@Override
public boolean isDiscoverable() {
return true;
}
@Override
public @NotNull EnchantmentRarity getRarity() {
return EnchantmentRarity.VERY_RARE;
}
@Override
public float getDamageIncrease(int level, @NotNull EntityCategory entityCategory) {
return 0;
}
@Override
public @NotNull Set<EquipmentSlot> getActiveSlots() {
return Set.of(EquipmentSlot.HAND);
}
@Override
public @NotNull String translationKey() {
return "customenchants.3x3";
}
private void fix(Enchantment ench) {
try {
try {
Field f = Enchantment.class.getDeclaredField("acceptingNew");
f.setAccessible(true);
f.set(null, true);
} catch (Exception e) {
e.printStackTrace();
}
try {
Enchantment.registerEnchantment(ench);
} catch (IllegalArgumentException e) {
}
} catch (Exception e) {
e.printStackTrace();
}
}
}