-
Total de itens
65 -
Registro em
-
Última visita
Tudo que Out of Orbit postou
-
Claro que é possível, (incrivelmente) a própria equipe do Google Cloud disponibiliza um tutorial para isso https://cloud.google.com/solutions/gaming/minecraft-server
-
Você está tentando alocar uma quantidade X de memória porém o JVM não está conseguindo, por isso o erro. Tenta diminuir a quantidade de memória RAM que você está tentando alocar para uma quantia que sua máquina aguente
-
https://docs.oracle.com/javase/tutorial/
-
[Tutorial] Como usar corretamente prioridades nos eventos Bukkit!
tópico respondeu ao RUSHyoutuber de Out of Orbit em Tutoriais
Como assim cancelar só com prioridade baixa? Qualquer plugin de login usa HIGHEST- 22 respostas
-
- priority
- eventpriority
- (e %d mais)
-
Como verificar se o inventário de um player esta vazio
tópico respondeu ao RUSHyoutuber de Out of Orbit em Tutoriais
O método firstEmpty() retorna -1 se não tem slots vazios. Então o método vai retornar true se o inventário estiver vazio. Não precisa verificar armadura ou item no cursor já que eles fazem parte do getContents() ... -
Como verificar se o inventário de um player esta vazio
tópico respondeu ao RUSHyoutuber de Out of Orbit em Tutoriais
Ou então usa o método Inventory#firstEmpty(); bem mais simples private boolean isEmpty(Inventory inv) { return inv.firstEmpty() == -1; } -
Ué, se na config estiver Linguagem: BR tu vai buscar o arquivo br.yml
-
notícia MC-Central, maior rede de SkyWars de 2014 foi adicionada a Blacklist da Mojang
tópico respondeu ao String de Out of Orbit em Notícias
EULA é bem claro, concordam ser ler porque querem. Hypixel obedece o EULA, estão aí comentando mas nem conhecem. Práticamente não existem vantagens em ser vip, além disso os boosters que são vendidos são globais, todos têm acesso à eles, tendo comprados ou não. E para quem está preocupado, não há razão para isso. A Mojang não coloca servidores pequenos na blacklist. -
inativo ShieldCraft -> O fullpvp mais very hard da 1.5x
tópico respondeu ao SnowNãoDEV de Out of Orbit em Arquivos
Tente se basear na economia brasileira e você conseguirá criar o servidor mais hardcore em questão de economia já feito no minecraft. -
análise [Aceita] Remodelação das áres de programação e design
tópico respondeu ao uNext de Out of Orbit em Sugestões aceitas
Não faz sentido dividir a área de programação em Programação e Desenvolvimento web, visto que o segundo se encaixa no primeiro. Também não vejo a necessidade de criar sub-áreas destinadas ao comércio, considerando que a área Mercado já cumpre seu papel muito bem. Não apoio. -
Para ter um site como a GamersBoard, você precisa criar um fórum IPB. Você pode adquirir uma licença aqui https://invisioncommunity.com/buy/ O que muda de um plano para o outro são as características da hospedagem, por exemplo: Plano A permite que você tenha 5gb de arquivos, enquanto o Plano B permite que você tenha 25gb. Claro que as diferenças não são apenas essas, dei apenas um exemplo.
-
[Bukkit] Broadcast a cada 60 segundos
pergunta respondeu ao FelipeDye de Out of Orbit em Dúvidas resolvidas
Pra quê esse tanto de cast desnecessário men Você pode fazer uma lista List<String> list = Arrays.asList("Mensagem 1", "Mensagem 2", "Mensagem 3"); E usar a mesma lógica que o WhiteDev_ fez acima, mas não com esses casts ae -
[Bukkit] Broadcast a cada 60 segundos
pergunta respondeu ao FelipeDye de Out of Orbit em Dúvidas resolvidas
Você pode fazer usando a interface BukkitRunnable para determinar um método que será chamado a cada X ticks. Não sei como você pretende pegar as mensagens(via config.yml, escrito no próprio código) então você implementa isso. Vou deixar aqui o link da documentação, recomendo que você leia. (LINK) new BukkitRunnable() { @Override public void run() { // Seu método para pegar a mensagem String message = ... Bukkit.broadcastMessage(message); } }.runTaskTimer(plugin, 20L, 20L); -
Não tenho certeza, mas acho que isso está acontecendo porque esse código aí está assíncrono. Faça um teste, chame o método de forma síncronizada e veja se o erro persiste.
-
inativo [DUVIDA] Vale apena aprender Python?
tópico respondeu ao Kodinha de Out of Orbit em Arquivos
Não conheço muito de Python, nunca me interessei. Mas pelo o que eu sei, é uma ótima linguagem para mexer com inteligência artificial, então se você tem interesse por IA é uma boa ideia se aprofundar mais. -
resolvido [Duvida] Tem como eu transferir o valor de um plugin de economia pra outro!?
pergunta respondeu ao yLR111 de Out of Orbit em Dúvidas resolvidas
É possível, tenta dar uma olhada na source do plugin https://github.com/SrEdition/Solary-Economy Aí você vê como é a estrutura de dados MySQL e pensa numa maneira de fazer a transferência -
Pra ser sincero eu ainda não sei, estou meio divido entre medicina, direito e economia.
-
Sim, de fato não é muito vantajoso se apronfudar na API do Bukkit visando a carreira profissional. Mas eu não pretendo seguir uma carregueira em ciência da programação, eu programo mais por diversão mesmo. Obrigado.
-
[Tutorial] Descomplicando a API Reflection
tópico respondeu ao Out of Orbit de Out of Orbit em Tutoriais
Não, porque as classes desse jogo já estão compiladas. Com reflection você pode alterar apenas objetos. Imagine que você quer fazer um programa que o usuário digite o nome de uma classe e então seja exibido todos os métodos, atríbutos, superclasse, construtor etc. Não seria viável reescrever todo o código para cada classe, aí que entra o reflection.- 8 respostas
-
- tutorial
- reflection
-
(e %d mais)
Tags:
-
[Tutorial] Descomplicando a API Reflection
tópico respondeu ao Out of Orbit de Out of Orbit em Tutoriais
Obrigado, esse tutorial foi bem básico. Mas teve algo específico do tutorial que não tenha entendido? Obrigado, pois é, reflection é um pouco chato de aprender kk :v- 8 respostas
-
- tutorial
- reflection
-
(e %d mais)
Tags:
-
resolvido [Duvida] Plugin de Vanish, admin ver quem estiver em /v
pergunta respondeu ao yLR111 de Out of Orbit em Dúvidas resolvidas
Ah, desculpa. Interpretei a questão errado. private Set<Player> vanished = new HashSet<>(); public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "§cUse comando in-game!"); return true; } Player p = (Player) sender; if (p.hasPermission("obycraft.vanish")) { if ((cmd.getName().equalsIgnoreCase("vanish")) || (cmd.getName().equalsIgnoreCase("v"))) { if (!vanished.contains(p)) { Bukkit.getOnlinePlayers().stream() .filter(pl -> !pl.hasPermission("obycraft.vanish")) .forEach(pl -> pl.hidePlayer(p)); vanished.add(p); p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível ativado"); return true; } else { Bukkit.getOnlinePlayers().stream() .forEach(pl -> pl.showPlayer(p)); vanished.remove(p); p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível desativado"); } } } return false; } E para verificar se o inventário do jogador está cheio, tenta isso aqui: if (p.getInventory().firstEmpty() == -1) { // Está cheio... } else { // Não está cheio } -
resolvido [Duvida] Plugin de Vanish, admin ver quem estiver em /v
pergunta respondeu ao yLR111 de Out of Orbit em Dúvidas resolvidas
private Set<Player> vanished = new HashSet<>(); public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "§cUse comando in-game!"); return true; } Player p = (Player) sender; if (p.hasPermission("obycraft.vanish")) { if ((cmd.getName().equalsIgnoreCase("vanish")) || (cmd.getName().equalsIgnoreCase("v"))) { if (!vanished.contains(p)) { Bukkit.getOnlinePlayers().stream() .filter(pl -> !vanished.contains(pl)) .forEach(pl -> pl.hidePlayer(p)); vanished.add(p); p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível ativado"); return true; } else { Bukkit.getOnlinePlayers().stream() .forEach(pl -> pl.showPlayer(p)); vanished.remove(p); p.sendMessage(ChatColor.GREEN + "§d§l[VANISH] §aModo invisível desativado"); } } } return false; } Troquei a lista por um set, pois quando utilizado apenas para pesquisas rápidas, é mais eficiente Fiz com streams pra filtrar os jogadores que não estão no modo vanish, daí os que não estão não verão aqueles que estão, Já os que estão no modo vanish verão. -
O que é reflection? Reflection é um recurso do java que permite manipular e editar classes, métodos, atributos, etc em tempo de execução. Com isso, por exemplo, é possível instanciar uma classe sem que a mesma seja adicionada ao projeto. Além disso, dá até para modificar e acessar construtores, atributos e métodos privados. Sabe aquela string privada que você ficava doido querendo mudar? Com reflection isso é possível. Mas como manipular as classes? Primeiro é preciso adquirir uma referência à classe, mas como fazer isso? Existem três maneiras de fazer isso: // Através de uma instância da classe String string = "Reflection é legal"; Class<?> clazz = string.getClass(); // Através da própria classe Class<String> clazz = String.class; // Através do método Class#forName(String className); try { Class<?> clazz = Class.forName("java.lang.String"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Como foi possível observar, nos dois primeiros métodos é necessário que as classes em questão façam parte do projeto. Já no último método, basta que você tenha o nome da classe. Mas é só isso? Não, isso é só a ponta do iceberg, a partir daqui infinitas possibilidades são abertas para a manipulação da classe. Constructor (docs) O que é um Constructor? É uma classe que permite instanciar as classes. Como conseguir os construtores de uma classe? // Através do método Class#getConstructors(); Constructor[] constructors = clazz.getConstructors(); /* Através do método Class#getConstructor(Class<?>... parameterTypes); * Note que com esse método é necessário especificar os parâmetros do construtor */ try { Constructor<?> constructor = clazz.getConstructor(String.class); } catch (NoSuchMethodException e1) { e1.printStackTrace(); } catch (SecurityException e2) { e2.printStackTrace(); } Construtor em mãos, mas como conseguir uma instância da classe? É agora que utilizaremos o método Constructor#newInstance(Object... initargs); /* Note que os parâmetros que você utilizar no newInstance(); * Devem ser idênticos ao do construtor que você está utilizando */ try { Constructor<?> constructor = clazz.getConstructor(String.class); Object string = constructor.newInstance("Criei uma string com Reflection =D"); } catch (Exception e) { e.printStackTrace(); } Mas se o método newInstance() retorna um Object, como que eu irei utilizar os métodos e atributos da instância? Eu tive todo esse trabalho para instância uma classe atoa? Não. Veremos a seguir como manipular os métodos e atributos da nossa instância. Field (docs) Esta é a classe que permite acessar e modificar os atributos de uma instância. Para acessar os atributos da classe vamos utilizar o método Class#getDeclaredFields(); Field[] field = clazz.getDeclaredFields(); Mas e se eu precisar de buscar por um atributo específico? Tal como a array de carácteres de uma String? // Para isso utilizaremos o método Class#getDeclaredField(String name); try { Field field = clazz.getDeclaredField("value"); } catch (Exception e) { e.printStackTrace(); } Talvez você tenha percebido que para conseguir aquele atributo, utilizamos o método da Classe, e não da instância que criamos agora a pouco. Se não percebeu, tudo bem, mas agora deve estar se perguntando, onde entra o objeto que fizemos? Nós iremos utilizar o método Field#get(Object object); onde object é a instância de onde vamos buscar o atributo especificado. Mas e se for um atributo estático, que não pertence ao escopo da instância mas sim ao da classe? Basta colocar null. Mas antes de acessarmos o atributo, você talvez tenha pensado: "Mas eu não sabia da existência desse atributo". Pois é, eu também não sabia, tive que olhar na source da classe String. Isso é porque o atributo é privado, então para acessarmos ele é necessário um método bem especial, o AccessibleObject#setAccessible(boolean flag); field.setAccessible(true); Agora sim podemos pegar o atributo. try { Object value = field.get(string); } catch (Exception e) { e.printStackTrace(); } Mas o atributo value é uma array, o que fazer? try { Object[] value = (Object[]) field.get(string); } catch (Exception e) { e.printStackTrace(); } Basta fazer um cast. Method (docs) Agora chega a parte mais interessante, os métodos. Assim como o Field, para conseguir os métodos de uma classe utilizaremos Class#getDeclaredMethods(); Method[] methods = clazz.getDeclaredMethods(); Apesar da semelhança para conseguir os métodos declarados, existe uma pequena diferença na hora de buscar por um método específico, pois além do nome, é necessário apresentar os parâmetros do método em questão. Como exemplo pegaremos o método String#length(); /* Note que caso o método em questão não precise de argumentos * Só é necessário o nome do mesmo: clazz.getDeclaredMethod("length"); /* try { Method method = clazz.getDeclaredMethod("indexOf", String.class); } catch (Exception e) { e.printStackTrace(); } Agora você deve ter notado que a nossa instância não fui utilizada né? Para chamar o método nós precisamos do método Method#invoke(Object obj, Object... args); try { method.invoke(string, "Criei"); } catch (Exception e) { e.printStackTrace(); } Observação: Assim como no Field, se o método for estático basta colocar o primeiro parâmetro como null. Considerações finais Este tutorial foi bem simples pois ele foca nas classes mais usadas do pacote java.lang.reflect Você pode ter mais informações sobre reflection acessando esses links: https://docs.oracle.com/javase/tutorial/reflect/ http://www.oracle.com/technetwork/articles/java/javareflection-1536171.html
- 8 respostas
-
2
-
- tutorial
- reflection
-
(e %d mais)
Tags:
-
How to resumir o Brasil
-
Não sei se é o método mais eficiente, mas ele funciona. Fiz com streams, daí ele filtra as localizações por perto, se não tiver nenhuma ele adiciona no mapa. Mas se já tiver, ele cancela o evento e coloca no mapa. private Map<Location, Integer> blocks = new HashMap<>(); @EventHandler public void onPlace(BlockPlaceEvent e) { Block block = e.getBlock(); if (block.getType() == Material.DIAMOND_BLOCK) { // Verifica se o bloco é de diamante Location loc1 = block.getLocation(); // Pega a localização do bloco Object[] array = blocks.keySet().stream() // Pega um stream das chaves do mapa .filter(l -> isNear(loc1, l, 3)) // Filtra as localizações por localizações próximas .toArray(); // Pega a localização que está dentro do filtro estabelecido if (array.length == 0) // Se a array estiver vazia, não há blocos por perto blocks.put(loc1, 1); // Adiciona a localização do bloco no mapa else { block.setType(Material.AIR); // Muda o material do bloco para AIR blocks.replace((Location) array[0], blocks.get(array[0]) + 1); // Atualiza o mapa, adicionando + 1 } } } private boolean isNear(Location o1, Location o2, int range) { if (Math.abs(o1.getX() - o2.getX()) <= range && Math.abs(o1.getY() - o2.getY()) <= range && Math.abs(o1.getZ() - o2.getZ()) <= range) return true; return false; } Daí quando o jogador quebra um bloco de diamante, ele verifica se a localização daquele bloco está dentro do mapa Se estiver, ele cancela o evento, quebra o bloco naturalmente e dropa os blocos na quantidade que estava no mapa. @EventHandler public void onBreak(BlockBreakEvent e) { Block block = e.getBlock(); if (block.getType() == Material.DIAMOND_BLOCK) { Location loc = block.getLocation(); if (blocks.containsKey(loc)) { // Verifica se a localização está no mapa e.setCancelled(true); // Cancela o evento block.breakNaturally(); // Quebra o bloco naturalmente loc.getWorld().dropItemNaturally(loc, new ItemStack(Material.DIAMOND_BLOCK, blocks.get(loc)-1)); // Dropa os blocos blocks.remove(loc); // Remove a localização do mapa } } }