Y
yoshicrafter
Guest
Hallo,
hab hier nen Combat Log Plugin, welches Leute, die sich beim Kampf ausloggen, das die dann automatisch sterben.
Wenn 2 Leute miteinander kämpfen, dann kommen sie in eine Liste und nach 10 sek werden sie von Scheduler wieder entfernt.
aber ich will, das wenn sie sich zum 2. mal angreifen, das die zeit dann wieder auf 10 sekunden zurückgesetzt wird vom task
wie geht das?
hab hier nen Combat Log Plugin, welches Leute, die sich beim Kampf ausloggen, das die dann automatisch sterben.
Code:
package de.geheim.pvp;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class PvP extends JavaPlugin implements Listener {
public static PluginManager pm = Bukkit.getPluginManager();
public static ArrayList<Player> combat = new ArrayList<Player>();
public static boolean pvpon = true;
@Override
public void onEnable() {
pm.registerEvents(this, this);
getLogger().info("§9[§aYoshi§9]§r Das Plugin YoshiPvP wurde erfolgreich aktiviert");
}
@Override
public void onDisable() {
getLogger().info("§9[§aYoshi§9]§r Das Plugin YoshiPvP wurde erfolgreich deaktiviert");
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equalsIgnoreCase("pvp")) {
if(sender.hasPermission("yoshicrafter.pvp.toggle")) {
if(pvpon) {
pvpon = false;
sender.sendMessage("§9[§aYoshi§9] §1PvP §2§cAus");
} else {
pvpon = true;
sender.sendMessage("§9[§aYoshi§9] §1PvP §2§aEin");
}
} else {
sender.sendMessage("§9[§aYoshi§9] §4Du hast keine Berechtigung dafür");
}
}
return false;
}
@EventHandler
public void onAttack(EntityDamageByEntityEvent e) {
if(e.getDamager() instanceof Player && e.getEntity() instanceof Player) {
if(pvpon) {
combat.add((Player) e.getDamager());
combat.add((Player) e.getEntity());
Bukkit.getScheduler().runTaskLater(this, new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
combat.remove((Player) e.getDamager());
combat.remove((Player) e.getEntity());
e.getEntity().sendMessage("§9[§aYoshi§9]§r §2Du befindest dich nun nicht mehr im Kampf");
e.getDamager().sendMessage("§9[§aYoshi§9]§r §2Du befindest dich nun nicht mehr im Kampf");
}
}, 10*20);
e.getEntity().sendMessage("§9[§aYoshi§9]§r §cDu befindest dich nun im Kampf. Logge dich nicht aus");
e.getDamager().sendMessage("§9[§aYoshi§9]§r §cDu befindest dich nun im Kampf. Logge dich nicht aus");
} else {
e.setCancelled(true);
}
}
}
@EventHandler
public void onLeave(PlayerQuitEvent e) {
if(isPvP(e.getPlayer())) {
e.getPlayer().setHealth(0);
}
}
public boolean isPvP(Player player) {
if(combat.contains(player)) {
return true;
} else {
return false;
}
}
}
aber ich will, das wenn sie sich zum 2. mal angreifen, das die zeit dann wieder auf 10 sekunden zurückgesetzt wird vom task
wie geht das?