(使う分には分かるのだけど、分かりやすさが難しい) |
|||
1行目: | 1行目: | ||
− | ModLoaderMpで使用できるCustumPacketsの設定方法を記載します。 | + | ModLoaderMpで使用できるCustumPacketsの設定方法を記載します。<br/> |
==カスタムパケットの基本== | ==カスタムパケットの基本== | ||
===送付できるPacketの種類=== | ===送付できるPacketの種類=== | ||
− | 1.int型 | + | 1.int型<br/> |
− | 2.float型 | + | 2.float型<br/> |
− | 3.String型 | + | 3.String型<br/> |
− | Ex:以下のように設定します。 | + | Ex:以下のように設定します。<br/> |
<pre> | <pre> | ||
float[] dataFloat = new float[numberOfFloats]; | float[] dataFloat = new float[numberOfFloats]; | ||
26行目: | 26行目: | ||
===インターフェイスを実装する=== | ===インターフェイスを実装する=== | ||
− | ISpawnableインターフェイスを実装します。 | + | ISpawnableインターフェイスを実装します。<br/> |
Ex: | Ex: | ||
<pre> | <pre> | ||
public class ClassName extends Entity implements ISpawnable { | public class ClassName extends Entity implements ISpawnable { | ||
</pre> | </pre> | ||
− | 上記はClassNameクラスにEntityクラスを継承してISpawnableインターフェイスを実装しています。 | + | 上記はClassNameクラスにEntityクラスを継承してISpawnableインターフェイスを実装しています。<br/> |
− | + | <br/> | |
− | ISpawnableインターフェイスを実装した後、 | + | ISpawnableインターフェイスを実装した後、<br/> |
Server側でgetSpawnPacketメソッドを追加した場合の例 | Server側でgetSpawnPacketメソッドを追加した場合の例 | ||
<pre> | <pre> | ||
50行目: | 50行目: | ||
} | } | ||
</pre> | </pre> | ||
− | packetType = 0:アップデートフラグとして | + | packetType = 0:アップデートフラグとして<br/> |
− | packetType = 1:送信フラグとして | + | packetType = 1:送信フラグとして<br/> |
− | ※言葉が書きづらい・・・。もっとわかりやすく書ける方お願いします。 | + | ※言葉が書きづらい・・・。もっとわかりやすく書ける方お願いします。<br/> |
==Packetの送信方法== | ==Packetの送信方法== | ||
===ModLoaderMp.SendPacket=== | ===ModLoaderMp.SendPacket=== | ||
− | + | 使用方法は基本同じなので、まとめてあります。<br/> | |
− | + | 1.ModLoaderMp.SendPacket<br/> | |
− | + | クライアントからサーバー側へデータを送るために使用するメソッドです。<br/> | |
+ | ModloaderMp.SendPacket(this, packet) <br/> | ||
+ | this:送付データ <br/> | ||
+ | packet:送付時に使用するclass <br/> | ||
+ | <br/> | ||
+ | 2.ModLoaderMp.SendPacketTo<br/> | ||
+ | サーバーからクライアント側へデータを送るために使用するメソッドです。<br/> | ||
+ | ModLoaderMp.SendPacketTo(this, player, packet) <br/> | ||
+ | this:送付データ <br/> | ||
+ | player:送付先のEntity <br/> | ||
+ | packet:送付時に使用するclass <br/> | ||
+ | <br/> | ||
+ | 3.ModLoaderMp.SendPacketAll<br/> | ||
+ | サーバーからクライアント側へデータを送るために使用するメソッドです。<br/> | ||
+ | ModLoderMp.SendPacketAll(this, packet) <br/> | ||
+ | this:送付データ <br/> | ||
+ | packet:送付時に使用するclass <br/> | ||
+ | <br/> | ||
+ | 使用例 | ||
<pre> | <pre> | ||
− | public | + | public void sendInthoge(EntityPlayerMP entityPlayerMp, int inthoge) |
{ | { | ||
− | Packet230ModLoader packet = new | + | if(entityPlayerMp.ridingEntity instanceof Entity) |
− | packet. | + | { |
− | packet.dataInt | + | int[] dataInt = new int[1]; |
+ | dataInt[0] = inthoge; | ||
+ | |||
+ | Packet230ModLoader packet = new Packet230ModLoader(); | ||
+ | packet.packetType = 0; | ||
+ | packet.dataInt = dataInt; | ||
+ | ModLoaderMp.SendPacketTo(this, entityPlayerMp, packet); | ||
+ | } | ||
+ | } | ||
</pre> | </pre> | ||
− | + | 上記では、sendInthogeメソッドが呼び出された場合、<br/> | |
− | < | + | entityPlayerMp.ridingEntityがEntityをクラスを実装していればTrueとして(←ここは特に関係ない)<br/> |
− | + | dataInt[0]にinthogeを格納し、ModLoaderMp.SendPacketToにてデータを対象クライアントに送付してます。<br/> | |
− | + | ||
− | + | やっぱり書きづらい。もっとわかりやすく書ける方お願いします。<br/> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===HandlePacket=== | ===HandlePacket=== | ||
===SendKey=== | ===SendKey=== |
2012年3月16日 (金) 00:15時点における版
ModLoaderMpで使用できるCustumPacketsの設定方法を記載します。
目次
カスタムパケットの基本
送付できるPacketの種類
1.int型
2.float型
3.String型
Ex:以下のように設定します。
float[] dataFloat = new float[numberOfFloats]; dataFloat[0] = xxxx; dataFloat[1] = yyyy; .... int[] dataInt = new int[numberOfInts]; dataInt[0] = zzzz; dataInt[1] = bbbb; .... String[] dataString = new loat[numberOfStrings]; dataString[0] = aaaa; dataString[1] = cccc; ....
インターフェイスを実装する
ISpawnableインターフェイスを実装します。
Ex:
public class ClassName extends Entity implements ISpawnable {
上記はClassNameクラスにEntityクラスを継承してISpawnableインターフェイスを実装しています。
ISpawnableインターフェイスを実装した後、
Server側でgetSpawnPacketメソッドを追加した場合の例
public Packet230ModLoader getSpawnPacket() { Packet230ModLoader packet = new Packet230ModLoader(); packet.packetType = 0; packet.dataInt = new int[1]; packet.dataInt[0] = entityColor; packet.dataFloat = new float[2]; packet.dataFloat[0] = (float)posX; packet.dataFloat[1] = posY; packet.dataString = new String; packet.dataString[0] = dataString; return packet; }
packetType = 0:アップデートフラグとして
packetType = 1:送信フラグとして
※言葉が書きづらい・・・。もっとわかりやすく書ける方お願いします。
Packetの送信方法
ModLoaderMp.SendPacket
使用方法は基本同じなので、まとめてあります。
1.ModLoaderMp.SendPacket
クライアントからサーバー側へデータを送るために使用するメソッドです。
ModloaderMp.SendPacket(this, packet)
this:送付データ
packet:送付時に使用するclass
2.ModLoaderMp.SendPacketTo
サーバーからクライアント側へデータを送るために使用するメソッドです。
ModLoaderMp.SendPacketTo(this, player, packet)
this:送付データ
player:送付先のEntity
packet:送付時に使用するclass
3.ModLoaderMp.SendPacketAll
サーバーからクライアント側へデータを送るために使用するメソッドです。
ModLoderMp.SendPacketAll(this, packet)
this:送付データ
packet:送付時に使用するclass
使用例
public void sendInthoge(EntityPlayerMP entityPlayerMp, int inthoge) { if(entityPlayerMp.ridingEntity instanceof Entity) { int[] dataInt = new int[1]; dataInt[0] = inthoge; Packet230ModLoader packet = new Packet230ModLoader(); packet.packetType = 0; packet.dataInt = dataInt; ModLoaderMp.SendPacketTo(this, entityPlayerMp, packet); } }
上記では、sendInthogeメソッドが呼び出された場合、
entityPlayerMp.ridingEntityがEntityをクラスを実装していればTrueとして(←ここは特に関係ない)
dataInt[0]にinthogeを格納し、ModLoaderMp.SendPacketToにてデータを対象クライアントに送付してます。
やっぱり書きづらい。もっとわかりやすく書ける方お願いします。
HandlePacket
SendKey
コマンドによるPacket送信処理
執筆中...