ホームページ >バックエンド開発 >PHPチュートリアル >PHPを使用したMinecraftの改造 - コードからの建物!
PHPを使用してMinecraftをmod:斬新なアプローチ
この記事では、PHPを使用してMinecraft Modを作成するためのユニークな方法を調査し、Javaへの従来の依存をバイパスします。 非同期PHPライブラリとイベントループを活用するこの手法は、リソース集約型のビジーループの必要性を回避し、効率的なMOD開発を可能にします。
Minecraft ModdingのJavaを学ぶという課題は、この革新的なアプローチによって対処されています。 このチュートリアルでは、PHPでMODを構築する方法を示し、典型的な言語の壁を克服します。
(今後の投稿では、合理化された青写真の作成のための3D JavaScript Minecraftエディターの詳細を説明します。
(このチュートリアルのコードの大部分はGitHubで入手できます。テストは最新のChromeバージョンとPHP 7.0を使用して実施されました。 。)
ステージの設定
PHPとMinecraftサーバー間の通信が重要です。従来のブロッキングの代わりにループ:
非同期PHPライブラリであるAMPHPを使用して、イベントループやHTTPクライアントなどの機能を提供します。最初に、必要なライブラリをインストールします:while
<code class="language-php">while (true) { // listen for player requests // make changes to the game sleep(1); }</code>次に、非ブロッキングイベントループを作成します:
この非ブロッキングアプローチにより、潜在的にブロックするタスクを待っている間、同時操作が可能になります。
<code class="language-bash">composer require amphp/amp composer require amphp/file</code>約束とジェネレーター:強力な組み合わせ AMPHPの約束ベースのインターフェイスは、非同期操作を処理します。 約束は、ファイルシステム操作やHTTP要求の結果など、まだ利用できないデータを表しています。 発電機は、未定義の配列値を介した反復を合理化することにより、これをさらに強化します。
<code class="language-php">require __DIR__ . "/vendor/autoload.php"; Amp\run(function() { Amp\repeat(function() { // listen for player requests // make changes to the game }, 1000); });</code>ジェネレーターを使用した例を次に示します
この関数は、メインスレッドをブロックせずに非同期ファイル操作を効率的に処理します。
サーバーログの監視
modは、プレーヤーコマンドを検出するためにサーバーログにリッスンします。 これにより、コマンドの重複実行が防止されます
(サーバーのログファイルパスに<code class="language-php">use Amp\File\Driver; function getContents(Driver $files, $path, $previous) { $next = yield $files->mtime($path); if ($previous !== $next) { return yield $files->get($path); } return null; }</code>を置き換えることを忘れないでください。)
コードは、変更のログファイルを監視し、新しい行を処理し、それに応じてコマンドを実行します。
ブループリントの生成とブロック配置
<code class="language-php">define("LOG_PATH", "/path/to/logs/latest.log"); $files = Amp\File\filesystem(); // ... (rest of the code remains largely the same)</code>
3D JavaScript Builder(別の投稿で詳細)は、ブロック座標の配列を生成します。 この配列は、Minecraft内の構造を構築するためにPHPスクリプトによって使用されます。
関数はビルドコマンドを処理し、生成された座標に基づいてブロックを配置します。
RCON executeCommand
Minecraft ServerのRCON(リモートコンソール)により、PHPスクリプトとの通信が可能になります。 RCONクライアントライブラリは、サーバーにコマンドを送信するために使用されます。
(注:ライブラリには、テスト目的でMinecraftサーバーが含まれています。
サーバーの<code class="language-php">while (true) { // listen for player requests // make changes to the game sleep(1); }</code>ファイルには、次の構成が必要です
theory/builder
関数はRCONクライアントを使用してコマンドを送信してブロックを配置します。
server.properties
<code class="language-bash">composer require amphp/amp composer require amphp/file</code>将来の強化と結論
executeCommand
/setblock
このアプローチは、高度なMOD機能への扉を開きます。 将来の改善には、設計の提出のためのJSON APIと、より複雑なブロック配置が含まれる場合があります。 付随するJavaScript投稿には、3Dビルダーの詳細が記載されています。 可能性は膨大です!
よくある質問(FAQ)
(このセクションは、貴重な補足情報を提供するため、入力からほとんど変化していません。)PHPでMinecraftの改造を開始するにはどうすればよいですか? ...
php-minecraft-queryとは何ですか?
... Minecraft JavaとBedrock版の違いは何ですか?
php?
にminecraftサーバーを実装できますか?windowsでminecraftをプレイできますか
php-minecraft/minecraft-queryパッケージは何ですか?
PHPを使用してMinecraftに建物を作成するにはどうすればよいですか?
......
PHP Minecraft modsを他の人と共有できますか?
以上がPHPを使用したMinecraftの改造 - コードからの建物!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。