-
Total de itens
65 -
Registro em
-
Última visita
Tudo que Out of Orbit postou
-
Se eu tiver algum tempo livro eu faço amanhã, semana de provas o tempo voa
-
Obrigado, acho que o próximo tutorial será sobre reflections, mas não focando em NMS. Será um tutorial a parte, mas que é necessário para seguir o resto do tutorial, já que muitas vezes é preciso acessar atributos privados, etc
-
dev [Bukkit] Mensagem de boas-vindas!
pergunta respondeu ao SnowNãoDEV de Out of Orbit em Dúvidas resolvidas
@EventHandler public void onJoin(PlayerJoinEvent event) { event.setJoinMessage("§7§lS§7hield§7§lA§7rena ➽ §fSeja bem-vindo §c" + event.getPlayer().getName() + "§fao servidor!"); } -
inativo [Start.bat] Codigo de inicialização do servidor
tópico respondeu ao Astaroth de Out of Orbit em Arquivos
Só adicionar -Dfile.encoding=UTF8, por exemplo @ECHO OFF java -Dfile.encoding=UTF8 -Xms512M -Xmx1024M -jar Spigot.jar PAUSE -
Faz assim. Na variável CLASSPATH você coloca isso aqui: ;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\htmlconverter.jar;%JAVA_HOME%\jre\lib;%JAVA_HOME%\jre\lib\rt.jar; E na variável Path você adiciona isso aqui no final: ;%JAVA_HOME%\bin Depois abre o cmd e digita java -version Se exibir a versão instalada, o java está configurado corretamente.
-
Coloca no PATH também ;%JAVA_HOME%\bin
-
Você instalou o java corretamente? Configurou a variável JAVA_HOME?
-
Criando comando e registrando automaticamente sem usar plugin.yml
tópico respondeu ao smgabriel de Out of Orbit em Projetos
Você pode utilizar o segundo construtor public HelloWorld(List<String> aliases) { super("helloworld", "descricao", "mensagem de uso", aliases); } Ou então usar o método herdado setAliases List<String> aliases = new ArrayList<>(); aliases.add("hellow"); setAliases(aliases); -
Programação, plugins e confessionário kk
-
Você está tentando usar a variável plugin antes de atribuir um valor a ela String host = Main.plugin.getConfig().getString("MYSQL.HOST"); Você tenta chamar esse método na linha 38 plugin = this; E só atribui o valor na linha 46 Para resolver é só iniciar a variável plugin antes de chamar o método mysqlSetup
-
É sim, esse PlayerCommandPreprocessEvent#getMessage() retorna a mensagem inteira, até com o "/"
-
Na verdade o correto seria if (e.getMessage().equalsIgnoreCase("/pl")) { // código aqui... }
-
int x = 5000; if (points >= x) { /* Se a quantidade de pontos for maior ou igual à 5000 Vai fazer o que você quer...*/ }
-
UUID uuid = ... int points = Main.playePoints.getAPI().look(uuid);
-
resolvido Dúvida: ignoreCancelled / isCancelled
pergunta respondeu ao Ygor de Out of Orbit em Dúvidas resolvidas
O EventPriority funciona assim: LOWEST - Mais baixa LOW - Baixa NORMAL - Padrão HIGH - Alta HIGHEST - Mais alta MONITOR - Acima de todas Isso significa que um método com prioridade LOWEST sempre será chamado primeiro, depois o LOW e assim por diante. O HIGHEST serve para dar a palavra final, entende? Ele é chamado por último, mas nada que afete a performance. Por exemplo: Um plugin X tem um listener para o evento PlayerJoinEvent. Esse método está com a prioridade normal e altera a mensagem de login para "Alguém entrou". Mas nesse mesmo servidor tem o plugin Y, com prioridade HIGHEST e altera a mensagem para "Fulano logou". Como HIGHEST > NORMAL, a mensagem que será mostrada é "Fulano logou". Já a prioridade MONITOR serve literalmente para monitorar. Você não deve fazer alterações no evento com ele, tais como mudar drops na morte, mudar a mensagem de saída ou até mesmo cancelar o evento. Ele é muito usado em plugins de log, que precisa pegar o "evento final", que foi modificado por outros plugins. Não sei qual a prioridade o PlotMe usa, talvez seja a NORMAL. Então você pode usar a HIGHEST com o ignoreCancelled. Daí o evento será chamado depois do método do PlotMe, e se tiver sido cancelado seu método não será chamado. -
resolvido Dúvida: ignoreCancelled / isCancelled
pergunta respondeu ao Ygor de Out of Orbit em Dúvidas resolvidas
Se o ignoreCancelled estiver em true e o evento for cancelado, o método nem é chamado. Por exemplo: @EventHandler(priority = EventPriority.LOWEST) public void onBreak(BlockBreakEvent e) { e.setCancelled(true); } Como este código tem uma prioridade baixa, ele será chamado primeiro. @EventHandler(ignoreCancelled = true) public void onBreak2(BlockBreakEvent e) { System.out.println("Método chamado"); } Esse método acima é chamado depois do método anterior, no entanto o ignoreCancelled está em true. O método anterior cancelou o evento, então ele nem é chamado. public void onBreak3(BlockBreakEvent e) { if (e.isCancelled()) { System.out.println("Evento cancelado"); return; } System.out.println("Evento não cancelado"); } Já o método isCancelled(); retorna se o evento foi cancelado ou não. Então seria melhor utilizar o ignoreCancelled, pois o seu código ficaria menor e evitaria chamada de métodos desnecessários. -
NMS é a abreviação do pacote net.minecraft.server. Neste pacote estão as classes responsáveis pelo servidor e pela conexão entre o jogador e o servidor. É possível fazer várias coisas utilizando NMS, como enviar packets para jogadores, criar entidades customizadas, otimização no código, etc. Os packets são classes que contêm dados sobre o que está acontencendo no servidor. É a partir dessas classes que o servidor sabe quando um jogador mata um porco. Mas como você pode mandar seus próprios packets para um jogador? Acessando este link você verá todos os packets disponíveis atualmente. Irei dar um exemplo com o packet PacketPlayOutTitle, que é usado para enviar títulos e subtítulos. // A leitura pode ficar ficar um pouco comprometida com as barras invertidas: // {"text": "Tutorial NMS"} IChatBaseComponent titleText = ChatSerializer.a("{\"text\": \"Tutorial NMS\"}"); // Aqui estamos criando um novo packet, nota-se que esta classe tem vários construtores // Parâmetros: // EnumTitleAction - Tipo de título que será enviado (TITLE, SUBTITLE, etc) // titleText - // 20 - Tempo que o título levará para aparecer (em ticks) // 15 - Tempo que o título ficará na tela (em ticks) // 10 - Tempo que o título levará para sumir completamente (em ticks) PacketPlayOutTitle packet = new PacketPlayOutTitle(EnumTitleAction.TITLE, titleText, 20, 15, 10); Packet criado, mas como enviar ele para o jogador? Nós iremos utilizar o método CraftPlayer#getHandle(); CraftPlayer, é uma classe que implementa Player. Esta classe funciona como um intermediador entre o Bukkit e o EntityPlayer(do NMS). Então o que o método getHandle faz é retornar a classe EntityPlayer, desta maneira podemos acessar diretamente o PlayerConnection(conexão do jogador com o servidor) e enviar o packet: // Transformamos a classe player em EntityPlayer atráves // do método getHandle() EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle(); // Depois basta acessar o playerConnection e enviar o packet entityPlayer.playerConnection.sendPacket(packet); Apesar do NMS aparentar ser extremamente útil, existe um pequeno problema que o torna um pouco inviável. A compatibilidade. O que isso quer dizer? A cada versão do minecraft, o pacote do NMS é alterado: net.minecraft.server.v1_8_R3 [1.8.8] net.minecraft.server.v1_9_R2 [1.9.4] Existe algumas maneiras de burlar esse problema de incompatibildade, como utilizando reflection ou abstração. Mas eu não irei focar nisso por enquanto, pois não é o objetivo desse tópico em questão. Este tutorial foi apenas para introduzir o NMS para aqueles que não conheciam. Mais para frente eu irei fazer tutoriais mais avançados. Vale lembrar que se você utiliza maven, para ter acesso às classes do NMS e do CraftBukkit você terá que utilizar o BuildTools para trabalhar com as classes em seu repositório local.
-
Só usar o evento PlayerCommandPreprocessEvent @EventHandler public void onCommand(PlayerCommandPreprocessEvent e) { if (e.getMessage().equalsIgnoreCase("/plot")) { e.setCancelled(true); e.getPlayer().sendMessage("/plot auto"); } }
-
Pelo o que eu entendi, você já tem um plugin de plots, e quer mudar só a mensagem do comando /plot ?
-
Tem um tutorial aqui no fórum que ensina, clica aqui.
-
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if(sender instanceof Player) { Player p = (Player) sender; if(command.getName().equalsIgnoreCase("plot")) { if (args.length == 0) { p.sendMessage(""); p.sendMessage(" §a/plot auto - §fCriar um novo terreno."); p.sendMessage(""); } else { if (args[0].equalsIgnoreCase("auto")) { // Faça algo } } } } return false; }
-
if (p.getAllowFlight()) { p.setAllowFlight(false); p.sendMessage("§4Fly desativado"); } else { p.setAllowFlight(true); p.sendMessage("§aFly Ativado"); }
-
Não é a mesma coisa. O outro código foi feito com reflection, então funciona com qualquer versão, já esse aí só funciona em 1 versão.
-
java BlackBird: Uma simples API do Twitter feito em Java
tópico respondeu ao Langsdorf de Out of Orbit em Projetos
É uma API para desenvolvedores