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

Найди 5 отличий

Тема в разделе "Разработка плагинов для новичков", создана пользователем dnebik, 20 апр 2015.

Статус темы:
Закрыта.
  1. Автор темы
    dnebik

    dnebik Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    Код:
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e){
            Player p = e.getPlayer();
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getClickedBlock().getType() == Material.STONE_BUTTON);
                if(e.getClickedBlock().getX() == this.getConfig().getInt("buttons.b1.x"));
                    if(e.getClickedBlock().getY() == this.getConfig().getInt("buttons.b1.y"));
                        if(e.getClickedBlock().getZ() == this.getConfig().getInt("buttons.b1.z")){
               
                p.getInventory().clear();
                p.getEquipment().setHelmet(null);
                p.getEquipment().setChestplate(null);
                p.getEquipment().setLeggings(null);
                p.getEquipment().setBoots(null);
               
    
                Material hel = Material.getMaterial(this.getConfig().getString("buttons.b1.Helmet"));
                Material che = Material.getMaterial(this.getConfig().getString("buttons.b1.Chestplate"));
                Material leg = Material.getMaterial(this.getConfig().getString("buttons.b1.Leggings"));
                Material bot = Material.getMaterial(this.getConfig().getString("buttons.b1.Boots"));
               
               
                p.getEquipment().setHelmet(new ItemStack(hel));
                p.getEquipment().setChestplate(new ItemStack(che));
                p.getEquipment().setLeggings(new ItemStack(leg));
                p.getEquipment().setBoots(new ItemStack(bot));
               
                p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
                p.getInventory().addItem(new ItemStack(Material.ENDER_PEARL, 16));
                p.getInventory().addItem(new ItemStack(Material.BREAD, 6));
            }
        }
    Помогите!! Нужно чтобы при нажатии на кнопку в заданных координатах удалялся старый инвентарь, выдавались некие предметы и одевалась необходимая броня.

    Столкнулся с тем ,что не работает кнопка вообще и пишет лог, когда если я просто вписываю все данные в код, а не в конфиг все работает

    И еще, как сделать чтобы вещи в конфиге можно было написать любое количество, а не определенное

    вот конфиг:
    Код:
    buttons:
        b1:
            x: -727
            y: 184
            z: 46
           
            items:
            - BREAD, 6
           
            Helmet: LEATHER_HELMET
            Chestplate: AIR
            Leggings: AIR
            Boots: AIR
     
  2. Хостинг MineCraft
    <
  3. UniWest

    UniWest Активный участник Пользователь

    Баллы:
    66
    Skype:
    CrazyLee1337
    Имя в Minecraft:
    Reflect1on
    Может делать в конфиге ячейку с количеством? И зачем ты делаешь так много проверок? Ты мог все уместить в две.
     
  4. Автор темы
    dnebik

    dnebik Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    ну так вот я посидел немного изменил код вот что получилось:
    Код:
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e){
            Player p = e.getPlayer();
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getClickedBlock().getType() == Material.STONE_BUTTON && !e.getClickedBlock().isBlockPowered()){
                FileConfiguration config = this.getConfig();
                Integer ex = e.getClickedBlock().getX();
                Integer ez = e.getClickedBlock().getZ();
                Integer ey = e.getClickedBlock().getY();
             
                for(int g = 1; g < 2; g++){     //необращаем внимания
                Integer x = config.getInt("Buttons." + g + ".coords.x");
                Integer z = config.getInt("Buttons." + g + ".coords.z");
                Integer y = config.getInt("Buttons." + g + ".coords.y");
    
                p.sendMessage("event: " + "x: " + ex + "y: " + ey + "z: " + ez );
                p.sendMessage("event: " + "x: " + x + "y: " + y + "z: " + z );
             
                if(x == ex){
                    p.sendMessage("x");
                }
             
                if(y == ey){
                    p.sendMessage("y");
                }
             
                if(z == ez){
                    p.sendMessage("z");
                }
             
             
                if( (z == ez) && (y == ey) && (x == ex)){
    
    ....
    [​IMG]

    и я уже сижу и играю в найди 5 отличий...
     
  5. Автор темы
    dnebik

    dnebik Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    я и выложил проблемное место, вы кажется не поняли проблему. Конфиг работает, о чем говорит дэбаг, который я специально прекрипил.
    А вот проблема такая- у меня есть координаты кнопки в конфиге и координаты кнопки на которую нажимаешь, а когда я сравниваю координаты, чтобы узнать есть ли нажатая кнопка в конфиге, он мне говорит, что только координаты Z равны, когда дэбаг показывает идентичные друг другу координаты не только по Z
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Вам бы немного основы Java повторить. Оператор == сравнивает ссылки на объекты и значения примитивов. Таким образом Integer нельзя сравнивать через ==, приведите сравниваемые значения к типу int
     
  7. Автор темы
    dnebik

    dnebik Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    Да, вы правы, изменил на:
    Код:
                int ex = e.getClickedBlock().getX();
                int ez = e.getClickedBlock().getZ();
                int ey = e.getClickedBlock().getY();
               
                int x =  config.getInt("Buttons." + g + ".coords.x");
                int z = config.getInt("Buttons." + g + ".coords.z");
                int y = config.getInt("Buttons." + g + ".coords.y");
    [DOUBLEPOST=1429616460,1429616421][/DOUBLEPOST]буду знать
     
Статус темы:
Закрыта.

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