@NPC Update, 2 API Wünsche

  • Hallo @red51,


    soweit ich gelesen habe sollen NPC's im kommenden Update nur in chunks spawnen die von Spielern nicht bearbeitet/verändert wurden. Könnt ihr bitte daran denken, in die API sowas wie ein Chunk.isDirty einzubauen ?
    Und als zweites am besten (wenn möglich) einen chunk.reset() um chunks zurückzusetzen (im Prinzip müßte man den chunk nur löschen und vom Spiel neu generieren lassen)


    Viele Grüße,
    Devidian

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

  • @red51 mir ist noch ein 3. Wunsch eingefallen. Ein Event für die neuen NPC's onNPCSpawnEvent oder so ähnlich. Damit kann man dann per Plugin bestimmen das z.b. (so mein Plan) in einem gewissen Bereich keine NPC's spawnen auch wenn die chunks sauber sind. (also das muss dann cancelable sein)

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

  • Schwierig... also eine isDirty() Funktion können wir ggf. hinzufügen. Das Problem ist, dass es prinzipiell 3 Arten von Chunks gibt (einmal ein klassischer Chunk [x, y und z Koordinate], welcher die Terrain & Block Daten enthält, dann ein LOD Chunk [nur x und z Koordinate] welcher eine grobe Repräsentation des Terrains in Form einer Höhenmap enthält, und dann noch ein spezieller Chunk [auch nur x und z], welche alle Objekte, Pflanzen usw. enthält). Nach jetzigen Stand werden die Tiere gespawnt, wenn ein solcher Chunk geladen wird (und der Chunk unberührt bzw. ist bzw. "isDirty()" false zurückgeben würde). Allerdings gibt es in der API derzeit nur einen eher abstrakten Zugriff auf die Chunks, und auf letztgenannten Chunk-Typ noch gar keinen Zugriff :(


    Auch eine reset() Funktion packe ich mal auf unsere Liste, da aber sowas nicht vorgesehen ist (und auch derzeit kein Mechanismus vorhanden ist, dass ein Client einen Chunk komplett neu lädt), bin ich mir nicht sicher, ob sowas rechtzeitig zum Update verfügbar sein wird...


    Ein NPCSpawnEvent ist aber bereits in der API vorhanden: https://javadoc.rising-world.n…ts/npc/NpcSpawnEvent.html
    Damit können jetzt schon die Spawns geändert bzw. festgelegt werden, was spawnen darf und was nicht ;)

  • Oh super, na dann kann ich beim NPC Update zumindest den NPC Spawn kontrollieren, hörte einige Wollen gar keine NPC's, ich bin da aber nicht abgeneigt, also dachte ich da an ein Plugin mit dem man einen Bereich in chunks um den nullpunkt definieren kann in dem keine hostile npcs (ausgenommen tiere wie tieger) spawnen dürfen.


    Die isDirty Funktion wäre halt gut um visuell im Spiel anzuzeigen welche Bereiche "safe" sind und welche nicht. und die reset() funktion wäre dann etwas für admins um dirty Bereiche wieder zurück zu setzen. Wenn jemand gerade nicht auf dem Server ist und ein Admin einen Bereich zurücksetzen würde, würde der Spieler dann nicht beim reconnect das update erhalten?

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!