Jump to content

Spieler automatisch temp Bannen, wenn er gestorben ist


Gelöscht_25272
 Share

Recommended Posts

Moin, bin neu dies das!

Ich mache mich an so einem Plugin dran, dass den Spieler automatisch temp Bannen soll, sobald er gestorben ist. (Spigot 1.8.8)

@SuppressWarnings("deprecation")
	@EventHandler

	public void onDeath(PlayerDeathEvent e) {

	Player p = e.getEntity();

	if(p.isDead()) {
	p.kickPlayer("§7- * - + - * - §8[§b§lmyLife§8] §7- * - + - * -\n\n§eDu bist gestorben.\n§cDamit bist du für §a72 Stunden §caus dem Spiel §4ausgeschieden§c!");

	p.setBanned(true);

	}

}

Wie man sehen kann, habe ich das mit dem automatischem Kicken schon angegeben. Nun weiß ich aber nicht, wie ich das einbaue, dass der Spieler dann für 72 Stunden gebannt wird und nicht permanent. In anderen Forum habe ich das selbe gefragt, aber es kommt immer irgendeine Antwort wie "Ja du musst dies und das machen. Fertig." Und ich denke mir so "-.-". WIE schreibe ich das möglichst klein in das Plugin, ohne daraus gleich ein ganzes BannSystem zu machen?

Link to comment
Share on other sites

Bukkit unterstützt ja kein Tempban - man müsste quasi erstmal da etwas programmieren, was den Spieler temporär vom Server bannen kann.

Es gibt ja bereits Plugins, die so etwas umsetzen - du kannst da ja in die Quellcodes gehen und schauen, wie die das machen:

https://github.com/RandomThingsThatIMadeAtOnePointInTime/DeathBans/blob/master/src/main/java/github/scarsz/deathbans/DeathBans.java

 

Du könntest auch auf den Server das Plugin "Essentials" draufpacken - da wird der Tempban-Befehl gleich mitgebracht.

Bezogen auf dein Plugin feuerst du dann nur noch den /tempban-Befehl in die Console, wenn onDeath getriggert wird:

 

    String time = " 72h ";
    String reason = " Du bist gestorben und damit 72 Stunden aus dem Spiel ausgeschieden";
    
    @EventHandler
    public void onDeath(EntityDeathEvent e){
        if(e.getEntity() instanceof Player){
            Player p = (Player) e.getEntity();

            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tempban " + p.getName() + time + reason);
     
        }
    }

 

 

Link to comment
Share on other sites

vor 1 Stunde schrieb Bedrock:

Bukkit unterstützt ja kein Tempban - man müsste quasi erstmal da etwas programmieren, was den Spieler temporär vom Server bannen kann.

Es gibt ja bereits Plugins, die so etwas umsetzen - du kannst da ja in die Quellcodes gehen und schauen, wie die das machen:

https://github.com/RandomThingsThatIMadeAtOnePointInTime/DeathBans/blob/master/src/main/java/github/scarsz/deathbans/DeathBans.java

 

Du könntest auch auf den Server das Plugin "Essentials" draufpacken - da wird der Tempban-Befehl gleich mitgebracht.

Bezogen auf dein Plugin feuerst du dann nur noch den /tempban-Befehl in die Console, wenn onDeath getriggert wird:

 


    String time = " 72h ";
    String reason = " Du bist gestorben und damit 72 Stunden aus dem Spiel ausgeschieden";
    
    @EventHandler
    public void onDeath(EntityDeathEvent e){
        if(e.getEntity() instanceof Player){
            Player p = (Player) e.getEntity();

            Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tempban " + p.getName() + time + reason);
     
        }
    }

 

 

ANTWORT VON MIR:

Leider funktioniert das nicht :( Ich habe schon "Bukkit.dispatchCommand" und "Bukkit.getServer().dispatchCommand" ausprobiert...

Zitat

package Listeners;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerLoginEvent;

public class BannedTitle implements Listener{

    String timeE = "72h ";
    
    String Prefix = "§7- * - + - * - §8[§b§lmyLife§8] §7- * - + - * -\n\n";
    String reason = "§eDu bist gestorben.\n§cDamit bist du für ";
    String time = "§a72 Stunden";
    String reason1 = " §caus dem Spiel §4ausgeschieden§c!";
    
    String reasonBanTitle = "§eDu wurdest für ";
    String timeBanTitle = "§a72 Stunden";
    String reason1BanTitle =" §evom Netwerk §cgebannt§e, weil du gestorben bist.\n\n";
    String reason2BanTitle = " §cSomit bist du vorrübergehend aus dem Spiel §4ausgeschieden§c.";
    
    @EventHandler

    public void onDeath(PlayerDeathEvent e) {
        if(e.getEntity() instanceof Player) {
            Player p = e.getEntity();
            
            Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempban " + p.getName() + timeE + reason + time + reason1);

            //if(p.isDead()) {
                //p.kickPlayer(Prefix + reason + time + reason1);
        }

    }

//}
    
    @EventHandler(priority = EventPriority.HIGH)
    public void onJoin(PlayerLoginEvent e) {
        Player p = e.getPlayer();
        
        if(p.isBanned()) {
            
            e.setKickMessage(Prefix + reasonBanTitle + timeBanTitle + reason1BanTitle + reason2BanTitle);
        }
    }

}

So sieht die ganze Klasse aus

Edited by query
Link to comment
Share on other sites

Hast du eine Hauptklasse, wo onEnable und onDisable Verwendung findet?

Wird dort bei onEnable das Event auch registriert?

Hast du es erstmal ohne deinen eigenen Formatierungen/Prefix getestet?

Also erstmal nur mit:

Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tempban " + p.getName() + time + reason);

Läuft Essentials auch? Teste da mal den Tempban-Befehl ingame oder über die Console.

 

public void onJoin(PlayerLoginEvent e) 

Das brauchst du nicht, da der Tempban über Essentials auch verwaltet wird. Wenn ein gebannter versucht zu joinen, steht die Restzeit und der Grund dabei.

 

 

  • Thanks 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B
B