クライアントが古い時のkickメッセージにバージョン更新を促すようする
どうも。takesi-kaityoです!
こちらもsrcが必要になってくるので、まだ持っていない方は
https://github.com/H4PM/Elywing
からダウンロードしてください。
ではまずsrc➔pocketmineの順にフォルダを開いていくと、中に
Player.phpが入っていると思います。
今回はその中身を書き換えます。
Player.phpを開くと2280行目あたりに
if($packet->protocol !== ProtocolInfo::CURRENT_PROTOCOL){
if($packet->protocol < ProtocolInfo::CURRENT_PROTOCOL){
$message = "disconnectionScreen.outdatedClient";
$pk = new PlayStatusPacket();
$pk->status = PlayStatusPacket::LOGIN_FAILED_CLIENT;
$this->directDataPacket($pk);
}else{
$message = "disconnectionScreen.outdatedServer";
$pk = new PlayStatusPacket();
$pk->status = PlayStatusPacket::LOGIN_FAILED_SERVER;
$this->directDataPacket($pk);
}
$this->close("", $message, false);
break;
}
が書かれていると思います
(この記事を書いた時点では2280行目あたりにありますが、更新されて位置が変わっている可能性があるので2280行目あたりに見当たらない場合は文字検索をかけてください)
if($packet->protocol < ProtocolInfo::CURRENT_PROTOCOL)は
クライアントのProtocolがサーバーのProtocolより古いのであれば..(if文)を
意味していて、
}else{
でその逆のクライアントのProtocolがサーバーのProtocolより新しいのであば..
if($packet->protocol > ProtocolInfo::CURRENT_PROTOCOL)を意味しています。
では編集していきましょう!
if($packet->protocol !== ProtocolInfo::CURRENT_PROTOCOL){
if($packet->protocol < ProtocolInfo::CURRENT_PROTOCOL){
//$message = "disconnectionScreen.outdatedClient";
$message = "MinecraftPEのバージョンを" . \pocketmine\MINECRAFT_VERSION . "にしてください。";
$pk = new PlayStatusPacket();
$pk->status = PlayStatusPacket::LOGIN_FAILED_CLIENT;
$this->directDataPacket($pk);
}else{
//$message = "disconnectionScreen.outdatedServer";
$message = "MinecraftPEのバージョンを" . \pocketmine\MINECRAFT_VERSION . "にしてください。";
$pk = new PlayStatusPacket();
$pk->status = PlayStatusPacket::LOGIN_FAILED_SERVER;
$this->directDataPacket($pk);
}
$this->close("", $message, false);
break;
}
いちおう、復元したくなった時のために、前のものはコメントアウト(//)しました。
\pocketmine\MINECRAFT_VERSIONはサーバーのバージョンを意味していて、
src➔pocketmine➔PocketMine.phpの75行目あたりに
const VERSION = "1.0";
const API_VERSION = "3.0.0-ALPHA1";
const CODENAME = "Birpen";
const MINECRAFT_VERSION = "v1.0.3 alpha";
const MINECRAFT_VERSION_NETWORK = "1.0.3";
const GENISYS_API_VERSION = '1.9.3';
とあると思います。ここの、MINECRAFT_VERSIONを取得します。
こうすると、古いProtocolのプレイヤーが入ったときに
23:40:04|情報 > [/xxx.xxx.xxx.xxx:19132] は 古いクライアントです!により、退室しました。
が
23:40:04|情報 > [/xxx.xxx.xxx.xxx:19132] は MinecraftPEのバージョンをv1.0.3 alphaにしてください。 により、退室しました。
になります。
以上クライアントが古い時のkickメッセージにバージョン更新を促すようする方法の
紹介でした!