Wie kann in Minecraft das folgende Plugin (/Spielmodus) programmieren?
Wie kann ich in Minecraft folgendes Plugin programmieren: Es gibt eine "Zone" (festgelegt mit "distance" von einem gewissem Block) Wenn ein Spieler die Zone betritt soll ein int-Wert (beträgt 100) herunter bis auf 1 gezählt werden. Wenn der Spieler die Zone gedoch wieder verlässt soll der Cowndown aufhöhren und den momentanen int-Wert aber beibehalten. Wenn dann ein anderer Spieler die Zone betritt soll der Cowndown wieder von dem zwischengespeicherten int-Wert beginnen (also nicht noch mal von vorne anfangen).
Wie kann ich das programmieren ?
Danke schon mal im Voraus :D
PS: Ich habe schon ganz viel mit schedulern ausprobiert aber noch nicht wirklich was gefunden.
3 Antworten
Lösungsmöglichkeiten:
a) Eine Methode prüft die Anzahl an Spielern im Feld ab, sowie, ob eine bestimmte Zeit vergangen ist. Im gegebenen Fall dekrementiert sie den Wert des Counters. Die Methode wird in der event-loop des Spiels ausgeführt.
b) Du brauchst einen Scheduler (https://blog.ajduke.in/2014/03/31/java-how-to-schedule-a-task-to-run-in-an-interval/) für den Countdown und Events, welche ermitteln, ob ein Spieler in das Feld gekommen oder aus dem Feld herausgegangen ist. Dabei solltest du dir die Anzahl an Spielern merken, die sich momentan im Feld befinden.
Betritt ein Spieler das Feld, wird der Scheduler gestartet (wenn er nicht bereits läuft). Verlässt ein Spieler das Feld, wird die aktuelle Anzahl an Spielern im Feld aktualisiert und überprüft. Sind keine Spieler mehr dort, muss der Scheduler stoppen. Der Task, der vom Scheduler je Intervall aufgerufen wird, muss selbst überprüfen, ob der Wert von 1 unterschritten wird oder nicht. Auch in diesem Fall muss der Scheduler beendet werden.
Ich habe jetzt keine Ahnung wie das in minecraft funst aber so würde ich es auf bauen (Syntax ist ähnlich wie Java die ich verwende ...)
Int i = 100;
If(player in field)
{
I --;
}
Und dann kannst du ja ein Event bei i == 0 einrichten welches irgendetwas macht. Das ganze funktioniert natürlich auch mit ner Schleife ... Falls es zu schnell zählt entweder i erhöhen, einen timer ein bauen oder eine sinnlose Schleife mit einarbeiten welche Zeit verbraucht ^^
Ich hoffe ich konnte helfen,
MFG Hiajen
PS.: ich gehe jetzt nicht von commandblocks aus :o
sorry mein Fehler ... war noch in Processing (hier wird der draw/Main wiederholt) dann Regel das doch über ein event ...
Bei einem einmaligen Check, ob sich der Spieler im Feld befindet, wird der Counter nur einmal um 1 heruntergezählt.
Der Counter sollte praktischerweise über einen Timer laufen, sinnlose Schleifen sollte man vermeiden.
Das ganze durch das PlayerMoveEvent triggern und eine Zone mit der WorldEdit API erstellen, damit kann man testen ob ein Spieler im Bereich ist, das mit dem Scheduler solltest du hinbekommen.