Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Хешмап.
@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())); } }
Ну так, что? Помоги, раз такой умный) Я ведь только новичок)Проорал.
Ну во первых. интеракт выполняется первым. Во вторых saveloc.get получить валуе их мапы.Ну так, что? Помоги, раз такой умный) Я ведь только новичок)
Мне нужно, чтобы из одного условия (эвента) можно было переносить данные для другого условия (эвента) Как это сделать?!
Блин, я не понял((( Напиши пж мини-код)Ну во первых. интеракт выполняется первым. Во вторых saveloc.get получить валуе их мапы.
Вы не поняли. Как я напиши: p.sendMessage("X = " + loc.getBlockX()); если у меня будет другой Event (к примеру тот самый interact)Метод .put() - делать нужно, отдельно от метода .sendMessage();
Потому как метод .put() - имеет возвращаемое значение. В вашем контексте, оно выдает null.
Если вы хотели бы отобразить X. Достаточно было сделать вот такую строчку.
Код:p.sendMessage("X = " + loc.getBlockX());
Хоть один нормальный ответ. Спасибо большое!Ну в этом случае. Вам необходимо результат, где-то сохранить. На более высоком уровне. Т.е в теле класса, создать переменную, или список, или на худой конец мапу. Пример:
Это как пример. Т.к вам еще следует сделать проверки. И заместо переменной Location - это может быть АррайЛист к примеру.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 } }
Конкретно в вашем случае. На тот код.
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 - что сохраняли в прошлом эвенте. }