• 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!
  • Dies ist ein moderiertes Forum. Dein Beitrag ist für dich und andere erst sichtbar, wenn er von einem Teammitglied moderiert wurde! Wird dein Beitrag abgelehnt erhältst du eine Meldung. Bitte erstelle so lange keine neuen Beiträge! Die Freischaltung wird auch nicht durch Nachfragen bei einem Teammitglied beschleunigt.

Denizen - Skripten, einfach erklärt. [Tutorial]

Goinq

Redstoneengineer
Registriert
18 April 2015
Beiträge
43
Diamanten
215
Guten Tag alle zusammen :D,

mein Name ist Manuel und ich möchte euch heute in die Welt von Denizen führen.

Was ist Denizen?
"Denizen is a very high power script engine for Spigot-enabled Minecraft servers."
Genau wie Skript ist Denizen eine Script-Sprache für Minecraft-Spigot/Paper-Server.

Hier noch ein kleiner Auszug aus der Spigot-Seite:
Features include:
- Full high power yet easily learned scripting language!
- Easy to write scripts with any text editor OR even directly in-game!
- The full power of a Minecraft server exposed, not even limited to what standard plugins can access through the API!
- Powerful direct integration with Citizens, as well as many other popular plugins (see Addons section below)!
- Rapid development for new features and bug fixes!
- Powerful and capable enough to even replace major plugins like WorldGuard entirely using scripts (see sample scripts section below)
- More than 30 quick yet informative tutorial videos explaining everything you could ever need to get your server customized to perfection!
- Completely open source (see GitHub link above)!
- Very friendly and helpful support (see Discord link below)!
- And so much more!

Downloadlinks und Informationslinks:
Spigot-Seite
Dokumentation
Guide Englisch
Aktuelle Downloads

Zunächst braucht ihr einen beliebigen Texteditor. Ich empfehle euch Visual Studio Code. Hier gibt es bei den Extensions eine Erweiterung für Denizen, welche euch auf Fehler hin weißt, euch Vorschläge macht und mehr.
Visual Studio Code
.NET Core 3.1 (wird für die Extension benötigt!)
1.PNG


Dateinen in denen man später seine Scripte schreibt haben das Dateinenformat .dsc ! Das steht für Denizenscript.

Als nächstes benötigt ihr einen Server. Zum entwickeln empfehle ich einen Lokalserver zu erstellen.
Hier ein Link zu einem Tutorial:
Spigot-Server erstellen

Guide Englisch
Möchte man Befehle von Denizen per Command ingame benutzen kann man das über den /ex Befehl tun.
Falsch: /narrate "Hello world" oder - narrate "Hello Wolrd"
Richtig: /ex narrate "Hello world"
(Narrate ist ein Befehl für die Textausgabe)

Mit dem /ex Befehl kann man außerdem Denizen reloaden. Es ist kein Serverneustart nötig, damit alles funktioniert.
/ex reload

Guide Englisch
Denizen arbeitet mit verschiedene Script-Container. Jeder Container hat eine bestimmte Fähigkeit und ist auf den jeweiligen Bereich angepasst. So gibt es für einfache Aufgaben einen Task-Container, für Commands ein Command-Container, für Events einen World-Container und viele mehr.

Erstelle nun eine neue Datei und nenne sie wie du willst. Beachte das die Datei mit .dsc endet. Dieses steht für Denizenscript.
Code:
example_task:
    type: task
    script:
    - narrate "Hello world"
Du kannst diesen Task nun mit /ex run example_task ausführen.

Guide Englisch


Meine neuere Videoreihe (weitere Videos folgen):


Dokumentation
In der Dokumentation findet ihr verschiedene Reiter, welche am Anfang verwirrend zu scheinen. Deswegen erkläre ich diese einmal:
Tag Search
Bei Tag Search findet ihr die sogenannten Tags. Tags werden verwendet um Werte aus Listen, von Minecraft, der Eingabe von Spieler und mehr verwendet.
Ein einfaches Beispiel ist
Code:
<EntityTag.name>
Bei EntityTag kann man zum Beispiel Player eintragen und bekommt dann den namen des Spielers.

Kommen wir zu einem komplexeren Beispiel
Code:
<EntityTag.location.simple.formatted>

Dieser Tag besteht aus dem Tag <EntityTag.location> und dem Tag <LocationTag.simple.formatted>
Für EntityTag können wir wieder zum Beispiel Player  eingeben und für LocationTag wird durch <EntityTag.location> automatisch diese Location/Koordinaten eingefügt.

Der Sinn diese beide Tags zu kombinieren ist dieser:
Ausgabe von <EntityTag.location>: l@-217.48727158324309,75.24433174406282,233.9290830879626,9.097063064575195,-173.7088623046875,world
Ausgabe mit<LocationTag.simple.formatted>: X '218', Y '75', Z '233' in world 'world'

Command Search
Bei Command Search finden wir verschiedene Befehle.
Ein Beispiel ist ein Befehl welcher eine Nachricht zum naheliegenden Objekt gibt, also Spieler, Console, etc.
Code:
- narrate "Hello World!"

Event Search
Hier sind alle mögliche Events aufgelistet.
Beispiel:
Code:
on player (un)equips <item>
Hier wird ein Befehl ausgeführt wenn ein Spieler ein bestimmtes Item ausrüstet/ablegt.

Language Explanation Search
Dieser Punkt ist wahrscheinlich der Wichtigste in der gesamten Dokumentation. Hier wird der aufbau von verschiedene "Container" ausgelistet und somit den Aufgab des Skriptes.

Ein Befehl-Skript:
Code:
Command_Script_Name:
  type: command
  name: mycmd
  permission: my.permission.node
  script:
      - narrate "Hello World!"
Erklärung:
Command_Script_Name - Der Name des Skriptes. Dieser Name darf nicht übereinstimmen mit andere Skripten
Type - Welcher Typ der Container ist. Ist bei jedem Container vorhanden.
Name - Das ist der Command-Name. Also /name.
Permission - Die Permission welche man braucht um den Befehl benützen zu dürfen.
script - Hier stehen die Befehle, welche nacheinander abgearbeitet werden. Hier eine Chatsausgabe an den Spieler der diesen Befehl ausführt.

Ein weiteres Beispiel ist ein Event-Skript:
Code:
Event_name:
    type: world
    on player clicks in inventory:
        - take iteminhand
Wenn der Spieler in das Inventar klickt, nimmt er das angeklickte Item automatisch in die Hand.
Type ist bei einem Event auf world, da ein Event ja mit der Welt interagiert.

Mechanism Search
Hier wird einem erklärt was hinter dem bei dem Tag steckenden Tag steht. Also <EntityTag.location>
Code:
Object    PlayerTag
Name    location
Input    LocationTag
Description    If the player is online, teleports the player to a given location.
Otherwise, sets the player's next spawn location.
Tags    <PlayerTag.location>

Action Search
Dies hier bezieht sich vollständig auf NPCs und wird nur bei NPCs benötigt.


Und damit sind wir auch schon am Ende dieser kleinen Einführung. Wenn Interesse besteht schreibe ich gerne einen weiteren Teil, lasst es mich wissen.

Ich wünsch euch viel Spaß beim Scripten.
-Manuel
 
Zuletzt bearbeitet:

gameforcraft

Minecrafter
Registriert
6 August 2020
Beiträge
6
Diamanten
258
Danke für deine Mühe und die gut erklärten Videos. Ich wusste vorher noch gar nichts über Denizen und konnte so einen ersten Überblick erhalten. Werden noch weitere Videos folgen?
 

Hydroxy

Minecrafter
Registriert
26 Februar 2018
Beiträge
3
Diamanten
12
@gameforcraft
Falls du die Basics lernen möchtest empfehle ich dir den Guide zu lesen (English).

Ein Großteil der offiziellen Tutorial-Reihe ist mittlerweile outdated und durch den Guide ersetzt und nicht mehr zu empfehlen.
@Goinq wäre vielleicht gut wenn du den Guide als Grundlage für die Videos nimmst, falls du noch vor hast weitere Videos zu machen und die Beschreibung zu Updaten. :)

Grüße
 

Goinq

Redstoneengineer
Registriert
18 April 2015
Beiträge
43
Diamanten
215
Erste neue/überarbeitete Tutorials wurden hinzugefügt.
Nach einiger Zeit und viel Erfahrung die ich sammeln konnte, habe ich beschlossen diesen Thread wieder zu aktualisieren und upzudaten. :D
 
Oben