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

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

Discussion in 'Разработка плагинов для новичков' started by l4legenda, Jul 4, 2017.

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

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

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

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

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

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

    Trophy Points:
    36
    Имя в Minecraft:
    l4legenda
  5. Enay

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

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

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

    Trophy Points:
    36
    Имя в Minecraft:
    l4legenda
    Code:
    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;
        }
    
    }
    Code:
    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();
                }
        }
     

Share This Page