Pesquisar na Comunidade
Mostrando resultados para as tags ''custom''.
Encontrado 2 registros
-
O que é uma exception? Exception, de forma geral, são erros durante a execução de um código. Exemplos: java.lang.NullPointerException (Quando retorna null) java.lang.NoClassDefFoundError (Quando não acha a classe) EventExeception (Quando ocorre um erro no evento bukkit) Como criar uma custom exception? É simples, é como criar um objeto custom, porém é só extender a classe Exception public class HomeExeception extends Exception{ public HomeExeception(String erro) { super(erro); } } Como usar sua custom exception? Também é simples, é só adicionar throws <Exeception>, e quando precisar, lançar a exeception (throws new) public int getHomes(Player p) throws HomeExeception{ int TotalDeHomes = x...; if (TotalDeHomes == 0) { throw new HomeExeception("O player "+p.getName()+ " não tem nehuma home"); // Funciona como um return, o código abaixo não vai ser mais lido } return TotalDeHomes; }
-
#OldButGold Olá queridas pessoas Hoje iremos aprender a fazer eventos personalizados para seu plugin, eu utilizo muito esses eventos personlizados quando eu tenho que constantemente adiconar métodos a um comando ou listener. Ou mesmo para complementar minhas APIs, mas você pode utilizar para o que quiser, e acredite em mim, isso irá facilitar sua vida, e é muito facil!. Bom, imaginemos que temos um plugin de broadcast, irei inventar um código aqui pois estou sem IDE no momento: public class BroadcastCmd implements CommandExecutor{ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){ if(cmd.getName().equalsIgnoreCase("Broadcast"){ //faz de conta que tem todo o bang do broadcast, para ficar bonitin, vo inventar um void broadcast(sender,mensagem); } return false; } } Então nosso plugin permite o player da broadcast, o código bobo que postei não nos importa, é só uma base, o que importa e o que vem a seguir. Crie uma classe para o evento, ele tem que dar extend Event e ter uma handler list, é o essencial, você não ira utilizar os handlerlist mas e um requerimento do construtorEvent então, vamos criar a classe com o nome do evento(mais pratico assim), PlayerBroadcastEvent. public final class PlayerBroadcastEvent extends Event { private static final HandlerList handlers = new HandlerList(); public HandlerList getHandlers() { return handlers; } public static HandlerList getHandlerList() { return handlers; } } Pronto, temos nossa base criada! Simples não? Agora que vem a sua parte, o que seu evento irá precisar guardar? O que o programdor poderá mudar no evento? Isso é com você, mas para eu ensinar o resto vamos supor que nosso evento de bradcast irá permitir pegar o jogador que mandou o broadcast e pegar a mensagem, apenas isso :tongue: Só faze o construtor e os getters and setters: public final class PlayerBroadcastEvent extends Event { private static final HandlerList handlers = new HandlerList(); private Player player; private String mensagem; public PlayerBroadcastEvent(Player player,String mensagem){ this.player = player; this.mensagem = mensagem; } public Player getPlayer(){ return player; } public String getMensagem(){ return mensagem; } public HandlerList getHandlers() { return handlers; } public static HandlerList getHandlerList() { return handlers; } } Pronto, nosso evento esta praticamente pronto, mas como ele vai advinhar que o player irá dar o broadcast? Simples, precisamos chamar o evento, vamos voltar a nossa classe do comando e chamar o evento, você vai entender facilmente: public class BroadcastCmd implements CommandExecutor{ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){ if(cmd.getName().equalsIgnoreCase("Broadcast"){ //faz de conta que tem todo o bang do broadcast, para ficar bonitin, vo inventar um void broadcast(sender,mensagem); Bukkit.getServer().getPluginManager().callEvent(new PlayerBroadcastEvent(sender,mensagem));//chama o evento, e define seus atributos. } return false; } } Pronto, nosso evento ta feito! para usar só fazer ele nomalmente como event handler @EventHandler public void testeEvento(PlayerBroadcastMessageEvent e){ String msg = e.getMessage(); Player player = e.getPlayer(); } Pronto galera, facil não? Gostou? Comente! COMO PERMITIR QUE O EVENTO SER CANCELAVEL A única diferença é que você implementa Cancellable, como é simples, eu postarei o código para vocês terem um exemplo public final class PlayerBroadcastEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); private Player player; private String mensagem; private boolean cancelled; public PlayerBroadcastEvent(Player player,String mensagem){ this.player = player; this.mensagem = mensagem; } public Player getPlayer(){ return player; } public String getMensagem(){ return mensagem; } public boolean isCancelled() { return cancelled; } public void setCancelled(boolean cancel) { cancelled = cancel; } public HandlerList getHandlers() { return handlers; } public static HandlerList getHandlerList() { return handlers; } } public class BroadcastCmd implements CommandExecutor{ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){ if(cmd.getName().equalsIgnoreCase("Broadcast"){ //faz de conta que tem todo o bang do broadcast, para ficar bonitin, vo inventar um void PlayerBroadcastEventevent evento = new PlayerBroadcastEvent(sender,mensagem); Bukkit.getServer().getPluginManager().callEvent(evento);//chama o evento, e define seus atributos. if(!evento.isCancelled()){ broadcast(sender,mensagem);//CHECA SE O EVENTO NÃO FOI CANCELADO } } return false; } }