Ir para conteúdo
  • 0

[Resolvido] [Dúvida] Mesmo erro de ontem.


TequilAxBr

Pergunta

Bom, ontem criei uma dúvida relacionada a esse Mesmo Plugin... O meu BInvisivel em desenvolvimento...


E ontem citei que apos ele digitar /invisivel ele tirava e colocava o efeito de invisivel, dessa vez adicionei mais um comando /visivel, e agora o erro é o mesmo digito /visivel fica tirando e colocando o efeito da poção... Já tentei alterar o tempo do scheduler aquele tipo 20L e bla bla bla.


 


Codigo:



package me.tequilaxbr.bplugin;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;

public class Main extends JavaPlugin {

public void onEnable(){

System.out.println("[BInvisivel] Plugin Ativado");
System.out.println("[BInvisivel] By TequilAxBr");
saveDefaultConfig();
ficarInvisivel();
}

public void onDisable(){

System.out.println("[BInvisivel] Plugin Desativado");
System.out.println("[BInvisivel] By TequilAxBr");
}

public void ficarInvisivel() {
}
@SuppressWarnings("deprecation")
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player))
{
getLogger().info("Utilize o comando in-game.");
}
final Player p = (Player)sender;
if(command.getName().equalsIgnoreCase("invisivel") || command.getName().equalsIgnoreCase("visivel")){
if(p.hasPermission(getConfig().getString("Permissao"))){
if (label.equalsIgnoreCase("visivel")){
p.removePotionEffect(PotionEffectType.INVISIBILITY);
p.sendMessage(getConfig().getString("MsgVisivel").replace("&", "§"));
}else if(label.equalsIgnoreCase("invisivel")){
BukkitScheduler scheduler = getServer().getScheduler();
scheduler.scheduleAsyncRepeatingTask(this, new Runnable() {
public void run() {
p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 10, 30), true);
}
}, 0, 7L);
p.sendMessage(getConfig().getString("MsgInvisivel").replace("&", "§"));
}
}else{
p.sendMessage(getConfig().getString("Sem_Permissao").replace("&", "§"));
}
}
return false;

}


}

Print da Config.yml: http://prntscr.com/80rq0g


Qual quer informação necessária, só pedir.

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

11 respostass a esta questão

Posts Recomendados

Coloca poção infinita cara, pra que fazer essa gambiarra toda.

Já tentei, mas pelo que descobri só é possivel com scheduler '-'

Caso tenha algum jeito, poderia me ensinar?

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

Cria uma variavel para o scheduler, e usa o canceltask quando ele digita /visivel

 

 

@Edit

 

Tira isso da sua primeira condição

|| command.getName().equalsIgnoreCase("invisivel"))

 

e tambem cria uma variavel usando int

 

 int scheduler = Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(this(caso for a class main), New Runnable(), 0, 7L)

 

 Bukkit.getServer().getScheduler().cancelTask(scheduler);
Editado por Karamujo
Link para o comentário
Compartilhar em outros sites

Você quer que fique com poção infinita até digitar o comando

/visivel?

 

Se sim:

 

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Player p = (Player)sender;
if (sender instanceof Player) {
if (label.equalsIgnoreCase("invisivel")) {
if (p.hasPermission("invisivel")) {
p.sendMessage("§aVoce ta invisivel!");
p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 9287387, 1));
} else {
p.sendMessage("§cSem permissão");
return true;
}
}
if (label.equalsIgnoreCase("visivel")) {
if (p.hasPermission("visivel")) {
p.sendMessage("§aVoce ta visivel!");
p.removePotionEffect(PotionEffectType.INVISIBILITY);
} else {
p.sendMessage("§cSem permissão");
return true;
}
}
}
return false;
}
Link para o comentário
Compartilhar em outros sites

É só colocar no tempo do addpotioneffect um grande tempo tipo 10k,10kk ou superior é só você ver qual vai funcionar mas ai você não precisava fazer uma coisa mais complexa...

Link para o comentário
Compartilhar em outros sites

Já tentei, mas pelo que descobri só é possivel com scheduler '-'

Caso tenha algum jeito, poderia me ensinar?

p.hidePlayers(Bukkit.getOnlinePlayers());

Link para o comentário
Compartilhar em outros sites

p.hidePlayers(Bukkit.getOnlinePlayers());

1º Ele quer se esconder, ou seja, ele usaria p.hidePlayer()

2º Não existe o metodo hidePlayers e sim p.hidePlayer para fazer algo do gênero seria assim:

 

 

for(Player p1 : Bukkit.getOnlinePlayers()) {
      p.hidePlayer(p1);
Editado por Wheeze
Link para o comentário
Compartilhar em outros sites

 

1º Ele quer se esconder, ou seja, ele usaria p.hidePlayer()

2º Não existe o metodo hidePlayers e sim p.hidePlayer para fazer algo do gênero seria assim:

for(Player p1 : Bukkit.getOnlinePlayers()) {
      p.hidePlayer(p1);

Eu sei e.e, é que eu parei de mecher com Java(faz um tempinho) e não me lembro bem de cabeça(os metodos)

Link para o comentário
Compartilhar em outros sites

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