Помогите [РЕШЕНО] Как объявить Глобальную переменную в плагине?

  • Автор темы Автор темы Nippels
  • Дата начала Дата начала

Nippels

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Nippels
Допустим в одном Event'е переменная равна 10 (BlockBreak..)
Во втором event'e смотрим чему равна переменная(..Interact..)

Такое возможно? Только без конфигов!
 
Если переменная, то public тип название = татата;
 
JavaScript:
    @EventHandler
    public void place(BlockPlaceEvent e){
        Block b = e.getBlock();
        Player p = e.getPlayer();
        Location loc = b.getLocation();
        World world = b.getWorld();
        HashMap<String, Integer> saveloc = new HashMap<>();
       
        if(b.getType() == Material.DIAMOND_BLOCK){
            //Записываю координаты алм блока
            saveloc.put("x", loc.getBlockX());
            p.sendMessage("X = "+saveloc.put("x", loc.getBlockX()));
           
        }
       
        if(b.getType() == Material.GOLD_BLOCK){
            //Хочу узнать координаты Алм блока
            p.sendMessage("X = " + saveloc.put("x", loc.getBlockX()));
        }
       
    }
После того как я ставлю Золотой блок в чат пишет: Null - Почему?!
 
JavaScript:
    @EventHandler
    public void place(BlockPlaceEvent e){
        Block b = e.getBlock();
        Player p = e.getPlayer();
        Location loc = b.getLocation();
        World world = b.getWorld();
        HashMap<String, Integer> saveloc = new HashMap<>();
      
        if(b.getType() == Material.DIAMOND_BLOCK){
            //Записываю координаты алм блока
            saveloc.put("x", loc.getBlockX());
            p.sendMessage("X = "+saveloc.put("x", loc.getBlockX()));
          
        }
      
        if(b.getType() == Material.GOLD_BLOCK){
            //Хочу узнать координаты Алм блока
            p.sendMessage("X = " + saveloc.put("x", loc.getBlockX()));
        }
      
    }
После того как я ставлю Золотой блок в чат пишет: Null - Почему?!
Проорал.
 
Ну так, что? Помоги, раз такой умный) Я ведь только новичок)
Мне нужно, чтобы из одного условия (эвента) можно было переносить данные для другого условия (эвента) Как это сделать?!
 
Ну так, что? Помоги, раз такой умный) Я ведь только новичок)
Мне нужно, чтобы из одного условия (эвента) можно было переносить данные для другого условия (эвента) Как это сделать?!
Ну во первых. интеракт выполняется первым. Во вторых saveloc.get получить валуе их мапы.
 
Ну во первых. интеракт выполняется первым. Во вторых saveloc.get получить валуе их мапы.
Блин, я не понял((( Напиши пж мини-код)
Чтобы сохранялись x y z и чтобы потом можно было их использовать в других условиях
Пж(((
 
Переменную хешмапа надо вынести за пределы метода евента, чтобы всё сохранялось как надо.
 
Метод .put() - делать нужно, отдельно от метода .sendMessage();
Потому как метод .put() - имеет возвращаемое значение. В вашем контексте, оно выдает null.
Если вы хотели бы отобразить X. Достаточно было сделать вот такую строчку.
Код:
p.sendMessage("X = " + loc.getBlockX());
Вы не поняли. Как я напиши: p.sendMessage("X = " + loc.getBlockX()); если у меня будет другой Event (к примеру тот самый interact)
 
Ну в этом случае. Вам необходимо результат, где-то сохранить. На более высоком уровне. Т.е в теле класса, создать переменную, или список, или на худой конец мапу. Пример:
Java:
Location blockLocation;

@EventHandler
public void blockPlaceEvent(PlaceEvent event) {
  blockLocation = event.getBlock().getLocation();
}

@EventHandler
public void interactEvent(PlayerInteractEvent event){
   if(event.getLocation().getBlockX().equals(blockLocation.getBlockX()){
        // something
   }
}
Это как пример. Т.к вам еще следует сделать проверки. И заместо переменной Location - это может быть АррайЛист к примеру.
Конкретно в вашем случае. На тот код.


Java:
HashMap<String, Integer> saveloc = new HashMap<>();

@EventHandler
    public void place(BlockPlaceEvent e){
        Block b = e.getBlock();
        Player p = e.getPlayer();
        Location loc = b.getLocation();
        World world = b.getWorld();
      
        if(b.getType() == Material.DIAMOND_BLOCK){
            //Записываю координаты алм блока
            saveloc.put("x", loc.getBlockX());
            p.sendMessage("X = "+ loc.getBlockX());
         
        }
     
        if(b.getType() == Material.GOLD_BLOCK){
            //Хочу узнать координаты Алм блока
            saveloc.put("x", loc.getBlockX());
            p.sendMessage("X = "+ loc.getBlockX());
        }
     
    }
@EventHandler
public void interact(PlayerInteractEvent event){
  int x = saveloc.get("x"); // Получили тот X - что сохраняли в прошлом эвенте.
}
Хоть один нормальный ответ. Спасибо большое!
 
Назад
Верх