Ir para conteúdo
  • 0

[Resolvido] Duvidas Java-Bukkit


mabazi

Pergunta

1) como pego um Gunpowder? Tentei pegar uma polvora com Material.GUNPOWDER mas não existe :/

 

2) Ta dando um erro "Item entity 6486635 has no item!?" como resolvo?

 

3) Como deixo um IronGolem pacifico? pra ele n matar mobs agressivos?

 

4) Como crio um comando de reload para o plugin?

 

5) como crio uma nova linha ao dar determinado comando? ex: /novaMsg <msg> (ai cria uma nova linha ccom a msg no config.yml)

Editado por mabazi
Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

 

 HN0CRQZ.png

 

Toda vez que o iron golem mata um tipo de entidade começa esse flood no console!

 

 

@Update

 

Manow, eu acho que ja sei a fonte do bug, mas n entendi direito como esta ocorrendo

 

Basicamente eu botei a linha

 

 
if(e.getEntity().getType() == EntityType.SPIDER && e.getEntity().hasMetadata("Quantidade")){
ItemStack drop1 = new ItemStack(Material.STRING, e.getEntity().getMetadata("Quantidade").get(0).asInt()*2);
ItemStack drop2 = new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt()/2); //Para dar 50% de hance de drop
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop1);
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop2);
}

 

porem deu erro e tava dropando STONE que é o que deu o erro, pois nao identificou o drop por causa da fração, ai eu alterei para

 

 
if(e.getEntity().getType() == EntityType.SPIDER && e.getEntity().hasMetadata("Quantidade")){
ItemStack drop1 = new ItemStack(Material.STRING, e.getEntity().getMetadata("Quantidade").get(0).asInt()*2);
ItemStack drop2 = new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt());
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop1);
double n = Math.random()*10;
if (n >= 5){
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop2);
}

}

 

só que agora da erro caso o mob drope um dos itens dentro do if :/ pode ajudar?

 

 

@Update

 

Tentei fazer assim e sem verificar, mas não funcionou!

 

public void semmvm(EntityTargetEvent e){
   if (e.getTarget().getType() != EntityType.PLAYER){
      e.setTarget(null);
      return;
   }
}

 

Tenta por e.setCancelled(true), ao invés de e.setTarget(null)

 

E posta seu código completo aqui, ou manda pra mim por MP, pra mim ver oq ta acontecendo.

Link para o comentário
Compartilhar em outros sites

1) Não me lembro.

2) Não me lembro.

3) Limpa a AI (Inteligencia artificial) tem um tópico do @leonardosc aqui no forum, só procurar.

4) Para dar reload na config.yml? Se você estive na class Main use reloadConfig();

5) Usa StringList.

reload de desativar e reativar

 

(onLoad é o que ele vai fazer quando reiniciar né?)

Link para o comentário
Compartilhar em outros sites

Cara isso é coisa básica, como um array de string ou recarregar um sistema. Como remover a IA de uma entidade, mas se não me engano tem como retirar a agressividade do iron golen, http://hastebin.com/ibapacivin.scalaum exemplo que eu já tinha pronto.

 

 

Cara, "basico" é muito errado de dizer, porque você esta usando sua experiencia como padrão, para você isso é basico, para o criador do java, oq vc sabe é o basico, para mim, "If, else, integer, etc" é basico

Link para o comentário
Compartilhar em outros sites

Guest Mateus Demarchi

Cara, "basico" é muito errado de dizer, porque você esta usando sua experiencia como padrão, para você isso é basico, para o criador do java, oq vc sabe é o basico, para mim, "If, else, integer, etc" é basico

 

Entendo. O que você ainda tem dúvida ?

Link para o comentário
Compartilhar em outros sites

1° Material.SULPHUR

 

2° Como assim ? mosta uma print desse erro

 

3° Tu pode usar o EntityTargetEvent, verificar se é o iron golem e usar e.setTarget(null) pra "remover" o target

 

4° 



Plugin plugin = Bukkit.getPluginManager().getPlugin("Nome do plugin");
    
Bukkit.getPluginManager().disablePlugin(plugin);
Bukkit.getPluginManager().enablePlugin(plugin);


 

5° Faz do mesmo jeito que te mostrei no tópico de nicks, pega a lista, adiciona e salva



// pra pegar
List<String> nicks = getConfig().getStringList("nicks"); //nicks eh o nome do path dos nicks na config

// pra adicionar
nicks.add(nick q vc quer adicionar);

// Ai pra salvar denovo na config (pois se voce alterar é preciso salvar na config dnv)
getConfig().set("nicks", nicks); // salva a lista de volta na config
saveConfig(); //salva a config

Link para o comentário
Compartilhar em outros sites

 

1° Material.SULPHUR
 
2° Como assim ? mosta uma print desse erro
 
3° Tu pode usar o EntityTargetEvent, verificar se é o iron golem e usar e.setTarget(null) pra "remover" o target
 
4° 
Plugin plugin = Bukkit.getPluginManager().getPlugin("Nome do plugin");
    
Bukkit.getPluginManager().disablePlugin(plugin);
Bukkit.getPluginManager().enablePlugin(plugin);
 
5° Faz do mesmo jeito que te mostrei no tópico de nicks, pega a lista, adiciona e salva
// pra pegar
List<String> nicks = getConfig().getStringList("nicks"); //nicks eh o nome do path dos nicks na config

// pra adicionar
nicks.add(nick q vc quer adicionar);

// Ai pra salvar denovo na config (pois se voce alterar é preciso salvar na config dnv)
getConfig().set("nicks", nicks); // salva a lista de volta na config
saveConfig(); //salva a config 

 

 HN0CRQZ.png

 

Toda vez que o iron golem mata um tipo de entidade começa esse flood no console!

 

 

@Update

 

Manow, eu acho que ja sei a fonte do bug, mas n entendi direito como esta ocorrendo

 

Basicamente eu botei a linha

 

 
if(e.getEntity().getType() == EntityType.SPIDER && e.getEntity().hasMetadata("Quantidade")){
ItemStack drop1 = new ItemStack(Material.STRING, e.getEntity().getMetadata("Quantidade").get(0).asInt()*2);
ItemStack drop2 = new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt()/2); //Para dar 50% de hance de drop
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop1);
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop2);
}

 

porem deu erro e tava dropando STONE que é o que deu o erro, pois nao identificou o drop por causa da fração, ai eu alterei para

 

 
if(e.getEntity().getType() == EntityType.SPIDER && e.getEntity().hasMetadata("Quantidade")){
ItemStack drop1 = new ItemStack(Material.STRING, e.getEntity().getMetadata("Quantidade").get(0).asInt()*2);
ItemStack drop2 = new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt());
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop1);
double n = Math.random()*10;
if (n >= 5){
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop2);
}

}

 

só que agora da erro caso o mob drope um dos itens dentro do if :/ pode ajudar?

 

 

@Update

 

Tentei fazer assim e sem verificar, mas não funcionou!

 

public void semmvm(EntityTargetEvent e){
   if (e.getTarget().getType() != EntityType.PLAYER){
      e.setTarget(null);
      return;
   }
}
Editado por mabazi
Link para o comentário
Compartilhar em outros sites

 

 HN0CRQZ.png

 

Toda vez que o iron golem mata um tipo de entidade começa esse flood no console!

 

 

@Update

 

Manow, eu acho que ja sei a fonte do bug, mas n entendi direito como esta ocorrendo

 

Basicamente eu botei a linha

 

 
if(e.getEntity().getType() == EntityType.SPIDER && e.getEntity().hasMetadata("Quantidade")){
ItemStack drop1 = new ItemStack(Material.STRING, e.getEntity().getMetadata("Quantidade").get(0).asInt()*2);
ItemStack drop2 = new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt()/2); //Para dar 50% de hance de drop
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop1);
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop2);
}

 

porem deu erro e tava dropando STONE que é o que deu o erro, pois nao identificou o drop por causa da fração, ai eu alterei para

 

 
if(e.getEntity().getType() == EntityType.SPIDER && e.getEntity().hasMetadata("Quantidade")){
ItemStack drop1 = new ItemStack(Material.STRING, e.getEntity().getMetadata("Quantidade").get(0).asInt()*2);
ItemStack drop2 = new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt());
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop1);
double n = Math.random()*10;
if (n >= 5){
e.getEntity().getLocation().getWorld().dropItemNaturally(e.getEntity().getLocation(), drop2);
}

}

 

só que agora da erro caso o mob drope um dos itens dentro do if :/ pode ajudar?

 

 

@Update

 

Tentei fazer assim e sem verificar, mas não funcionou!

 

public void semmvm(EntityTargetEvent e){
   if (e.getTarget().getType() != EntityType.PLAYER){
      e.setTarget(null);
      return;
   }
}

da erro porque nao existe nenhum item com o id 1044 1418 974 1487 1847 eu acho, o que seria isso?

new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt());

faz um teste ae System.out.printLn("" + e.getEntity().getMetadata("Quantidade").get(0).asInt());

para ver o que isso retorna

Editado por zAth
Link para o comentário
Compartilhar em outros sites

da erro porque nao existe nenhum item com o id 1044 1418 974 1487 1847 eu acho, o que seria isso?

new ItemStack(Material.SPIDER_EYE, e.getEntity().getMetadata("Quantidade").get(0).asInt());

faz um teste ae System.out.printLn("" + e.getEntity().getMetadata("Quantidade").get(0).asInt());

para ver o que isso retorna

isso retorna o valor de "mobs agrupados"

 

um sistema que cria metadata quantidade qdo o mob spawna e seta ele com ++valorAtual e deleta os outros que spawnaram (MobStack)

 

ele vai retornar um numero inteiro (o mesmo que esta no nome do mob)

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...