This script queries the specified minecraft server for version, number of players, and the motd.
Install my JSON parser
In mIRC create a new remote's script file(alt+r -> file -> new)
Copy the code below into the new script file
Click 'Ok'
!mcQuery <server> [port]
/mcquery <server> <port>
on $*:TEXT:/^!mcquery\b:#:{
if ($0 !isnum 2-3) {
msg # $chr(3) $+ 04[mcQuery] $+ $chr(15) Invalid number of parameters
}
elseif (!$regex($2, /^(?:[a-z\d_\-]+\.)+[a-z\d]+$/)) {
msg # $chr(3) $+ 04[mcQuery] $+ $chr(15) Invalid parameters specified: Bad host address
}
elseif ($0 == 3) && (!$regex($3, /^\d+$/) || $3 !isnum 1-65535) {
msg # $chr(3) $+ 04[mcQuery] $+ $chr(15) Invalid parameters specified: Bad Port
}
else {
mcQuery $2 $iif($3, $3, 25565) #
}
}
on *:SOCKOPEN:mcQuery-*:{
tokenize 32 $sock($sockname).mark
if ($sockerr) {
$3- Unable to connect to $1 $+ : $+ $2
}
else {
var %host = $1, %port = $2
badd &data 0 47 $varInt($len($1))
badd -t &data $1
badd &data $base($left($base(%port, 10, 2, 16), 8), 2, 10) $base($right($base(%port, 10, 2, 16), 8), 2, 10) 1
bset &data2 1 $varInt($bvar(&data, 0))
bcopy &data2 $calc($bvar(&data2, 0) +1) &data 1 -1
badd &data2 1 0
sockwrite $sockname &data2
}
}
on *:SOCKREAD:mcQuery-*:{
tokenize 32 $sock($sockname).mark
var %cmd = $3-
if ($sockerr) {
%cmd Unable to read data from $1 $+ : $+ $2
mcQuery-Cleanup $sockname
}
else {
noop $hget(mcQuery, $sockname, &read)
sockread &tmp
bcopy &read $calc($bvar(&read, 0) + 1) &tmp 1 $bvar(&tmp, 0)
if ($bvar(&read, $bvar(&read, 0), 1).text === $chr(125)) {
var %x = $bfind(&read, 1, 123)
bcopy -c &read 1 &read %x -1
jsonopen -bd $sockname &read
var %moto = $replace($json($sockname, description),$cr, $chr(32), $lf, $chr(32))
%moto = $regsubex(%moto,/§([\da-fklmnor])/gi, $motoRep(\t))
$3- $chr(3) $+ 03[Server] $+ $chr(15) $1 $+ : $+ $2 - $chr(3) $+ 03[Version] $+ $chr(15) $json($sockname, version, name) - $chr(3) $+ 03[Players] $+ $chr(15) $json($sockname, players, online) $+ / $+ $json($sockname, players, max) - $chr(3) $+ 03[MOTD] $+ $chr(15) %moto
mcQuery-Cleanup $sockname
}
else {
hadd -mb mcQuery $sockname &read
}
}
}
alias motoRep {
if ($1 == 0) { return $chr(3) $+ 01 }
elseif ($1 == 1) { return $chr(3) $+ 02 }
elseif ($1 == 2) { return $chr(3) $+ 03 }
elseif ($1 == 3) { return $chr(3) $+ 10 }
elseif ($1 == 4) { return $chr(3) $+ 05 }
elseif ($1 == 5) { return $chr(3) $+ 06 }
elseif ($1 == 6) { return $chr(3) $+ 07 }
elseif ($1 == 7) { return $chr(3) $+ 15 }
elseif ($1 == 8) { return $chr(3) $+ 14 }
elseif ($1 == 9) { return $chr(3) $+ 12 }
elseif ($1 == a) { return $chr(3) $+ 09 }
elseif ($1 == b) { return $chr(3) $+ 11 }
elseif ($1 == c) { return $chr(3) $+ 04 }
elseif ($1 == d) { return $chr(3) $+ 13 }
elseif ($1 == e) { return $chr(3) $+ 08 }
elseif ($1 == f) { return $chr(3) $+ 00 }
elseif ($1 == l) { return $chr(2) }
elseif ($1 == n) { return $chr(31) }
elseif ($1 == o) { return $chr(29) }
elseif ($1 == r) { return $chr(15) }
}
on *:SOCKWRITE:mcQuery-*:{
if ($sockerr) {
tokenize 32 $sock($sockname).mark
mcQuery-CleanUp $sockname
$3- Unable to request data from $1 $+ : $+ $2
}
}
on *:SOCKCLOSE:mcQuery-*:{
tokenize 32 $sock($sockname).mark
noop $hget(mcQuery, $sockname, &read)
if ($sockerr) {
$3- The connection to $1 $+ : $+ $2 closed unexpectedly
}
elseif (!$bvar(&read, 0)) {
$3- $1 $+ : $+ $2 did not respond to the status request
}
else {
var %x = $bfind(&read, 1, 123)
bcopy -c &read 1 &read %x -1
echo -s $bvar(&read,1-).text
}
mcQuery-CleanUp $sockname
}
alias mcQuery {
if ($regex(Input, $1-,/^(\S+) (\d+)(?: (\S+))?$/)) {
var %id = 1
while ($sock(mcQuery- $+ %id) || $var($+(%, mcQuery-, %id),0)) {
inc %id
}
var %dest = $regml(input, 1) $regml(input, 2)
sockopen mcQuery- $+ %id %dest
sockmark mcQuery- $+ %id %dest scid $cid $iif($0 == 2, echo -a, msg $3)
}
else {
echo -a :: Invalid Input
}
}
alias -l mcQuery-Cleanup {
if ($hget(mcQuery, $1)) {
hdel mcQuery $1
if ($hget(mcQuery,0)) {
hfree mcQuery
}
}
if ($sock($sockname)) {
sockclose $sockname
}
}
alias -l badd {
var %cmd = bset $1
if ($1 == -t) {
%cmd = bset -t $2
tokenize 32 $2-
}
%cmd $calc($bvar($1, 0) +1) $2-
}
alias -l VarInt {
if ($prop != toDec) {
var %input = $base($1, 10, 2), %newInt, %intPrt, %x
while ($len(%input)) {
%intPrt = $right(%input, 7)
%newInt = %newInt %intPrt
%input = $left(%input, -7)
}
tokenize 32 %newInt
%newInt = $null
%x = 1
while (%x <= $0) {
%intPrt = $base($iif(%x !== $0, 1, 0) $+ $base($(,$ $+ %x), 2, 2, 7), 2, 10)
%newInt = %newInt %intPrt
inc %x
}
return %newInt
}
}