提供: Minecraft Modding Wiki
警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 |
編集中の文章 |
25行目: |
25行目: |
| ですので、サーバ側ワールドへの変更を、直接modからやってしまうとマルチスレッドでの不具合が発生します。<br /> | | ですので、サーバ側ワールドへの変更を、直接modからやってしまうとマルチスレッドでの不具合が発生します。<br /> |
| ではどうするのか、以下次章。 | | ではどうするのか、以下次章。 |
− |
| |
− | ==サーバ側スレッド、もしくはサーバプロセスで動くために==
| |
− |
| |
− | mod はクライアントスレッドで動いています。サーバスレッド、もしくはサーバプロセスで動くためには何かしらきっかけ、イベント、メッセージが必要です。<br />
| |
− | 以前、パケットクラスを継承してそれを投げれば、と書いたのですがそれはシングルプレイのみで有効な方法でした。<br />
| |
− | パケットクラスは厳重に管理されており、本体を直接改造する以外で新たなパケットを正当に登録することは至難の業です。<br />
| |
− | SMP も視野に入れる、本来の正当な形のパケットメッセージを投げるには、Packet250CustomPayload クラスを使います。<br />
| |
− | Packet250CustomPayload はビルトインのパケットクラスで、クライアント側からもサーバ側からも投げることができます。<br />
| |
− | ModLoader はこれを扱う方法を用意しています。それが ModLoader.registerPacketChannel メソッドです。<br />
| |
− | mod のインスタンスをチャネル名(15文字以下)とともに登録することで、そのチャネル名を持つ Packet250CustomPayload クラスのインスタンスが届いた時に<br />
| |
− | mod インスタンスの clientCustomPayload, serverCustomPayload メソッドを呼んでくれます。<br />
| |
− | サーバ側からクライアントへ投げた場合は前者が、クライアントから接続先サーバへ投げた場合は後者のメソッドが呼ばれます。<br />
| |
− | Packet250CustomPayload はチャネル名の他に 32kb までのバイト配列をもたせられますので、必要な情報をここに乗せて投げれば目的を達成できます。<br />
| |
− |
| |
− |
| |
| | | |
| ==シングルプレイ用modを作るときは== | | ==シングルプレイ用modを作るときは== |
− |
| |
− | この章は無視してください!Packet250CustomPayload クラスを使いましょう!<br />
| |
| | | |
| 前章でも記述したとおり、ModLoaderで動作するmodはクライアント側ワールド担当のスレッドで動きます。<br /> | | 前章でも記述したとおり、ModLoaderで動作するmodはクライアント側ワールド担当のスレッドで動きます。<br /> |