[Bukkit Hilfe] Chunklimit - Moblimit per Chunk = 16 , nun ein Problem!

07/31/2013 18:06 HD_Ware#1
^this


Folgendes Problem:
Ich hab irgendwo einen denkfehler und komm net mehr weiter!
Heisst also:
Sobald ein Mob in einen Chunk geht und das Plugin soll dann prüfen , ob 16 Mobs bereits im Chunk sind.

Wenn ja ----> Mob , das den Chunk betreten will davon abhalten und removen


Wenn nicht ----> Klärt sich von selbst.


Hat jemand eine Idee? Ich werde keine Sourcen posten , damit die Copy & Paste Hunter nicht zuschlagen können :)

mfg

HD_Ware
07/31/2013 18:13 Kante'#2
Quote:
Originally Posted by HD_Ware View Post
^this


Folgendes Problem:
Ich hab irgendwo einen denkfehler und komm net mehr weiter!
Heisst also:
Sobald ein Mob in einen Chunk geht und das Plugin soll dann prüfen , ob 16 Mobs bereits im Chunk sind.

Wenn ja ----> Mob , das den Chunk betreten will davon abhalten und removen


Wenn nicht ----> Klärt sich von selbst.


Hat jemand eine Idee? Ich werde keine Sourcen posten , damit die Copy & Paste Hunter nicht zuschlagen können :)

mfg

HD_Ware
Ohne Code können wir dir schlecht helfen und wir wissen nicht, wie du es versuchst. Poste doch einfach nur den Teil, indem du das mit den Chunks versuchst, musst nicht dein ganzes Plugin posten.
07/31/2013 18:15 HD_Ware#3
Quote:
Originally Posted by Kante' View Post
Ohne Code können wir dir schlecht helfen und wir wissen nicht, wie du es versuchst. Poste doch einfach nur den Teil, indem du das mit den Chunks versuchst, musst nicht dein ganzes Plugin posten.

[Only registered and activated users can see links. Click Here To Register...]


Da bitte sehr.
07/31/2013 19:14 Kante'#4
Code:
        @EventHandler(priority=EventPriority.HIGHEST)
        public void onMobSpawn(CreatureSpawnEvent e){
                
                Entity[] es = e.getLocation().getChunk().getEntities();
                if (es.length > 16) 
                {
                e.setCancelled(true);
                }
        }
Willst du es davon abhalten, dass es reinläuft, oder willst du einfach nur verhindern, dass es darin spawnt? Dort oben könnten Fehler auftreten, bin mir nicht sicher, aber sollte eigentlich klappen.
07/31/2013 19:17 HD_Ware#5
Will es davon abhalten , das es reinläuft und dann auch noch den Mob removen , der reinlaufen will
07/31/2013 20:00 Kante'#6
Reicht es nicht, wenn es einfach nur die Mobs vom spawnen abhält? Und es würde ganz schön zu laggs führen, weil jedes Bewegung des Mobs + dn Chunks berechnet wird. Wenn es doch nicht spawnt, müsste es doch schon reichen, oder?
07/31/2013 20:14 ComputerBaer#7
Ich muss einfach mal einwerfen, dass nicht nur Monster Entities sind. Da fallen z.B. Monster, Tiere, Spieler, Pfeile, Items, Bilderrahmen und Minecarts rein, also einfach nach Entity-Anzahl abfragen geht nicht. Die LivingEntities sind nur Monster, Tiere, Spieler und NPCs.
Auch weis ich nicht so ganz, wieviele Lebewesen in einem Chunk sein können, weil Minecraft da auch ein Spawnlimit hat, ab dem nichts mher spawnt.

Wenn du das beim Bewegen überprüfen willst, kann ich dich nur warnen, das ist zuviel Arbeit und wird den Server ausbremsen. Ich nehme mal an, dass es aus genau dem Grund auch kein EntityMove-Event gibt (oder ich habs es übersehen).

So, jetzt frage ich mich allerdings, wo liegt dein Problem, bzw. was passiert oder passiert eben nicht?
Können immernoch mehr als 16 in einem Chunk spawnen? Oder spwant einfach garnichts mehr? Oder treten vielleicht irgendwelche Fehler auf, die du nicht verstehst?
07/31/2013 20:31 HD_Ware#8
Nein , es soll genauso ablaufen:

Das mit dem spawnen funzt einwandfrei!


Nur , was ist wenn ein Mob den Chunk betritt und es 17 sind? Das wollen wir verhindenr , indem wir dann den LivingEntity removen.
07/31/2013 21:00 ComputerBaer#9
Da es kein Event dazu gibt, bleibt dir nichts anderes übrig als in jedem Tick selber die Positionen aller Monstare zu überprüfen, was du ohnehin machen müsstest.

Das können aber sehr schnell soviele Enities werden, dass es den Server einfach hoffnunglos ausbremst.