PHP library to parse minecraft server motd
This library can be installed by issuing the following command:
composer require dev-lancer/minecraft-motd-parser| Lang |
|---|
| EN |
| PL |
To parse a text-based MOTD using custom formatting and colors:
$formatCollection = \DevLancer\MinecraftMotdParser\Collection\FormatCollection::generate();
$colorCollection = \DevLancer\MinecraftMotdParser\Collection\ColorCollection::generate(true); //When set to true, colors from BE are added
$parser = new \DevLancer\MinecraftMotdParser\Parser\TextParser($formatCollection, $colorCollection, '&');
$motd = "A &l&fMine&4craft &rServer";
$motdItemCollection = $parser->parse($motd, new \DevLancer\MinecraftMotdParser\Collection\MotdItemCollection());To parse a structured array-based MOTD:
$formatCollection = \DevLancer\MinecraftMotdParser\Collection\FormatCollection::generate();
$colorCollection = \DevLancer\MinecraftMotdParser\Collection\ColorCollection::generate();
$parser = new \DevLancer\MinecraftMotdParser\Parser\ArrayParser($formatCollection, $colorCollection);
$motd = [
[ "text" => "A "],
[
"bold" => true,
"extra" => [
[
"color" => "white",
"text" => "Mine"
],
[
"color" => "dark_red",
"text" => "craft "
],
]
],
[
"text" => "Server"
]
];
$motdItemCollection = $parser->parse($motd, new \DevLancer\MinecraftMotdParser\Collection\MotdItemCollection());The mergeSimilarItem() method in the MotdItemCollection class merges adjacent MotdItem objects with the same formatting and color. This optimization helps to reduce redundancy in the formatting and color codes, making the MOTD more concise.
$motd = "A &l&fMine&f&lcraft &rServer";
$motdItemCollection = $parser->parse($motd, new \DevLancer\MinecraftMotdParser\Collection\MotdItemCollection());
//Output before
[
['text': "A "],
['bold': true, 'color': "white", 'text': "Mine"],
['bold': true, 'color': "white", 'text': "craft "],
['reset': true, 'text': "Server"],
]
$motdItemCollection->mergeSimilarItem();
//Output after
[
['text': "A "],
['bold': true, 'color': "white", 'text': "Minecraft "],
['reset': true, 'text': "Server"],
]Example of creating a MotdItemCollection:
$parser = new \DevLancer\MinecraftMotdParser\Parser\TextParser();
$motd = "A §l§fMine§4craft §rServer";
$motdItemCollection = $parser->parse($motd, new \DevLancer\MinecraftMotdParser\Collection\MotdItemCollection());To generate HTML from a parsed MOTD:
$generator = new \DevLancer\MinecraftMotdParser\Generator\HtmlGenerator();
// Generate HTML from the MOTD item collection
echo $generator->generate($motdItemCollection); The output will be:
A <span style="font-weight: bold; color: #FFFFFF;">Mine</span>
<span style="font-weight: bold; color: #AA0000;">craft </span> ServerTo generate raw text from a parsed MOTD:
$generator = new \DevLancer\MinecraftMotdParser\Generator\RawGenerator("§");
// Generate raw text from the MOTD item collection
echo $generator->generate($motdItemCollection);
//output: A §f§lMine§4craft §rServerTo generate plain text from a parsed MOTD:
$generator = new \DevLancer\MinecraftMotdParser\Generator\TextGenerator();
// Generate plain text from the MOTD item collection
echo $generator->generate($motdItemCollection);
//output: A Minecraft ServerExample of creating a custom bold formatter:
class CustomBoldFormatter implements FormatterInterface
{
public function getKey(): string
{
return 'l';
}
public function getName(): string
{
return 'bold';
}
public function getFormat(): string
{
return '<b class="CustomBoldFormatter">%s</b>';
}
}To use the custom formatter:
// Create a new format collection
$formatCollection = \DevLancer\MinecraftMotdParser\Collection\FormatCollection::generate();
// and override the default formatter for bold
$formatCollection->add(new CustomBoldFormatter());
// Create a new MOTD item
$motdItem = new \DevLancer\MinecraftMotdParser\MotdItem();
$motdItem->setBold(true);
$motdItem->setText("Hello World");
// Create a new MOTD item collection and add the MOTD item
$motdItemCollection = new \DevLancer\MinecraftMotdParser\Collection\MotdItemCollection();
$motdItemCollection->add($motdItem);
// Generate HTML using the custom formatter
$generator = new \DevLancer\MinecraftMotdParser\Generator\HtmlGenerator($formatCollection);
echo $generator->generate($motdItemCollection); The output will be:
<b class="CustomBoldFormatter">Hello World</b>This library is licensed under the MIT License.