Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Создание энчантов

Тема в разделе "Разработка плагинов для новичков", создана пользователем l4legenda, 4 июл 2017.

  1. Автор темы
    l4legenda

    l4legenda Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    l4legenda
    Кто может дать статью где в подробностях объеснятся как создать энчант?
    Сделал по какому-то зарубежному сайту энчант. И он не отображаеться на предмете, не инчантит в столе. И много другое.
     
  2. Хостинг MineCraft
    <
  3. Enay

    Enay Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    EnayNooby
    че блин ?
    Скинь скрины кода и ошибки.
     
  4. Автор темы
    l4legenda

    l4legenda Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    l4legenda
    Делал код отсюда. https://bukkit.org/threads/custom-enchantments-you-say-what.160684/
    Но не мог заинчантить его в столе. И Не было имени инчанта на предмете
     
  5. Enay

    Enay Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    EnayNooby
    ТВОЙ КОД СКИНЬ
     
  6. Автор темы
    l4legenda

    l4legenda Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    l4legenda
    Код:
    package org.interactive.Enchantments;
    
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.enchantments.EnchantmentTarget;
    import org.bukkit.inventory.ItemStack;
    
    public class CustomEnchantment extends Enchantment{
    
        public CustomEnchantment(int id) {
            super(id);
        }
      
        @Override
        public int getId(){
        return 101;
        }
      
        @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 "Megolovania";
        }
    
        @Override
        public int getStartLevel() {
            return 1;
        }
    
        @Override
        public boolean isCursed() {
            return false;
        }
    
        @Override
        public boolean isTreasure() {
            return false;
        }
    
    }
    Код:
    package org.interactive.bot;
    
    import java.lang.reflect.Field;
    import java.util.HashMap;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    import org.interactive.Enchantments.CustomEnchantment;
    import org.interactive.crafts.regCrafts;
    import org.interactive.events.regEvent;
    
    public class Main extends JavaPlugin{
       
        public static CustomEnchantment ench = new CustomEnchantment(101);
       
        public void onEnable(){//Старт плагина
            getServer().getPluginManager().registerEvents(new regEvent(), this);
            new regCrafts();
            regArmor();
            LoadEnchantments();
            getLogger().info("Start plugin");
           
        }
       
        public void onDisable(){//Окончание плагина
            try {
                Field byIdField = Enchantment.class.getDeclaredField("byId");
                Field byNameField = Enchantment.class.getDeclaredField("byName");
                
                byIdField.setAccessible(true);
                byNameField.setAccessible(true);
                
                @SuppressWarnings("unchecked")
                HashMap<Integer, Enchantment> byId = (HashMap<Integer, Enchantment>) byIdField.get(null);
                @SuppressWarnings("unchecked")
                HashMap<String, Enchantment> byName = (HashMap<String, Enchantment>) byNameField.get(null);
                
                if(byId.containsKey(ench.getId()))
                byId.remove(ench.getId());
                
                if(byName.containsKey(getName()))
                byName.remove(getName());
                } catch (Exception ignored) { }
            getLogger().info("finish");
        }
       
        private void LoadEnchantments(){
            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){
                //if this is thrown it means the id is already taken.
                }
                }catch(Exception e){
                e.printStackTrace();
                }
        }
     

Поделиться этой страницей