a5b8518

Bowmap · bowmap.git · Tickets

Branches > main > a5b8518 > files

Move from components to "text" as a game value

Grahp, 2026-10-09

Commit: a5b8518ea4904036e9d4ac9331f653cd34c591ee
Parent: 6a591c6

4 changed files:

src/net/bowmap/server/game/handle.clj modified (view file)

@@ -3,9 +3,9 @@    [com.wotbrew.relic :as rel]    [net.bowmap.server.game.player :as player]    [net.bowmap.server.game.server :as server]+   [net.bowmap.server.game.text :as text]    [net.bowmap.server.network.connection :as connection]    [net.bowmap.server.packet.clientbound :as clientbound]-   [net.bowmap.server.packet.component :as component]    [net.bowmap.server.packet.entity :as entity]    [net.bowmap.server.packet.gamemode :as gamemode]    [net.bowmap.server.packet.registry :as registry]@@ -27,8 +27,8 @@    {::p/id ::clientbound/status-response     ::p/version-name "26.3"     ::p/version-id 777-    ::p/motd {::component/text "Bowmap!"-              ::component/color "#9f9f9f"}+    ::p/motd {::text/content "Bowmap!"+              ::text/color "#9f9f9f"}     ::p/online-player-count (count (state ::server/players))     ::p/max-player-count server/max-player-count}]) 

src/net/bowmap/server/game/text.clj added (view file)

@@ -0,0 +1,10 @@+(ns net.bowmap.server.game.text+  (:require+   [clojure.spec.alpha :as s]))++(s/def ::content string?)++(s/def ::color (s/and string? #(re-matches #"#[0-9a-fA-F]{6}" %)))+(s/def ::extra (s/coll-of ::text :kind sequential?))++(s/def ::text (s/keys :opt [::content ::color ::extra]))

src/net/bowmap/server/packet/component.clj deleted (view file)

@@ -1,16 +0,0 @@-(ns net.bowmap.server.packet.component-  "The subset of the protocol text component format used by this server.-   See https://minecraft.wiki/w/Text_component_format for the full format."-  (:require-   [clojure.spec.alpha :as s]))--(s/def ::type #{"text" #_"translatable" #_"score" #_"selector" #_"keybind" #_"nbt"})-(s/def ::text string?)--(s/def ::color #(re-matches #"#[0-9a-fA-F]{6}" %))-(s/def ::extra (s/* ::component))--(s/def ::component (s/keys :opt-un [::type ::text #_::translate #_::score #_::selector #_::keybind #_::nbt-                                    ::extra-                                    ::color #_::font #_::bold #_::italic #_::underlined #_::strikethrough #_::obfuscated #_::shadow_color-                                    #_::insertion #_::click_event #_::hover_event]))

src/net/bowmap/server/packet/writers.clj modified (view file)

@@ -7,6 +7,7 @@    [clojure.set :as set]    [clojure.spec.alpha :as s]    [net.bowmap.server.game.block :as block]+   [net.bowmap.server.game.text :as text]    [net.bowmap.server.packet.identifier :as identifier]    [net.bowmap.server.packet.nbt :as nbt]    [net.bowmap.server.packet.schema :as p])@@ -145,11 +146,17 @@   "Turns 'x' into JSON and writes it as a string."   (apply> json/write-str string>)) +(defn- text->component [{::text/keys [content color extra]}]+  (cond-> {:type :text+           :text (or content "")}+    color (assoc :color color)+    (not-empty extra) (assoc :extra (mapv text->component extra))))+ (defn- ->status-response [{::p/keys! [version-name version-id]                            ::p/keys [motd max-player-count online-player-count]}]   (cond-> {:version {:name version-name                      :protocol version-id}}-    motd (assoc :description motd)+    motd (assoc :description (text->component motd))      (and max-player-count online-player-count)     (assoc :players {:max max-player-count