Gelöscht_25272 Posted February 22, 2020 Posted February 22, 2020 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?
TileEntity Posted February 22, 2020 Posted February 22, 2020 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); } }
Gelöscht_25272 Posted February 22, 2020 Author Posted February 22, 2020 (edited) 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 February 22, 2020 by query
TileEntity Posted February 22, 2020 Posted February 22, 2020 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. 1
Gelöscht_25272 Posted February 22, 2020 Author Posted February 22, 2020 Ah ok. Ehre. Ich habe bei "p.getName() + timeE" den String "timeE" nicht auf " 72h" gesetzt, sondern auf "72h" xD Jetzt funzt aber alles Vielen Dank nochmal!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now