• 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!

[Java] [Bukkit] && [Wie könnte ich das hier anstellen] Hey liebe Community,

necnuc

Redstoneengineer
Registriert
15 Dezember 2013
Beiträge
36
Diamanten
0
Minecraft
necnuc | Der Kunde
Hey liebe Community,
Heute habe ich die frage aller fragen :p,
Ich bin gerade dran ein eigenes mobarena plugin zu schreiben, und dazu diese frage jetzt.
Wie könnte ich es anstellen das wen alle entity's in einer area gestorben sind das da was passiert.
Und ich hoffe ihr könnt mir helfen.
Freue mich auf jede antwort.

*push*
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Du könntest alle Entitys in der Welt aufrufen und testen, ob die sich in der Arena befinden... Ungefähr so:

Code:
int counter = 0;
for(LivingEntity ent : Bukkit.getWorld("h").getLivingEntities()) {
	if (ent.isInArena)
		counter++;	
}
if (counter == 0) {
	//To do
}

Das ganze prüfst du mit einem Scheduler alle x Sekunden.
 
Zuletzt bearbeitet:

Taces

Minecrafter
Registriert
17 Oktober 2013
Beiträge
16
Diamanten
0
Ich würde die Entitys die du jede Runde spawnst einfach in eine ArrayList packen und dann bei jedem Tod das gestorbene Mob aus der Liste entfernen und anschließend gucken ob sie leer ist ;)

/e Diese Methode wäre jedenfalls performanter als die beiden hierüber, weil dabei jedes Mal durch alle Mobs der Welt iterieren müsstest, um zu prüfen, ob sie in der Arena gestorben sind und dann auch noch bei jedem die Abfrage nach der Position machen müsstest
 
Zuletzt bearbeitet:
C

Chrisliebaer

Guest
Ich würde die Entitys die du jede Runde spawnst einfach in eine ArrayList packen und dann bei jedem Tod das gestorbene Mob aus der Liste entfernen und anschließend gucken ob sie leer ist ;)

/e Diese Methode wäre jedenfalls performanter als die beiden hierüber, weil dabei jedes Mal durch alle Mobs der Welt iterieren müsstest, um zu prüfen, ob sie in der Arena gestorben sind und dann auch noch bei jedem die Abfrage nach der Position machen müsstest

Du must nur die Koordinaten der gestorbenen Mobs vergleichen. Das ist kein Hexenwerk. Da muss überhaupt nichts iteriert werden. Ganz simple. Und schnell ohne Ende.

http://jd.bukkit.org/rb/apidocs/org/bukkit/event/entity/EntityDeathEvent.html
 
Zuletzt bearbeitet von einem Moderator:

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Und was ist, wenn durch andere Plugins oder, weil es dunkel wird neue Mobs spawnen? Dann funktioniert das ganze nicht. Und so viel Leistung zieht es nicht, wenn man alle x Sekunden die Koordinaten der Mobs abfragt.

Kleine Zwichenfrage: Werden bei "world.getLivingEntitys()" nut die geladenen oder alle Mobs abgefragt?
 

Taces

Minecrafter
Registriert
17 Oktober 2013
Beiträge
16
Diamanten
0
Warum willst du alle x Sekunden die Position aller Mobs abfragen? Jede unnötige Abfrage ist eine Verschwendung von Ressourcen, das ist halt so.
/E: Ok, dachte du bist der TE ^^ ist trotzdem übertrieben alle paar Sekunden durch alle Mobs zu Iterieren und deren Position zu überprüfen ;)

Zu dem dunkel Werden und andere Plugins: Mach es halt so, wie ich es vorgeschlagen habe. Pack alle Mobs, die du in einer Runde spawnst oder meinetwegen auch nur ihre UID in eine ArrayList und bei einem DeathEvent löschst du sie wieder raus. Danach guckst du, ob die größe 0 ist und falls ja, sind alle Mobs der eine getötet. Das ist völlig unabhängig von irgendwelchem anderen Random Mobspawn
 
Zuletzt bearbeitet:
Oben