Generator umożliwia generowanie treści Minecraft MOTD na podstawie MotdItemCollection
oraz kolekcji formatterów, w różnych formatach.
Zanim omówimy różne metody generowania treści, warto zauważyć, że każdy generator implementuje interfejs DevLancer\MinecraftMotdParser\Collection\MotdItemCollection\GeneratorInterface
. W związku z tym, każdy generator posiada metodę generate
, która przyjmuje jako argument MotdItemCollection $collection
. Kolekcję MotdItemCollection
można uzyskać m.in. poprzez parsowanie Minecraft MOTD za pomocą parserów. W tej dokumentacji używamy zmiennej $motdItemCollection
, która zawiera instancję klasy MotdItemCollection
. Elementy tej kolekcji mogą wyglądać tak:
[
['text' => "A "],
['bold' => true, 'color' => "white", 'text' => "Mine"],
['bold' => true, 'color' => "dark_red", 'text' => "craft "],
['reset' => true, 'text' => "Server"],
]
Jeśli nie jesteś jeszcze zaznajomiony z FormatCollection
lub ColorCollection
i chcesz dowiedzieć się, jak używać ich do formatowania, sprawdź szczegóły tutaj.
Generowanie kodu HTML odbywa się za pomocą klasy DevLancer\MinecraftMotdParser\Generator\HtmlGenerator
.
use DevLancer\MinecraftMotdParser\Collection\FormatCollection;
use DevLancer\MinecraftMotdParser\Collection\ColorCollection;
use DevLancer\MinecraftMotdParser\Generator\HtmlGenerator;
$formatCollection = FormatCollection::generate();
$colorCollection = ColorCollection::generate();
$generator = new HtmlGenerator($formatCollection, $colorCollection);
echo $generator->generate($motdItemCollection);
Warto zaznaczyć, że konstruktor przyjmuje opcjonalnie $formatCollection
i $colorCollection
. W przypadku ich braku zostaną one automatycznie wygenerowane.
A <span style="font-weight: bold; color: #FFFFFF;">Mine</span>
<span style="font-weight: bold; color: #AA0000;">craft </span> Server
Dodatkowo, ten generator obsługuje niestandardowe kolory zapisane w formacie HEX, nawet jeśli nie są one zawarte w kolekcji kolorów.
[
['text' => "A "],
['bold' => true, 'color' => "white", 'text' => "Mine"],
['bold' => true, 'color' => "#FDDC5C", 'text' => "craft "],
['reset' => true, 'text' => "Server"],
]
A <span style="font-weight: bold; color: #FFFFFF;">Mine</span>
<span style="font-weight: bold; color: #FDDC5C;">craft </span> Server
Do generowania Minecraft MOTD w postaci RAW (surowej) służy klasa DevLancer\MinecraftMotdParser\Generator\RawGenerator
.
Konstruktor RawGenerator
w trzecim parametrze przyjmuje znak sekcji, który poprzedza klucz formattera. Domyślnym znakiem jest §
.
use DevLancer\MinecraftMotdParser\Generator\RawGenerator;
use DevLancer\MinecraftMotdParser\Collection\FormatCollection;
use DevLancer\MinecraftMotdParser\Collection\ColorCollection;
$formatCollection = FormatCollection::generate();
$colorCollection = ColorCollection::generate();
$symbol = "&";
$generator = new RawGenerator($formatCollection, $colorCollection, $symbol);
echo $generator->generate($motdItemCollection);
A &f&lMine&4craft &rServer
Uwaga: Jeśli element w $motdItemCollection
zawiera niestandardowy format, np. kolor, który nie występuje w kolekcji formatterów, generator pominie ten element podczas generowania.
[
['text' => "A "],
['bold' => true, 'color' => "white", 'text' => "Mine"],
['bold' => true, 'color' => "#FDDC5C", 'text' => "craft "],
['reset' => true, 'text' => "Server"],
]
A &f&lMinecraft &rServer
Ponieważ kolor #FDDC5C
nie był zdefiniowany w kolekcji, został pominięty. Aby rozwiązać ten problem, możesz dodać niestandardowy formatter dla koloru do kolekcji ColorCollection
.
$light_gold = new DevLancer\MinecraftMotdParser\Formatter\ColorFormat('z', 'light_gold', '#FDDC5C');
$colorCollection->add($light_gold);
$generator = new RawGenerator($formatCollection, $colorCollection, $symbol);
echo $generator->generate($motdItemCollection);
A &f&lMine&zcraft &rServer
Najprostszym sposobem na generowanie samego tekstu MOTD jest użycie klasy DevLancer\MinecraftMotdParser\Generator\TextGenerator
.
use DevLancer\MinecraftMotdParser\Generator\TextGenerator;
$generator = new TextGenerator();
echo $generator->generate($motdItemCollection);
A Minecraft Server