Wie kann ich spieler nach 3 toden bannen lassen. Minecraft java coding?

2 Antworten

Einfach eine Map mit der UUID als Key und einem Integer als Value erstellen. Dann packst du im 'PlayerDeathEvent' diesen Spieler in die Map rein, wenn er schon drin ist erhöst du einfach seinen int. Anschließend prüfst du ob dieser schon drei mal Tod war -> wenn ja bannen. Du kannst beim Server Restart auch diese Werte in eine Config abspeichern.

Evtl für jeden Spieler in der Config bei jedem tod hochschreiben also z.b

Deaths:
 MadMarvin: 0
 Spieler2: 1

Und bei einem tod machst du mit einem event eine abfrage, wieviele tode er bereits hat, und wenn es drei sind bannst du ihn!

Kann aber auch sein das es so geht:

player.getDeaths

Aber idk

Ich hab das so versucht aber in der yml werden die deaths nicht höher :

package Listener;

import java.io.File;
import java.io.IOException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerRespawnEvent;
import Listener.Join;
public class Respawn implements Listener{
 String team = "";
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent e){
 Player p=e.getPlayer();
 
 String playername= p.getName(); 
   File file = new File("plugins//Elements//Deaths//"+playername+".yml");
    YamlConfiguration Deaths= YamlConfiguration.loadConfiguration(file);
 
int y=0;
y=y+1;
if(y==1) {
  
    Deaths.set("Deaths."+p.getName()+".Death:",1);
   
    try {
     Deaths.save(file);
    
    } catch (IOException e1) {
     // TODO Auto-generated catch block
   
    } 
 
}

if(y==2 ) {
 
 Deaths.set("Deaths."+p.getName()+".Death:",2);
 try {
  Deaths.save(file);
 } catch (IOException e1) {
  // TODO Auto-generated catch block
 } 
}


if(y==3 ) {
 
 Deaths.set("Deaths.."+p.getName()+".Death:",3);
 try {
  Deaths.save(file);
  y=0;
 } catch (IOException e1) {
  // TODO Auto-generated catch block
 } 
}
if(Deaths.getInt("Deaths."+p.getName()+".Death:")==3) {
 p.sendMessage("Hii");
}

 
    
    
   if(!file.exists()) {
    try {
     file.createNewFile();
    } catch (IOException a) {
     // TODO Auto-generated catch block
p.sendMessage("§4Der angegebene Pfad wurde nicht gefunde!");    }
    
    
   
   
   

    
 
 }
   
   
   
   
  
   
   
   
   
   
   
   
   
 
   
 if(Deaths.getInt("Deaths."+p.getName()+".Death:")==3) {
  p.kickPlayer("§4Du bist raus!");
 }
 
  
  
  
  
  
  
  
  
  
 e.getPlayer().sendMessage("§eMache /e um deine Effekte wieder zu bekommen.");
 if(Main.Main.Air.contains(e.getPlayer().getName())) {
  team ="air";
e.setRespawnLocation(Join.locair);
}
 if(Main.Main.Fire.contains(e.getPlayer().getName())) {
  team ="fire";
e.setRespawnLocation(Join.locfire);
}
 if(Main.Main.Earth.contains(e.getPlayer().getName())) {
  team ="earth";
e.setRespawnLocation(Join.locearth);
}
 if(Main.Main.water.contains(e.getPlayer().getName())) {
e.setRespawnLocation(Join.locwater);
team ="water";
}
 return;
}   public  void checkOrdner() {
  File file =new File("plugins//Elements//Deaths");
  if(!file.exists()) {
   file.mkdir();
  }
}}
0
@Legendbrothe594

Am besten machst du es doch nicht mit playername sonder uuid! Falls der spieler mal seinen namen ändert. Und du musst erst abfragen ob es schon einen eintrag in der config gibt mit seiner uuid wenn ja dann suche seine tode aus der config aus, wenn nicht lege seine uuid mit einem tod an. Und frage ab wenn er schon existiert, ob er mehr als drei tode hat

0

Was möchtest Du wissen?