Skip to content

Commit 9578ece

Browse files
committed
Add motd html
1 parent 40762cb commit 9578ece

File tree

4 files changed

+147
-165
lines changed

4 files changed

+147
-165
lines changed

ApiPing.php

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,32 @@
66
use xPaw\MinecraftPing;
77
use xPaw\MinecraftPingException;
88

9-
require __DIR__ . '/src/MinecraftPing.php';
10-
require __DIR__ . '/src/MinecraftPingException.php';
9+
require_once __DIR__ . '/src/MinecraftPing.php';
10+
require_once __DIR__ . '/src/MinecraftPingException.php';
1111

12-
$Timer = MicroTime( true );
12+
$Timer = MicroTime(true);
1313

1414
$InfoPing = false;
1515
$QueryPing = null;
1616

17-
try
18-
{
19-
$QueryPing = new MinecraftPing( MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT );
20-
21-
$InfoPing = $QueryPing->Query( );
22-
23-
if( $InfoPing === false )
24-
{
25-
$QueryPing->Close( );
26-
$QueryPing->Connect( );
27-
28-
$InfoPing = $QueryPing->QueryOldPre17( );
17+
try {
18+
$QueryPing = new MinecraftPing(MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT);
19+
20+
$InfoPing = $QueryPing->Query();
21+
22+
if($InfoPing === false) {
23+
$QueryPing->Close();
24+
$QueryPing->Connect();
25+
26+
$InfoPing = $QueryPing->QueryOldPre17();
2927
}
30-
}
31-
catch( MinecraftPingException $e )
32-
{
28+
} catch(MinecraftPingException $e) {
3329
$Exception = $e;
3430
}
3531

36-
if( $QueryPing !== null )
37-
{
38-
$QueryPing->Close( );
32+
if($QueryPing !== null) {
33+
$QueryPing->Close();
3934
}
4035

41-
$Timer = Number_Format( MicroTime( true ) - $Timer, 4, '.', '' );
42-
?>
36+
$Timer = Number_Format(MicroTime(true) - $Timer, 4, '.', '');
37+
?>

ApiQuery.php

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,22 @@
66
use xPaw\MinecraftQuery;
77
use xPaw\MinecraftQueryException;
88

9-
define( 'MQ_SERVER_ADDR', $host );
10-
define( 'MQ_SERVER_PORT', $port );
11-
define( 'MQ_TIMEOUT', 1 );
9+
define('MQ_SERVER_ADDR', $host);
10+
define('MQ_SERVER_PORT', $port);
11+
define('MQ_TIMEOUT', 1);
1212

13-
require __DIR__ . '/src/MinecraftQuery.php';
14-
require __DIR__ . '/src/MinecraftQueryException.php';
13+
require_once __DIR__ . '/src/MinecraftQuery.php';
14+
require_once __DIR__ . '/src/MinecraftQueryException.php';
1515

16-
$Timer = MicroTime( true );
16+
$Timer = MicroTime(true);
1717

18-
$Query = new MinecraftQuery( );
18+
$Query = new MinecraftQuery();
1919

20-
try
21-
{
22-
$Query->Connect( MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT );
23-
}
24-
catch( MinecraftQueryException $e )
25-
{
20+
try {
21+
$Query->Connect(MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT);
22+
} catch(MinecraftQueryException $e) {
2623
$Exception = $e;
2724
}
2825

29-
$Timer = Number_Format( MicroTime( true ) - $Timer, 4, '.', '' );
30-
?>
26+
$Timer = Number_Format(MicroTime(true) - $Timer, 4, '.', '');
27+
?>

closeTags.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
function closeTags($html) {
3+
preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
4+
$openedtags = $result[1];
5+
6+
preg_match_all('#</([a-z]+)>#iU', $html, $result);
7+
$closedtags = $result[1];
8+
9+
$len_opened = count($openedtags);
10+
if (count($closedtags) == $len_opened) {
11+
return $html;
12+
}
13+
14+
$openedtags = array_reverse($openedtags);
15+
for ($i=0; $i < $len_opened; $i++) {
16+
if (!in_array($openedtags[$i], $closedtags)) {
17+
$html .= '</'.$openedtags[$i].'>';
18+
} else {
19+
unset($closedtags[array_search($openedtags[$i], $closedtags)]);
20+
}
21+
}
22+
23+
return $html;
24+
}
25+
?>

json.php

Lines changed: 92 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -8,141 +8,105 @@
88
$host = $_GET['host'];
99
$port = $_GET['port'];
1010

11-
require 'ApiQuery.php';
12-
require 'ApiPing.php';
11+
require_once 'ApiQuery.php';
12+
require_once 'ApiPing.php';
13+
14+
require_once 'closeTags.php';
15+
16+
if (($Info = $Query->GetInfo()) !== false) {
17+
$hostNameHtml = str_replace("§k", "", $Info['HostName']);
18+
$hostNameHtml = str_replace("§l", "", $hostNameHtml);
19+
$hostNameHtml = str_replace("§m", "", $hostNameHtml);
20+
$hostNameHtml = str_replace("§n", "", $hostNameHtml);
21+
$hostNameHtml = str_replace("§o", "", $hostNameHtml);
22+
$hostNameHtml = str_replace("§r", '<font color="#">', $hostNameHtml);
23+
$hostNameHtml = str_replace("§0", '<font color="#000000">', $hostNameHtml);
24+
$hostNameHtml = str_replace("§1", '<font color="#0000AA">', $hostNameHtml);
25+
$hostNameHtml = str_replace("§2", '<font color="#00AA00">', $hostNameHtml);
26+
$hostNameHtml = str_replace("§3", '<font color="#00AAAA">', $hostNameHtml);
27+
$hostNameHtml = str_replace("§4", '<font color="#AA0000">', $hostNameHtml);
28+
$hostNameHtml = str_replace("§5", '<font color="#AA00AA">', $hostNameHtml);
29+
$hostNameHtml = str_replace("§6", '<font color="#FFAA00">', $hostNameHtml);
30+
$hostNameHtml = str_replace("§7", '<font color="#AAAAAA">', $hostNameHtml);
31+
$hostNameHtml = str_replace("§8", '<font color="#555555">', $hostNameHtml);
32+
$hostNameHtml = str_replace("§9", '<font color="#5555FF">', $hostNameHtml);
33+
$hostNameHtml = str_replace("§a", '<font color="#55FF55">', $hostNameHtml);
34+
$hostNameHtml = str_replace("§b", '<font color="#55FFFF">', $hostNameHtml);
35+
$hostNameHtml = str_replace("§c", '<font color="#FF5555">', $hostNameHtml);
36+
$hostNameHtml = str_replace("§d", '<font color="#FF55FF">', $hostNameHtml);
37+
$hostNameHtml = str_replace("§e", '<font color="#FFFF55">', $hostNameHtml);
38+
$hostNameHtml = str_replace("§f", '<font color="#FFFFFF">', $hostNameHtml);
39+
40+
$cleanHostName = str_replace(array("§k", "§l", "§m", "§n", "§o", "§r", "§0", "§1", "§2", "§3", "§4", "§5", "§6", "§7", "§8", "§9", "§a", "§b", "§c", "§d", "§e", "§f"), "", $Info['HostName']);
1341

14-
if (($Info = $Query->GetInfo()) !== false){
15-
$CleanHostName = str_replace("§k","",$Info['HostName']);
16-
$CleanHostName = str_replace("§l","",$CleanHostName);
17-
$CleanHostName = str_replace("§m","",$CleanHostName);
18-
$CleanHostName = str_replace("§n","",$CleanHostName);
19-
$CleanHostName = str_replace("§o","",$CleanHostName);
20-
$CleanHostName = str_replace("§r","",$CleanHostName);
21-
$CleanHostName = str_replace("§1","",$CleanHostName);
22-
$CleanHostName = str_replace("§2","",$CleanHostName);
23-
$CleanHostName = str_replace("§3","",$CleanHostName);
24-
$CleanHostName = str_replace("§4","",$CleanHostName);
25-
$CleanHostName = str_replace("§5","",$CleanHostName);
26-
$CleanHostName = str_replace("§6","",$CleanHostName);
27-
$CleanHostName = str_replace("§7","",$CleanHostName);
28-
$CleanHostName = str_replace("§8","",$CleanHostName);
29-
$CleanHostName = str_replace("§9","",$CleanHostName);
30-
$CleanHostName = str_replace("§a","",$CleanHostName);
31-
$CleanHostName = str_replace("§b","",$CleanHostName);
32-
$CleanHostName = str_replace("§c","",$CleanHostName);
33-
$CleanHostName = str_replace("§d","",$CleanHostName);
34-
$CleanHostName = str_replace("§e","",$CleanHostName);
35-
$CleanHostName = str_replace("§f","",$CleanHostName);
3642
if ($Info['GameName'] == 'MINECRAFT') {
37-
$json = array(
38-
'status' => 'Online',
39-
'platform' => 'Minecraft',
40-
'gametype' => $Info['GameType'],
41-
'motd' => array(
42-
'motd' => $Info['HostName'],
43-
'clean_motd' => $CleanHostName
44-
),
45-
'host' => array(
46-
'host' => $host,
47-
'hostip' => $Info['HostIp'],
48-
'port' => $Info['HostPort']
49-
),
50-
'players' => array(
51-
'max' => $Info['MaxPlayers'],
52-
'online' => $Info['Players']
53-
),
54-
'version' => array(
55-
'version' => $Info['Version'],
56-
'software' => $Info['Software']
57-
),
58-
'queryinfo' => array(
59-
'agreement' => 'Query',
60-
'processed' => $Timer
61-
)
62-
);
43+
$platform = 'Minecraft: Java Edition';
6344
} else if ($Info['GameName'] == 'MINECRAFTPE') {
64-
$json = array(
65-
'status' => 'Online',
66-
'platform' => 'Minecraft: Pocket Edition',
67-
'gametype' => $Info['GameType'],
68-
'motd' => array(
69-
'motd' => $Info['HostName'],
70-
'clean_motd' => $CleanHostName
71-
),
72-
'host' => array(
73-
'host' => $host,
74-
'hostip' => $Info['HostIp'],
75-
'port' => $Info['HostPort']
76-
),
77-
'players' => array(
78-
'max' => $Info['MaxPlayers'],
79-
'online' => $Info['Players']
80-
),
81-
'version' => array(
82-
'version' => $Info['Version'],
83-
'software' => $Info['Software']
84-
),
85-
'queryinfo' => array(
86-
'agreement' => 'Query',
87-
'processed' => $Timer
88-
)
89-
);
45+
$platform = 'Minecraft: Bedrock Edition';
9046
} else {
91-
$json = array(
92-
'status' => 'Online',
93-
'platform' => $Info['GameName'],
94-
'gametype' => $Info['GameType'],
95-
'motd' => array(
96-
'motd' => $Info['HostName'],
97-
'clean_motd' => $CleanHostName
98-
),
99-
'host' => array(
100-
'host' => $host,
101-
'hostip' => $Info['HostIp'],
102-
'port' => $Info['HostPort']
103-
),
104-
'players' => array(
105-
'max' => $Info['MaxPlayers'],
106-
'online' => $Info['Players']
107-
),
108-
'version' => array(
109-
'version' => $Info['Version'],
110-
'software' => $Info['Software']
111-
),
112-
'queryinfo' => array(
113-
'agreement' => 'Query',
114-
'processed' => $Timer
115-
)
116-
);
47+
$platform = $Info['GameName'];
11748
}
49+
50+
$json = array(
51+
'status' => 'Online',
52+
'platform' => $platform,
53+
'gametype' => $Info['GameType'],
54+
'motd' => array(
55+
'ingame' => $Info['HostName'],
56+
'clean' => $cleanHostName,
57+
'html' => closeTags($hostNameHtml)
58+
),
59+
'host' => array(
60+
'host' => $host,
61+
'hostip' => $Info['HostIp'],
62+
'port' => $Info['HostPort']
63+
),
64+
'players' => array(
65+
'max' => $Info['MaxPlayers'],
66+
'online' => $Info['Players']
67+
),
68+
'version' => array(
69+
'version' => $Info['Version'],
70+
'software' => $Info['Software']
71+
),
72+
'queryinfo' => array(
73+
'agreement' => 'Query',
74+
'processed' => $Timer
75+
)
76+
);
11877
} else if ($InfoPing !== false){
119-
$version = explode(" ",$InfoPing['version']['name'],2);
120-
$CleanHostName = str_replace("§k","",$InfoPing['description']);
121-
$CleanHostName = str_replace("§l","",$CleanHostName);
122-
$CleanHostName = str_replace("§m","",$CleanHostName);
123-
$CleanHostName = str_replace("§n","",$CleanHostName);
124-
$CleanHostName = str_replace("§o","",$CleanHostName);
125-
$CleanHostName = str_replace("§r","",$CleanHostName);
126-
$CleanHostName = str_replace("§1","",$CleanHostName);
127-
$CleanHostName = str_replace("§2","",$CleanHostName);
128-
$CleanHostName = str_replace("§3","",$CleanHostName);
129-
$CleanHostName = str_replace("§4","",$CleanHostName);
130-
$CleanHostName = str_replace("§5","",$CleanHostName);
131-
$CleanHostName = str_replace("§6","",$CleanHostName);
132-
$CleanHostName = str_replace("§7","",$CleanHostName);
133-
$CleanHostName = str_replace("§8","",$CleanHostName);
134-
$CleanHostName = str_replace("§9","",$CleanHostName);
135-
$CleanHostName = str_replace("§a","",$CleanHostName);
136-
$CleanHostName = str_replace("§b","",$CleanHostName);
137-
$CleanHostName = str_replace("§c","",$CleanHostName);
138-
$CleanHostName = str_replace("§d","",$CleanHostName);
139-
$CleanHostName = str_replace("§e","",$CleanHostName);
140-
$CleanHostName = str_replace("§f","",$CleanHostName);
78+
$version = explode(" ", $InfoPing['version']['name'], 2);
79+
$hostNameHtml = str_replace("§k", "", $InfoPing['description']);
80+
$hostNameHtml = str_replace("§l", "", $hostNameHtml);
81+
$hostNameHtml = str_replace("§m", "", $hostNameHtml);
82+
$hostNameHtml = str_replace("§n", "", $hostNameHtml);
83+
$hostNameHtml = str_replace("§o", "", $hostNameHtml);
84+
$hostNameHtml = str_replace("§r", '<font color="#">', $hostNameHtml);
85+
$hostNameHtml = str_replace("§0", '<font color="#000000">', $hostNameHtml);
86+
$hostNameHtml = str_replace("§1", '<font color="#0000AA">', $hostNameHtml);
87+
$hostNameHtml = str_replace("§2", '<font color="#00AA00">', $hostNameHtml);
88+
$hostNameHtml = str_replace("§3", '<font color="#00AAAA">', $hostNameHtml);
89+
$hostNameHtml = str_replace("§4", '<font color="#AA0000">', $hostNameHtml);
90+
$hostNameHtml = str_replace("§5", '<font color="#AA00AA">', $hostNameHtml);
91+
$hostNameHtml = str_replace("§6", '<font color="#FFAA00">', $hostNameHtml);
92+
$hostNameHtml = str_replace("§7", '<font color="#AAAAAA">', $hostNameHtml);
93+
$hostNameHtml = str_replace("§8", '<font color="#555555">', $hostNameHtml);
94+
$hostNameHtml = str_replace("§9", '<font color="#5555FF">', $hostNameHtml);
95+
$hostNameHtml = str_replace("§a", '<font color="#55FF55">', $hostNameHtml);
96+
$hostNameHtml = str_replace("§b", '<font color="#55FFFF">', $hostNameHtml);
97+
$hostNameHtml = str_replace("§c", '<font color="#FF5555">', $hostNameHtml);
98+
$hostNameHtml = str_replace("§d", '<font color="#FF55FF">', $hostNameHtml);
99+
$hostNameHtml = str_replace("§e", '<font color="#FFFF55">', $hostNameHtml);
100+
$hostNameHtml = str_replace("§f", '<font color="#FFFFFF">', $hostNameHtml);
101+
102+
$cleanHostName = str_replace(array("§k", "§l", "§m", "§n", "§o", "§r", "§0", "§1", "§2", "§3", "§4", "§5", "§6", "§7", "§8", "§9", "§a", "§b", "§c", "§d", "§e", "§f"), "", $InfoPing['description']);
103+
141104
$json = array(
142105
'status' => 'Online',
143106
'motd' => array(
144-
'motd' => $InfoPing['description'],
145-
'clean_motd' => $CleanHostName
107+
'ingame' => $InfoPing['description'],
108+
'clean' => $cleanHostName,
109+
'html' => closeTags($hostNameHtml)
146110
),
147111
'host' => array(
148112
'host' => $host,
@@ -168,5 +132,6 @@
168132
'port' => $port
169133
);
170134
}
135+
171136
echo json_encode($json, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
172-
?>
137+
?>

0 commit comments

Comments
 (0)