Войти или зарегистрироваться

Помогите Эвент клика на табличку

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

GodlikE

Старожил
Пользователь
Баллы
103
Имя в Minecraft
GodlikE
Всем привет=) Подскажите эвент, когда игрок кликает ПКМ на табличку. Если такая тема уже существует, киньте на нее ссылку плиз=)
 
Последнее редактирование:
PlayerInteractEvent , через event.getClickedBlock() (или как там) проверяешь на табличку.
 
FirePoint, BeYkeR, спасибо=)
А если я, например, хочу, чтобы только при нажатии на ИМЕННО ЭТУ табличку выполнялась комманда?=)
 
FirePoint, BeYkeR, спасибо=)
А если я, например, хочу, чтобы только при нажатии на ИМЕННО ЭТУ табличку выполнялась комманда?=)
Напиши на табличку тест и сделай условие в коде, которое проверяло бы текст.
 
Напиши на табличку тест и сделай условие в коде, которое проверяло бы текст.
Спасибо=) Я решил делать через комманду=) У меня получился вот такой код:
Код:
public class MainClass extends JavaPlugin implements Listener {
   
    private Scoreboard score;
    private Team team1;
   
    public void onEnable()
    {
        getLogger().info("Battlefield mod was enabled");
        Bukkit.getPluginManager().registerEvents(this, this);
        team1 = score.registerNewTeam("green");
        score = Bukkit.getScoreboardManager().getNewScoreboard();
    }
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
        if(cmd.getName().equalsIgnoreCase("join team green"))
        {
            Player player = (Player) sender;
            player.setScoreboard(score);
            team1.addPlayer(player);
            player.sendMessage("Вы присоединились к зеленой комманде");
            player.getLocation().setZ(40);
        }
        return false;
    }
    public void onDisable()
    {
        getLogger().info("Battlefield mod was disabled");
    }
}
Эклипс в нем ошибки не видит, но сервер не запускает этот плагин( Не могли бы вы подсказать, почему так происходит, и найти ошибку?=))))
 
Когда "сервер не запускает", то он как правило пишет сообщение об ошибке. Можете его сюда привезти? Причин может быть множество.
 
Код:
public void onInteract(PlayerInteractEvent event) {
Block clickBlock = event.getClickedBlock();
Sign sign = (Sign)event.getClickedBlock().getState();

if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
     if(clickBlock.getType() == Material.WALL_SIGN || clickBlock.getType() == Material.SIGN_POST) {
          if(sign.getLine(0).equals(ChatColor.GOLD+"[My Pika]"))
          {
                 //code
          }
     }
}
}
Вот так вот я проверял текст на табличке.
 
Вот ошибка=)
 

Вложения

  • Снимок.JPG
    Снимок.JPG
    177,3 КБ · Просмотры: 41
GodlikE, ошибка в 21-й строке класса MainClass что-то у Вас там происходит. Null'ное ;)
Ошибка, возможно где-то раньше, просто в этой строке она себя проявляет.

Прочитайте внимательно текст ошибки - как правило это достаточно, чтобы понять что (или хотя бы где ;)) случилось.



Код:
public void onInteract(PlayerInteractEvent event) {
Block clickBlock = event.getClickedBlock();
Sign sign = (Sign)event.getClickedBlock().getState();

if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
     if(clickBlock.getType() == Material.WALL_SIGN || clickBlock.getType() == Material.SIGN_POST) {
          if(sign.getLine(0).equals(ChatColor.GOLD+"[My Pika]"))
          {
                 //code
          }
     }
}
}
Вот так вот я проверял текст на табличке.

И когда кликаешь кнопку или какой-то другой блок - получается Exception? Вы забыли убедиться, что кликнули именно по знаку, а сразу стали преобразовывать BlockState в Sign.
 
GodlikE, ошибка в 21-й строке класса MainClass что-то у Вас там происходит. Null'ное ;)
Ошибка, возможно где-то раньше, просто в этой строке она себя проявляет.

Прочитайте внимательно текст ошибки - как правило это достаточно, чтобы понять что (или хотя бы где ;)) случилось.





И когда кликаешь кнопку или какой-то другой блок - получается Exception? Вы забыли убедиться, что кликнули именно по знаку, а сразу стали преобразовывать BlockState в Sign.
Спасибо=) Ошибка была в этой строке: team = score.registerNewTeam("green");
Только я не пойму, что в ней не так?=)))
 
GodlikE, а score проинициализирована?
 
И когда кликаешь кнопку или какой-то другой блок - получается Exception? Вы забыли убедиться, что кликнули именно по знаку, а сразу стали преобразовывать BlockState в Sign.
Прости, но я не очень понял? Чего тут именно не хватает? Просто это у меня работало прекрасно! Какие с этим могу быть проблемы? Скажи, я закину это себе.
 
Прости, но я не очень понял? Чего тут именно не хватает? Просто это у меня работало прекрасно! Какие с этим могу быть проблемы? Скажи, я закину это себе.
Вы сначала делаете прослушку райтклика, а только потом проверяете куда кликнули.
Грубо говоря, при обычном клике по абсолютно любому блоку (КРОМЕ таблички) срабатывает первый if и просто отдает эксэпшн.

Надеюсь, немного "доступнее" объяснил.
 
Последнее редактирование:
И ещё это из условия убрать:
Код:
event.getAction() == Action.RIGHT_CLICK_AIR
 
makssof, человек настроен доброжелательно и улыбается. Привык он к таким смайликам, зачем приставать? )))
 
makssof, человек настроен доброжелательно и улыбается. Привык он к таким смайликам, зачем приставать? )))
Нет, я нечего не имею против, просто я не видел ни одного его сообщения без "=)". :)
offtopic.stop();
 
Назад
Верх