Technik
Schießstand und Holzvogel
Stand: 02.11.2026. Beschreibt, was im Code umgesetzt ist, und kennzeichnet Anforderung [A], Vorschlag [V], technische Annahme [T] und offene Frage [F].
Grundlage
Verbindlich sind die Einträge in ENTSCHEIDUNGEN.md:
| Punkt | Entscheidung |
|---|---|
| Freier Bau aus passenden Mod-Blöcken | E15 |
| Maße: Kugelfang 6–48 Blöcke entfernt, 3–24 höher, mind. 3 Mastsegmente, Zaun um den Mastfuß, Stoffdach, freie Schusslinie | E16 |
| Fahnenmast im Umkreis von 8 Blöcken ist Pflicht | E17 |
| Kugelfangkasten 3 × 3 Blöcke, geneigt; Treffer nur an den weißen Stellen; Flürener Adler | E68 bis E71 (ersetzt E18) |
| Teile fallen sichtbar herunter und liegen als Trophäe mit Schützenname zum Aufsammeln | E19 |
| Jahr auf der Trophäe = Kalenderjahr | E20 |
| Keine Standabnahme: ein Stand gilt automatisch, sobald er nach E15–E18 gebaut ist | E21 (bewusste Abweichung vom Originalkonzept) |
| König wird, wer den Rumpf als letztes Teil abschießt | E23 (Königsermittlung nicht in diesem Modul) |
| Teile Krone, linker Flügel, rechter Flügel, Zepter, Reichsapfel, Rumpf; Reihenfolge pro Verein festlegbar | E24, E32 |
| Alle Mod-Blöcke craftbar | E28 |
| Trophäe am Boden zuerst für den Schießmeister | E33; Frist 60 s ist [V] |
| Schießmeister ist eine Spieler-Rolle | E9 |
Blöcke
Alle Blöcke sind einfache Blöcke ohne BlockEntity.
| ID | Rolle | Rezept [V] |
|---|---|---|
schuetzenfest:gewehrauflage |
Anker des Stands. Zeigt beim Setzen vom Spieler weg; das ist die Schussrichtung. Rechtsklick mit leerer Hand zeigt, ob der Stand fertig ist und was noch fehlt. | 4 Eisenbarren |
schuetzenfest:kugelfangkasten |
Hier hängt der Vogel. 3 × 3 Blöcke, 1 Block tief, mit der Oberkante um 22,5° zum Schützen geneigt (E68). Gebaut wie eine Tür aus zwei Blöcken übereinander; der Kasten ist die untere Hälfte. Beim Setzen müssen die Felder daneben, darüber und oben davor frei sein. Die offene Seite zeigt zum Spieler. | 8 Bretter |
schuetzenfest:gittermast_segment |
Vogelstange, stapelbar | 5 Eisenbarren → 4 |
schuetzenfest:sicherheitszaun |
Zaun aus Eisen, verbindet sich wie ein Zaun | 4 Eisenbarren + 2 Eisengitter → 6 |
schuetzenfest:schuetzenstand_dach |
Stoffdach (dünne Platte) | 3 Wolle + 2 Stöcke → 4 |
schuetzenfest:fahnenmast |
Fahnenmast, stapelbar | 3 Eisenbarren → 3 |
Item schuetzenfest:holzvogel: 4 Bretter + 1 Stock an der Werkbank (S1-09). Rechtsklick auf einen Kugelfangkasten setzt den Vogel ein, höchstens einer pro Kasten.
Wann ist ein Stand ein Stand?
Erkannt wird bei jedem Schuss neu (Schiessstand, Regelkern kern/StandPruefung). Gespeichert wird nichts, ein umgebauter Stand gilt sofort in seiner neuen Form. Es gibt keinen Abnahme-Klick (E21).
Der Schütze steht höchstens 2 Blöcke (waagerecht) von einer Gewehrauflage entfernt [V], und von dieser Auflage aus gilt (E16, E17):
- Stoffdach über der Auflage oder dem Schützenplatz dahinter, bis 4 Blöcke hoch [V].
- Kugelfangkasten in Schussrichtung, 6 bis 48 Blöcke entfernt, 3 bis 24 Blöcke höher, höchstens 1 Block seitlich versetzt [V].
- Der Kasten zeigt mit der offenen Seite zum Stand.
- Darunter mindestens 3 Gittermastsegmente, durchgehend bis auf festen Boden.
- Freie Schusslinie von der Auflage zum Kasten.
- Sicherheitszaun auf allen vier Seiten des Mastfußes, je bis 8 Blöcke entfernt [V].
- Fahnenmast im Umkreis von 8 Blöcken um die Auflage.
Fehlt etwas, klickt das Gewehr nur (E12) und der Schütze bekommt den ersten Mangel mit Position genannt. Rechtsklick mit leerer Hand auf die Gewehrauflage oder /schuetzenfest stand pruefen <pos> listen alle Mängel. Das Kennzeichen „Pflicht“ je Mangel ist im Code vorbereitet, falls Nils später einzelne Teile lockern möchte.
Holzvogel
- Entity
schuetzenfest:holzvogel, ein Mob ohne KI, unverwundbar für normalen Schaden. Nur Treffer über das Schützengewehr zählen. - Teile, Trefferpunkte [V] und Abschussreihenfolge kommen beim Einsetzen aus
config/schuetzenfest/vogel.json(wird beim ersten Start angelegt). Standard:
| Reihenfolge | Teil | Trefferpunkte |
|---|---|---|
| 1 | Krone | 3 |
| 2 | linker Flügel | 5 |
| 3 | rechter Flügel | 5 |
| 4 | Zepter | 2 |
| 5 | Reichsapfel | 2 |
| 6 | Rumpf | 12 |
Ein Teil ist erst treffbar, wenn alle Teile davor gefallen sind. Teile, die in der Konfiguration nicht in der Reihenfolge stehen, sind jederzeit treffbar. Der Rumpf ist immer zuletzt dran. Ein Treffer auf ein Teil, das noch nicht dran ist, verpufft (TEIL_GESPERRT).
- Jeder Treffer kostet 1 Trefferpunkt [V]. Schadensstufen: voll = intakt, mehr als die Hälfte = angeschlagen, bis zur Hälfte = stark beschädigt, 0 = abgefallen.
- Fällt ein Teil: Splitter und Geräusch, das Teil fällt als Trophäe vor dem Kasten herunter und bleibt liegen, bis es jemand aufhebt (kein Verschwinden nach fünf Minuten). Die Trophäe trägt Teilname, Schütze und Kalenderjahr. Die ersten 60 Sekunden darf sie nur der nächste Schießmeister in der Welt aufheben; ist keiner online, sofort jeder. Spieler im Umkreis von 64 Blöcken bekommen eine Ansage.
- Königsschuss (E23, Koenigsschuss): Fällt der Rumpf, wird der Schütze sofort König. Er bekommt die Königskette über Koenigswuerde.kroenen. Den Königsorden vergibt künftig kroenen selbst (Ketten-und-Uniform-Thread). Alle Spieler auf dem Server lesen die Ansage im Chat, wer im Umkreis von 96 Blöcken steht, sieht sie zusätzlich als Titel. Über dem Kasten steigen drei Raketen in den Vereinsfarben auf.
- Nach dem Königsschuss (Rumpf gefallen) verschwindet der Vogel, der Kasten ist sofort frei für den nächsten Holzvogel.
- Wird der Kasten abgebaut, verschwindet der Vogel; ein unbeschädigter Vogel fällt als Item zurück.
- Der Flürener Adler (E71): grau mit gespreizten Flügeln, goldene Krone, gelber Schnabel, rote Zunge, grünes Brustschild mit goldener Glocke, Zepter beim Betrachter links, Reichsapfel rechts. Gut 2,5 Blöcke Spannweite; er hängt mit derselben Neigung wie der Kasten.
- Nur die weißen Stellen zählen (E69, E70). Schaden macht ein Treffer nur hier:
| Teil | Weiße Stelle |
|---|---|
| Krone | schmaler Streifen unter der Krone |
| Flügel | Dreieck am Flügelansatz |
| Zepter, Reichsapfel | Dreieck nahe am Rumpf |
| Rumpf | Ring um die Rumpfmitte (rahmt das Brustschild) |
Ein Treffer woanders am Vogel bleibt stecken (WIRKUNGSLOS), der Schütze liest „Nur die weißen Stellen zählen“. Was vorn liegt, deckt dahinterliegende Stellen ab.
Schießliste: Anmeldung und Aufruf
Je Kugelfangkasten gibt es eine Schießliste (Schiessliste, Regeln in kern/Schiessreihe), S1-12, S1-13, S1-16.
- Anmelden kann man sich auf drei Wegen (E59):
- selbst an der Gewehrauflage mit
/schuetzenfest anmelden, als Bewerber für den Königsschuss mit/schuetzenfest anmelden koenig; - beim Schießmeister, der mit
/schuetzenfest aufruf anmelden <spieler> [koenig]einträgt; - beim Präsidenten im Vereinsheim. Der trägt am Stand mit dem nächsten aufgesetzten Holzvogel ein (
Schiessliste.anmeldenAmNaechstenVogel), die Anbindung an den Präsidenten baut das Schützendorf.
Die Selbstanmeldung an der Auflage bleibt, damit niemand auf Schießmeister oder Präsident warten muss.
- Aufgerufen wird nacheinander in der Reihenfolge der Anmeldung, nach dem Letzten wieder von vorn (E58).
- Je Aufruf ein Schuss und 30 Sekunden Bedenkzeit (E57). Danach ist der Nächste dran. Der Aufgerufene sieht „Du bist dran“ in der Aktionsleiste, Spieler im Umkreis von 64 Blöcken lesen den Aufruf im Chat.
- Wer nicht dran ist, kann zwar abdrücken, der Treffer zählt aber nicht (NICHT_FREIGEGEBEN).
- Wer offline ist, wird übersprungen und bleibt auf der Liste.
- Ist nur noch der Rumpf übrig, beginnt der Königsschuss: Nur Bewerber sind dran, die Bewerbung schließt. Gibt es keinen Bewerber, bleibt sie offen, damit der Vogel nicht hängen bleibt. Treffer von Nicht-Bewerbern auf den Rumpf verpuffen (TEIL_GESPERRT).
- Ist niemand angemeldet, gilt freies Schießen: Jeder am Stand darf, auch auf den Rumpf (E60).
- Nach dem Königsschuss ist die Liste leer.
- Die Listen werden mit der Welt gespeichert und überstehen einen Serverneustart, samt Aufruf und Restzeit (E61, SchiesslistenDaten).
Befehle
| Befehl | Wer |
|---|---|
/schuetzenfest schiessmeister ernennen <spieler> / entlassen <spieler> / liste |
Operatoren |
/schuetzenfest stand pruefen <pos> |
alle |
/schuetzenfest vogel status |
alle |
/schuetzenfest anmelden [koenig] / abmelden |
alle, an der Gewehrauflage |
/schuetzenfest liste |
alle im Umkreis von 16 Blöcken |
/schuetzenfest aufruf weiter / aufruf anmelden <spieler> [koenig] / aufruf entfernen <spieler> |
Schießmeister und Operatoren |
Schnittstellen für andere Module
| Schnittstelle | Zweck |
|---|---|
SchussAuswertung.setze(Vogelschuss::schuss) |
wird beim Start registriert; das Gewehr ruft sie bei jedem Schuss auf |
Vogelschuss.setzeTrefferFreigabe(TrefferFreigabe) |
Aufruf der Schützen, Bewerber für den Königsschuss (S1-12, S1-16); belegt durch Schiessliste |
Schiessliste.anmeldenAmNaechstenVogel(level, ort, radius, spieler, bewerber) |
Anmeldung beim Präsidenten im Vereinsheim (E59) |
Schiessliste.stand(level, kasten), SchiesslisteEvents.GEAENDERT |
HUD „Wer ist dran?“: Aufgerufener, Restzeit, die Nächsten, Abschnitt, Teilnehmer, Bewerber, Namen |
VogelEvents.GETROFFEN, VogelEvents.TEIL_ABGEFALLEN |
Preise (Wertmarken), Königsermittlung: TEIL_ABGEFALLEN mit VogelTeil.RUMPF ist der Königsschuss (Katalog 18); feuert genau einmal pro Teil |
VogelKonfig.setze(Vogelvorlage) |
künftige Vereinsprofile (Stufe 7) |
Assets
- Blockbench-Modelle (PR #11,
docs/assets/BLOCKBENCH_PROTOTYPEN.md): Holzvogel, Kugelfangkasten, Gittermast und die Vogelteil-Trophäen. - Adler, Kasten und Trophäen erzeugt
assets_src/texturen/adler.pyaus einer Würfelliste: Client-Modell, Trefferzonen (kern/AdlerGeometrie.java), Texturen (256 × 256) und Item-Modelle passen dadurch immer zusammen. Ursprung ist die untere Vorderkante des Kastens, um die Kasten und Vogel geneigt sind (kern/Neigung). - Schadensstufen je Teil: Über die Grundtextur legt der Renderer
holzvogel_angeschlagen.pngoderholzvogel_stark_beschaedigt.png, und zwar nur auf die Teile in dieser Stufe. Abgefallene Teile sind ausgeblendet. - Gittermast: Der Blockzustand
teilergibt sich aus den Nachbarn. Unten ohne Mast darunter steht der Fuß mit Bodenplatte, oben ohne Mast darüber die Spitze mit Montageplatte, dazwischen die Mitte. Ein einzelnes Segment ist ein Fuß. - Trophäe: Das Item zeigt das Modell des abgeschossenen Teils. Gewählt wird es über
custom_model_data(Text = Teil-ID) initems/vogelteil_trophaee.json. - Texturen für Gewehrauflage, Sicherheitszaun, Stoffdach und Fahnenmast erzeugt
assets_src/texturen/erzeuge_texturen.py(siehedocs/assets/TEXTUREN.md); die früheren Platzhalter sind ersetzt.
Offen
- [F] Stoffdach in Vereinsfarben einfärben. Der Adler ist nach E71 grau und bekommt keine Vereinsfarben.
- [T] Nicht in einem echten Spiel mit Grafik getestet; geprüft durch Unit-Tests des Regelkerns und Server-Gametests.
