a5b8518
Branches > main > a5b8518 > files
Move from components to "text" as a game value
Commit: a5b8518ea4904036e9d4ac9331f653cd34c591ee
Parent: 6a591c6
4 changed files:
src/net/bowmap/server/game/handle.clj 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 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 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 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