You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Geist5000

User / Kunde

  • "Geist5000" started this thread

Posts: 22

  • Send private message

1

Sunday, October 28th 2018, 1:20am

Sounds unendlich oft wiederholen

Hallo,

Ich möchte in einem Plugin im Hintergrund ein bischen Musik abspielen. Diese Musik ist auch schon in einem Resourcepack drin und ich kann sie abspielen. Jetzt will ich es aber schaffen das sie immer wieder von vorne anfängt, also im loop spielt. Meine Lösung wäre wenn ich den Sound abspiele einen delayed sheduler zu starten der für die zeit des liedes eingestellt wird, dieser startet den sound dann wieder und immer so weiter. Jetzt ist mir aber aufgefallen, dass ich dann für jeden Spieler einen eigenen scheduler bräuchte, weill wenn ein spieler später joint die musik erst bei neu starten wieder hat.

Deswegen wollt ich wissen ob euch eine bessere möglichkeit einfällt musik im loop zu spielen.

MfG Geist

olo1

User / Kunde

Posts: 39

  • Send private message

2

Sunday, October 28th 2018, 1:09pm

Probiers mal hiermit bei zu vielen Spieler bestimmt nicht sehr performant aber könnte funktionieren.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
		new BukkitRunnable() {
			
			@Override
			public void run() {
				/*
				 * 
				 * Deine Methode
				 * 
				 */
				
			}
		}.runTaskLater(Main.getPlugin(Main.class), 20 * SEKUNDEN);

Geist5000

User / Kunde

  • "Geist5000" started this thread

Posts: 22

  • Send private message

3

Sunday, October 28th 2018, 8:24pm

Hallo,

danke für die Antwort, aber ich suche gerade eine Möglichkeit die Sounds zu wiederholen ohne das ich Scheduler oder änliches benutze.

MfG Geist

MortalMatty

User / Kunde

  • "MortalMatty" is male

Posts: 26

Thanks: 3

  • Send private message

4

Sunday, October 28th 2018, 11:29pm

Mein Vorschlag wäre, jeden Spieler einfach in einer HashMap als Key abzuspeichern und die Länge des Liedes (zB in Sekunden) als Value zu verwenden:

Java source code

1
HashMap<Player, Integer> songDelay = new HashMap<Player, Integer>();


Dann lässt du die Scheduler sekundlich aufrufen und zählst jedes mal die Value von allen Spielern runter (also die Sekunden) und überprüfst danach, ob der Wert bei 0 liegt.

Java source code

1
if (!songDelay.isEmpty())	for (Player player : songDelay.keySet()) {		if (songDelay.get(player) <= 0) {			// song neu abspielen und zeit auf länge des songs zurücksetzten		}	}


Falls er bei 0 liegen sollte lässt du für diesen Spieler den Song neu abspielen und resettest die Zeit.
4e 69 65 20 47 6c c3 bc 63 6b 20 3a 28

Geist5000

User / Kunde

  • "Geist5000" started this thread

Posts: 22

  • Send private message

5

Monday, October 29th 2018, 10:15pm

Danke für die Antwort. Immer noch nicht die Antwort die ich hören wollte aber wenigstens besser mit nur einem Scheduler.

MfG Geist

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net