Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

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
 
Может делать в конфиге ячейку с количеством? И зачем ты делаешь так много проверок? Ты мог все уместить в две.
 
ну так вот я посидел немного изменил код вот что получилось:
Код:
    @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)){

....

X3Zg-kAIgXk.jpg


и я уже сижу и играю в найди 5 отличий...
 
А консоль что выдаёт?
И где код с конфигом? Прикольный такой, то что работает выложил и ждёт помощи, когда проблемный код никому не доступен
 
А консоль что выдаёт?
И где код с конфигом? Прикольный такой, то что работает выложил и ждёт помощи, когда проблемный код никому не доступен
я и выложил проблемное место, вы кажется не поняли проблему. Конфиг работает, о чем говорит дэбаг, который я специально прекрипил.
А вот проблема такая- у меня есть координаты кнопки в конфиге и координаты кнопки на которую нажимаешь, а когда я сравниваю координаты, чтобы узнать есть ли нажатая кнопка в конфиге, он мне говорит, что только координаты Z равны, когда дэбаг показывает идентичные друг другу координаты не только по Z
 
Java:
for(int g = 1; g < 2; g++){     //необращаем внимания
Нет уж, показывай весь код. В консоли ничего нет, да?
 
я и выложил проблемное место, вы кажется не поняли проблему. Конфиг работает, о чем говорит дэбаг, который я специально прекрипил.
А вот проблема такая- у меня есть координаты кнопки в конфиге и координаты кнопки на которую нажимаешь, а когда я сравниваю координаты, чтобы узнать есть ли нажатая кнопка в конфиге, он мне говорит, что только координаты Z равны, когда дэбаг показывает идентичные друг другу координаты не только по Z
Вам бы немного основы Java повторить. Оператор == сравнивает ссылки на объекты и значения примитивов. Таким образом Integer нельзя сравнивать через ==, приведите сравниваемые значения к типу int
 
Вам бы немного основы Java повторить. Оператор == сравнивает ссылки на объекты и значения примитивов. Таким образом Integer нельзя сравнивать через ==, приведите сравниваемые значения к типу int
О, у меня такое же было в команде отключения физики)
@UniWest, поэтому старайся везде использовать int. Как наставник твой говорю)
 
Вам бы немного основы Java повторить. Оператор == сравнивает ссылки на объекты и значения примитивов. Таким образом Integer нельзя сравнивать через ==, приведите сравниваемые значения к типу int

Да, вы правы, изменил на:
Код:
            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");

буду знать
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх