Ir para conteúdo

zAth

Membros
  • Total de itens

    729
  • Registro em

  • Última visita

Respostas na Comunidade

  1. zAth's postagem in Erro, plugin was marked as the answer   
    tens algo na config assim?
    1: qualquer coisa 2: outra coisa com um número antes do :
    Se for, coloca o número entre '' '1'
     
    .. prnt.sc down ..
  2. zAth's postagem in Editar uma ScoreBoard Simples was marked as the answer   
    Agradecimentos a @leonardosc pelo https://leonardosnt.github.io/jar-string-editor/ 
    http://www.mediafire.com/file/xlu23oajuqv08l4/HaskScoreEDIT_%281%29.jar
  3. zAth's postagem in [Duvida] Fornalha was marked as the answer   
    1. deve dar para fazer com Furnace#setBurnTime e Furnace#setCookTime mas nunca tentei fazer a fornalha queimar algo que não seja combustivel
    2. usa o FurnaceSmeltEvent#setResult
    3. Furnace#getInventory#getFuel, Furnace#getInventory#getSmelting, Furnace#getInventory#getResult .. tem setters tb
    4. cancela o FurnaceSmeltEvent
    5. tem três, FurnaceSmeltEvent, FurnaceBurnEvent, FurnaceExtractEvent
    6. 4.
     
    Furnace
  4. zAth's postagem in BukkitScheduler ou BukkitRunnable ? was marked as the answer   
    BukkitScheduler é meio que um "manager" para criar/cancelar BukkitRunnables
    BukkitRunnable é um Runnable ;-;
    Eu uso BukkitRunnable porque acho que fica mais organizado e mais fácil de cancelar se criar uma classe que extende o BukkitRunnable ao invés de ficar mexendo no BukkitScheduler.
     
    BukkitScheduler
     
     
     
    BukkitRunnable
     
     
  5. zAth's postagem in 3 Duvidas em java bukkit :D was marked as the answer   
    Inventory inventory = Bukkit.getServer().createInventory(null, InventoryType.ANVIL);
    player.openInventory(inventory);


    https://dev.bukkit.org/projects/simpleclans/pages/simple-clans1-api


    // verifica se o bloco é algum tipo de placa ( tem 2 tipos acho eu )
     
    Sign sign = (Sign) e.getClickedBlock().getState();
    sign.setLine(0, e.getPlayer.getName());
    sign.update(true);

  6. zAth's postagem in [Duvida] nome da entidade was marked as the answer   
    Não tem como por esse evento, eu usaria o playerinteract e verificava se o event.getAction() == Action.RIGHT_CLICK_BLOCK, se o jogador tem um ovo na mão e se é o ovo que vc quer, e se o evento não é cancelado ( importante, o worldguard por exemplo pode bloquear isso então precisa verificar ).. depois disso você spawna o mob e faz oq quiser.
    Como você estaria "simulando" o CreatureSpawnEvent, se quiser pode até chamar o evento para ele ser recebido por outros plugins mas não é necessário.
  7. zAth's postagem in Cooldown was marked as the answer   
    private HashMap<String, Long> cooldowns = new HashMap<>(); @EventHandler public void onQualquerCoisa(Event e){ if(!e.getPlayer().hasPermission("cooldown.bypass")) { long cooldown = 200; // 0.2 segundos = 200 milisegundos if (cooldowns.keySet().contains(e.getPlayer().getName().toLowerCase())) { if (cooldowns.get(e.getPlayer().getName().toLowerCase()) > System.currentTimeMillis()) { e.getPlayer().sendMessage("Em cooldown"); e.setCancelled(true); return; } cooldowns.put(e.getPlayer().getName().toLowerCase(), System.currentTimeMillis() + cooldown); } cooldowns.put(e.getPlayer().getName().toLowerCase(), System.currentTimeMillis() + cooldown); } // resto do seu código, ex.: teleporta } Nem sei quantas vezes passei esse código aqui no forum ;-; é o que mais pedem
  8. zAth's postagem in [Duvida] ItemStack em BlockPlaceEvent was marked as the answer   
    Não.
    Use outro evento como o interact, verifique se o action é RIGHT_CLICK_BLOCK e se o evento não é cancelado, a partir dae tem o que precisa num BlockPlace e o que você precisa.
  9. zAth's postagem in Método de preparar was marked as the answer   
    BukkitRunnable countdown;
     
    private void start(){
    countdown = new BukkitRunnable() {
    int count = 10;
     
    @Override
    public void run() {
    Bukkit.getServer().broadcastMessage(count);
     
    if(count <= 0)
    countdown.cancel();
    else
    count--;
    }
    };
    countdown.runTaskTimer(this, 0, 20); // de segundo em segundo
    }
     
    private void stop(){
    try {
    countdown.cancel();
    } catch (Exception ignored) { }
    }

  10. zAth's postagem in Mundo com baús was marked as the answer   
    Olha o exemplo que o jeta deu mas não precisa criar um ChunkGenerator, apenas um BlockPopulator e ae usa o WorldInitEvent e seta o BlockPopulator com
    event.getWorld().getPopulators.add(new SeuBlockPopulator()); Então só precisa olhar essa classe e ter em conta que:
    o método populate() só é chamado 1 vez em cada chunk que é gerada para pegar as verdadeiras coordenadas da chunk tem que usar (source.getX() << 4), se por exemplo uma chunk começar em x:48 z:48 o source.getX() não retorna 48 .. mas o (source.getX() << 4), por isso que no exemplo tem int centerX = (source.getX() << 4) + random.nextInt(16);, para pegar o canto da chunk e adicionar um número randômico de 0 a 15. para pegar o block à superficie int centerY = world.getHighestBlockYAt(centerX, centerZ); O resto acho que dá para entender do exemplo e como spawnar o baú e setar itens já falaram aqui.
  11. zAth's postagem in Pegar blocos was marked as the answer   
    Location location = ... ; // sua location do centro Block east = location.clone().add(1, 0, 0).getBlock(); Block west = location.clone().add(-1, 0, 0).getBlock(); Block south = location.clone().add(0, 0, 1).getBlock(); Block north = location.clone().add(0, 0, -1).getBlock(); Pode pegar o bloco que está a norte, sul, este e oeste de você mas pegar o da direita/Esquerda/frente/trás é diferente porque precisa de ver para que direção o jogador está virado.. se é isso mesmo que quer fala ae que tb tenho método para isso
  12. zAth's postagem in [Duvida] Por que nada acontece ? (MYSQL & SQLite) was marked as the answer   
    Eu possl ser cego, mas não vi nenhum sts2.execute(); '-'
    Você fechou os statement mas nem abriu.
  13. zAth's postagem in Sobre Cooldown was marked as the answer   
    private HashMap<String, Long> cooldowns = new HashMap<>();
     
    public String getTime(String playerName) {
    if(!cooldowns.containsKey(playerName))
    return "agora";
     
    long time = cooldowns.get(playerName);
     
        if (time == 0) {
            return "nunca";
        }
     
        long day = TimeUnit.MILLISECONDS.toDays(time);
        long hours = TimeUnit.MILLISECONDS.toHours(time) - (day * 24);
        long minutes = TimeUnit.MILLISECONDS.toMinutes(time) - (TimeUnit.MILLISECONDS.toHours(time) * 60);
        long seconds = TimeUnit.MILLISECONDS.toSeconds(time) - (TimeUnit.MILLISECONDS.toMinutes(time) * 60);
     
        StringBuilder sb = new StringBuilder();
        if (day > 0) {
            sb.append(day).append(" ").append(day == 1 ? "dia" : "dias").append(" ");
        }
        if (hours > 0) {
            sb.append(hours).append(" ").append(hours == 1 ? "hora" : "horas").append(" ");
        }
        if (minutes > 0) {
            sb.append(minutes).append(" ").append(minutes == 1 ? "minuto" : "minutos").append(" ");
        }
        if (seconds > 0) {
            sb.append(seconds).append(" ").append(seconds == 1 ? "segundo" : "segundos");
        }
     
        String diff = sb.toString();
        return diff.isEmpty() ? "agora" : diff;
    }
     
    public void addItem(Player player){
    Long delay = TimeUnit.HOURS.toMillis(24); // cooldown de 24 hora
    if (cooldowns.keySet().contains(player.getName().toLowerCase())) {
    if (cooldowns.get(player.getName().toLowerCase()) > System.currentTimeMillis()) {
    e.getPlayer().sendMessage(getTime(player.getName().toLowerCase()) + " para usar o comando");
    return;
    }
    cooldowns.put(player.getName().toLowerCase(), System.currentTimeMillis() + delay);
    }
    cooldowns.put(player.getName().toLowerCase(), System.currentTimeMillis() + delay);
    // adiciona o item.. algo que você ainda não fez .-. você verifica se tem algo na hash mas nunca coloca nada nela...
    }

     
  14. zAth's postagem in [Pedido Java] Serializer Inventory was marked as the answer   
    Class
     
     
    Uso
     
     
     
    Isso serializa os itens apenas. O holder, tamanho do inventário, titulo do inventário e slot de cada item não sei como serializar.
  15. zAth's postagem in [BUG] Entrada de Valores Com Ponto Flutuante was marked as the answer   
    Tem que usar , no lugar do . sei lá porquê :kk:
    É suposto usar isso no java
    double numero = 7.1; Mas na consola tem que ser com , e não .
    E acho que essa formatação está errada ( você queria formatar né? ), porque colocou o símbolo de formatação ( % ) se depois concatenou a string? ( "bla" + MEDIA + "bla" )
    Faz assim
    System.out.printf("MEDIA = %.5f\n", MEDIA);  O float é f, em minúsculo.
  16. zAth's postagem in Pedido - Plugin de /bau igual o SkyChests (mas modificado na GUI) (1.8) was marked as the answer   
    Arrumado agora.
     
    @Topic
    Quer mesmo com espaço entre, ou assim tá bom?
  17. zAth's postagem in Cooldown não está pegando was marked as the answer   
    Acabei de decompilar aqui e.. @Override public boolean onCommand(CommandSender sender, Command arg1, String label, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(" §cVoce Não é um player!"); return true; } Player p = (Player)sender; p.sendMessage(""); p.sendMessage("§a§l RECOMPENSA"); p.sendMessage(""); p.sendMessage("§a* §7Você pegou uma recompensa!"); p.sendMessage("§a* §7Tempo pra pegar novamente: " + CooldownAPI.haveCooldown); p.sendMessage(""); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "crates give " + p.getName() + " básica 1"); return false; } public static HashMap<String, Integer> haveCooldown = new HashMap<String, Integer>(); // Digite o cooldown em minutos public static void addCooldown(String name, int cooldown) { // Caso queira remove o sistema de minutos coloque no lugar de: cooldown // * 160; apenas: cooldown // E sera em segundos! int realcooldown = cooldown * 160; haveCooldown.put(name, realcooldown); while (realcooldown > 0) { realcooldown--; } if (realcooldown == 0) { haveCooldown.remove(name); } } public static boolean inCooldown(String name) { return haveCooldown.containsKey(name); } public static void removeCooldown(String name) { haveCooldown.remove(name); } Isso me deu vontade de rir.
    1º que você nunca adiciona cooldown nele, ele criou um comand que manda msg e executa um /crates give.. não adiciona cooldown nenhum.
    2º memso que adicionasse cooldown, o cooldown seria removido em 1 nanosegundo .-.
    int realcooldown = cooldown * 160; haveCooldown.put(name, realcooldown); while (realcooldown > 0) { realcooldown--; } if (realcooldown == 0) { haveCooldown.remove(name); } Não sei quem fez isso dae, mas deve pensar que o java é lerdo e só é "executado" a cada segundo slá, nem sei o que deu para colocar o * 160 lá.. mesmo que colocasse cooldown de 1 dia, ele terminaria em menos de 1 segundo.
    3º que ele nem salva em lugar nenhum.. dá /rl que já era
     
    @Edit
    Cooldown é o que é mais pedido nesse forum, só precisa isso
    @Override public boolean onCommand(CommandSender sender, Command arg1, String label, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage(" §cVoce Não é um player!"); return true; } Player p = (Player)sender; if(!p.hasPermission("plugin.bypass")) { Long delay = TimeUnit.MINUTES.toMillis(5); // 5 minutos if (cooldown.keySet().contains(p.getName().toLowerCase())) { if (cooldown.get(p.getName().toLowerCase()) > System.currentTimeMillis()) { p.sendMessage("Está em cooldown, aguarde " TimeUnit.MILLIS.toMinutes(cooldown.get(p.getName().toLowerCase()) - System.currentTimeMillis())); return; } cooldown.put(p.getName().toLowerCase(), System.currentTimeMillis() + delay); } cooldown.put(p.getName().toLowerCase(), System.currentTimeMillis() + delay); } p.sendMessage(""); p.sendMessage("§a§l RECOMPENSA"); p.sendMessage(""); p.sendMessage("§a§l §7Você pegou uma recompensa!"); p.sendMessage(""); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "crates give " + p.getName() + " básica 1"); return false; } private HashMap<String, Long> cooldown = new HashMap<>(); E algo para salvar a hashmap em algum lugar.
  18. zAth's postagem in ItemStack Movimento was marked as the answer   
    private ArrayList<Player> array = new ArrayList<>(); private Inventory invs(Player player){ ItemStack itemStack; if(array.contains(player)){ itemStack = new ItemStack(0); // coloca o itemmeta do item adquirido lá } else { itemStack = new ItemStack(1); // coloca o itemmeta do item a ser adquirido } // coloca os seus itens e pá return getServer().createInventory(null, 9, "Inventário"); } @EventHandler public void onClick(InventoryClickEvent event){ if(!event.getInventory.getName().equals("Inventário")) return; event.setCancelled(true); if(array.contains(event.getWhoClicked())) return; // se estiver na array, o código para por aqui.. será melhor fazer verificações do slot clicado antes // faz as verificações do $ // da o item que comprou array.add(event.getWhoClicked()); } Fiz aqui no navegador mesmo, pode ter algum erro.
  19. zAth's postagem in Problema NullPointerException was marked as the answer   
    Coloca no onEnable isso: cooldown = new Cooldown();
  20. zAth's postagem in API mcMMO was marked as the answer   
    int powerLevel = ExperienceAPI.getPowerLevel(player);

  21. zAth's postagem in Pedido - Addon MineShop (1.8) was marked as the answer   
    http://www.mediafire.com/file/wap1w0jw2mtid9c/FBMineShopAddon.jar
    Placeholder: mineshop
  22. zAth's postagem in Cooldown was marked as the answer   
    private HashMap<String, Long> cooldowns = new HashMap<>(); Long delay = TimeUnit.MINUTES.toMillis(5); // cooldown de 5 minutos @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("sb")) { if (cooldowns.keySet().contains(sender.getName().toLowerCase())) { if (cooldowns.get(sender.getName().toLowerCase()) > System.currentTimeMillis()) { int minutesRemaining = TimeUnit.MILLIS.toMinutes(System.currentTimeMillis() - cooldowns.get(sender.getName().toLowerCase())); sender.sendMessage("Falta " + minutesRemaining + "minutos"); return true; } cooldowns.put(sender.getName().toLowerCase(), System.currentTimeMillis() + delay); } cooldowns.put(sender.getName().toLowerCase(), System.currentTimeMillis() + delay); ((Player) sender).teleport(getServer().getWorld("skyblock").getSpawnLocation()); } return false; }
  23. zAth's postagem in Dúvida - Item was marked as the answer   
    Eu já falei, até você já falou..
    quer pegar o material pelo comando? Material.valueOf("STONE");
  24. zAth's postagem in [Dúvida] Bukkit Runnable was marked as the answer   
    int i = 0; int delay = 20; public void run(){ i += 10; if (i >= delay){ i = 0; delay = 40; // aumenta o delay ... } }.RuntaskTimer(plugin,10,10); ?? ou então faz gambiarra :kk:
    private void a(Player player, int count, int delay){ player.sendMessage("Ola"); int newCount = count + 1; if(newCount == 5) // apenas manda a msg 5 vezes, depois para return; int newDelay = delay + 20; // aumenta o delay em 1s new BukkitRunnable() { @Override public void run() { a(player, newCount, newDelay); } }.runTaskLater(this, newDelay); }
  25. zAth's postagem in [Duvida] Como coloco delay em um for? was marked as the answer   
    Bukkit.getScheduler().runTaskAsynchronously(HG.getInstance(), new Runnable() { @Override public void run() { int removidos = 0; for (Iterator<?> i = Manager.getInstance().construcao.iterator(); i.hasNext(); ) { removidos++; Block b = (Block) i.next(); Bukkit.getScheduler().runTask(HG.getInstance(), new Runnable() { @Override public void run() { b.setType(Material.AIR); } }); if(removidos == 80) { removidos = 0; } Thread.sleep(1000); } } });
×
×
  • Criar Novo...