Beiträge von JD1992

    Du könntest an sich einen scheduler laufen lassen und einmal pro Sekunde prüfen ob die Position des Spielers sich verändert hat.


    Falls ja, hat er sich bewegt und du musst die neue Location abspeichern für den nächsten Check.


    Falls nicht, hat er sich nicht bewegt. So kann man an sich auch einen afk Check bauen.

    Die zweite Frage kann im Prinzip ähnlich umgesetzt werden. Man muss an sich nur die Block gegen den das item knallt herausbekommen, schauen ob dieser in der Liste ist und dann halt explodieren oder halt nicht.


    Aber mir kommt da noch eine Frage dazu. Was hast du den für ein item bzw wie verhält es sich? Eher wie ein Pfeil(Einschlag und am einschlagsort stehen bleiben), Schneeball(Einschlag und zerplatzen) oder doch eine ganz eigene Physik bzw verhalten? Ich gehe zwar davon aus das du in irgendeiner Art und Weise ein eigenes Verhalten gebaut hast, aber das müsstest am besten beschreiben, damit man schauen kann was für Events da verwendet werden können oder ob du da dir noch was eigenes bauen musst.

    Eine jar Datei ist wie eine zip oder rar Datei. Man kann diese Datei öffnen und schauen was enthalten ist. Dort müsste dann die Datei zu finden sein bzw. alle class Dateien zu deinem Projekt. Diese müssten soweit ich das weis dann in Ordner sein, welche wie deine Packages heissen. Also um an die angegebene Datei zu kommen musst du den de Ordner öffnen, dann den Melone Ordner, dann Lobby und zu guter letzt dann cm/s und dort müsste die Datei sein.

    Wenn der Spieler den Block setzt per world edit API eine schematic einfügen oder selber die schematic durchgehen und die Blöcke nacheinander setzen.

    Per forEach über die Arraylist loopen und den string zusammensetzen. Ist an sich ja erstmal der einfachste Weg das zu tun.


    Natürlich gibt es noch Wege die weitaus besser aussehen oder kürzer sind, aber mehr braucht man da eigentlich nicht.

    Eine Liste in der der Spieler enthalten ist und wann er den Befehl das letze Mal ausgeführt hat(timestamp).


    Wenn der Spieler den Befehl auszuführt prüfen wann er ihn das letze Mal ausgeführt hat und nur ausführen lassen wenn die Sperrzeit überschritten wurde(timestamp +Sperrzeit kleiner als aktuelle Zeit).


    Wenn er ihn ausführen darf den Eintrag in der Liste mit dem aktuellen timestamp updaten.


    Und wenn man das ganze richtig machen möchte dann macht man das in einer Datei/Config oder Datenbank damit man die Werte auch noch hat selbst wenn der Server neugestartet wurde.

    Wenn du beim speichern der online Spieler pro Server Status darauf achtest das die alle den gleichen timestamp haben, dann kannst du das wie Der_Maibaum schon beschrieben hat problemlos machen. Sollten die timestamps jedoch beim reinschreiben generiert werden ist das ziemlich doof, da es dann keine eindeutige Zuordnung geben würde.


    Das ganze wäre übrigens weitaus besser mit einem primary key auf status(inkrementeller integer) und die zugehörigen online Spieler bekommen als foreign key diese Id zugeordnet. Dann speicherst du den timestamp schonmal nicht doppelt und hast eine einfachere und performantere Zuordnung.

    Eine Classnotfound exception weist dich immer darauf hin das es zu Laufzeit die class wohl nicht gibt. Dies kann verschiedene Gründe haben jedoch der häufigste ist das sie einfach nie hinzugefügt wurde. Den nur weil du maven sagst das du diese dependency benutzen möchtest heist das noch lange nicht das sie dann im Endprodukt auch vorhanden ist.


    Normalerweise gibt es hier jetzt die Möglichkeit im Zielsystem die dependency als Library vorzuhalten oder diese selber in seinem Programm zur Verfügung zu stellen. Normalerweise ist der erste Ansatz den, den man verfolgen sollte aber manchmal macht es auch Sinn den zweiten Ansatz zu gehen.


    Hier ein kleiner link wo jemand das gleiche Problem hatte:

    https://stackoverflow.com/ques…ion-with-maven-dependency


    Oder das kann auch von Interesse sein. Das maven shade plugin kann alles was du brauchst einfach mit in dein Endprodukt packen, dadurch wird es allerdings aufgeblasen, das muss man immer beachten:

    https://maven.apache.org/plugins/maven-shade-plugin/


    PS: Ich bin jetzt nicht grade ein Maven Profi und nicht so sehr in der Java Welt unterwegs aber das sollte die eventuell helfen können.

    An sich ist bei solchen Sachen ein reinschauen bei anderen nie verkehrt. Und bei dem Thema quests in Minecraft fällt mir immer direkt ein Plugin ein, da es echt Millionen Möglichkeiten liefert und einfach riesig ist. Es gibt Dutzende Events, Dutzende conditions, man kam Spieler Tags zuweisen im Prinzip als Marker welchen man dann beim ansprechen von anderen npcs als trigger für unterschiedliche Conversation es nutzen kann.


    Kannst da ja mal reinschauen und dich ein wenig inspirieren lassen: https://github.com/Co0sh/BetonQuest/wiki

    Ich kenne da keine Videos und Bücher dazu, finde aber sich nicht das sowas zwingend notwendig wäre. Bei mir hat es damals mit Unity ein wenig in der Ausbildung angefangen und wenn man sich da kleine Ziele setzt, kommt man schon recht schnell zu befriedigenden Ergebnissen.


    Meine ersten Schritte waren das ich da erstmal versucht habe verschiedene Objekte einzufügen und die halt verschieden eingestellt habe(verschiedene Collider, Gravitation + Reibung getestet,...). Kurz darauf habe ich ein ganz simples Projekt gemacht. Ich habe ein Gebäude Stockwerk mit Blender gebaut(Zimmer, Öffnungen für Türen). Aber nur ganz simpel, also nur ein paar Planes und fertig. Ich wollte damit sowas wie ein Krankenhaus darstellen, mit ein paar Zimmern, decken Beleuchtung und einem relativ linearen Weg. Texturen habe ich einfach fertige genommen und nur geschaut das es erstmal halbwegs passt. Dann habe ich decken Lichter eingebaut, welche entweder normal an sind oder mit einem Zufallsgenerator an und aus gehen, also flackern. Dunkler Keller, flackernde Lichter, man versteht schon. Dann habe ich mir Türen gebaut die man dann wenn man nah genug dran ist mit der Taste E öffnen kann(Einzeltür und Doppeltüre). Habe die verschiedenen Räume eingerichtet(Müll am Boden, alte Betten, Schränke) und habe es so aussehen lassen als wäre es heruntergekommen. Einen Schaltkasten an einer der Wände und dann noch etwas Logik.


    Die Türe am Ende von dem kleinen Stockwerk kann nur mit einem Schlüssel geöffnet werden. Einige Türen sind verschlossen(Elektrisch). In einem der Räume liegt eine Sicherung am Boden die man in den Schaltkasten einsetzen muss und damit öffnen sich dann weitere Türen. Dort liegt dann in einem Zimmer ein Schlüssel und mit dem kommt man raus.


    Also im Endeffekt ein kleines Grussel Szenario und das versucht mit ein paar Mechanik auszustatten.

    Wäre gut wenn du uns zeigst wie du es derzeit machst ^^ da ohne zu wissen wie du es machst man nicht wissen kann warum es so ist.


    An sich sollte eigentlich wenn du den Block normal setzen lässt es keinerlei Probleme geben.

    Was heißt den schöner? Was ist daran den unschön ^^


    Du speicherst je nachdem wie und was du für die Statistik möchtest das ganze ab mit einem Datum und liest halt die letzen 30 Tage aus, summierst was auch immer du da statistisch anzeigen möchtest und zeigst das dann an^^