• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

MapTeleport

HeadiPlays

Redstoneengineer
Registriert
8 Februar 2014
Beiträge
45
Diamanten
0
Minecraft
HeadShotNoob
HeyHo,

ich bin gerade dabei ein Minigame zu programmieren und stecke beim Lobby-Count fest ._.
Naja, er funktioniert zwar, doch das viel zu schnell.

Hier der code:

PHP:
	@SuppressWarnings({ "static-access", "deprecation" })
	public void mapteleport() {
		
		
		bowgame.lobbycount = Bukkit.getScheduler().scheduleAsyncRepeatingTask(bowgame, new Runnable() {

			@Override
			public void run() {
				
				for(Player all : Bukkit.getOnlinePlayers()) {
				
				bowgame.lobbytime--;
				
				if(bowgame.lobbytime == 90) {Bukkit.broadcastMessage("90 sek remaining");}
				if(bowgame.lobbytime == 60) {Bukkit.broadcastMessage("60 sek remaining");}
				if(bowgame.lobbytime == 30) {Bukkit.broadcastMessage("30 sek remaining");}
				if(bowgame.lobbytime == 10) {Bukkit.broadcastMessage("10 sek remaining");}
				if(bowgame.lobbytime == 5) {Bukkit.broadcastMessage("5 sek remaining");}
				if(bowgame.lobbytime == 4) {Bukkit.broadcastMessage("4 sek remaining");}
				if(bowgame.lobbytime == 3) {Bukkit.broadcastMessage("3 sek remaining");}
				if(bowgame.lobbytime == 2) {Bukkit.broadcastMessage("2 sek remaining");}
				if(bowgame.lobbytime == 1) {Bukkit.broadcastMessage("1 sek remaining");}
				
				if(bowgame.lobbytime == 0) {  
					
					if(Bukkit.getOnlinePlayers().length >= 2) {
						for(Player all2 : Bukkit.getOnlinePlayers()) {
							
							all.setLevel(bowgame.lobbytime);
							
							File f = new File("plugins/BowGame", "locations.yml");
							FileConfiguration cfg = YamlConfiguration.loadConfiguration(f);
							
							World world = Bukkit.getWorld(cfg.getString("location.spawn.world"));
							double x = cfg.getDouble("location.spawn.x");
							double y = cfg.getDouble("location.spawn.y");
							double z = cfg.getDouble("location.spawn.z");
							double yaw = cfg.getDouble("location.spawn.yaw");
							double pitch = cfg.getDouble("location.spawn.pitch");
							
							all2.teleport(new Location(world, x, y, z, (float) yaw, (float) pitch));
							
							all2.getInventory().clear();
							
							Bukkit.getScheduler().cancelTask(bowgame.lobbycount);
							
						}
					} else {
						Bukkit.broadcastMessage("Not enough Players, restarting");
						bowgame.lobbytime = 90;
					}
					
				}
				
					
			}
			}
			
		}, 0L, 20L);
		
		
	}

Ich hoffe, dass mir einer helfen kann ;)
 

HeadiPlays

Redstoneengineer
Registriert
8 Februar 2014
Beiträge
45
Diamanten
0
Minecraft
HeadShotNoob
Ja, du hast es jetzt ohne die for() schleife gemacht, jedoch möchte ich ja, dass die Spieler den Countdown in der EXP Leiste bekommen, deswegen die for() schleife...
Aber um so mehr spieler drauf sind, um so schnell wird der Countdown..
 

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Der Scheduler läuft viel zu schnell, da du ihn mehrmals startest. Ich weiß ja nicht wie du es gemacht hast, aber du könntest es so machen das der Countdown gestartet wird wenn 6 Leute online sind und wenn es unter 5 sind wird er gestoppt, oder du machst es so dass du dir verschiedene Spielstände erstellst (Enum *hust*) und zum Beispiel beim starten des Servers den Spielstand auf Lobby setzt und wenn zum ersten mal 6 Leute online sind, wird der Spielstand auf Countdown gesetzt und du checkst einfach später wenn der Countdown auf 0 ist, ob mindestens 6 Leute online sind und dann startet das Spiel, ansonsten setzt du einfach deine Zeit neu und das ganze geht von vorne los. Das heißt dann aber auch wenn mal 6 Leute online waren aber dann wieder alle leften läuft der Timer immer noch, deswegen würde ich dir die erste Variante empfehlen.

Ich hoffe das hat dir geholfen :)
 
Zuletzt bearbeitet:
Oben