提供: Minecraft Modding Wiki
移動先: 案内検索
(SyntaxHighlight使用で編集)
8行目: 8行目:
  
 
Ex:以下のように設定します。<br/>
 
Ex:以下のように設定します。<br/>
<pre>
+
<source lang="java">
 
float[] dataFloat = new float[numberOfFloats];
 
float[] dataFloat = new float[numberOfFloats];
 
dataFloat[0] = xxxx;
 
dataFloat[0] = xxxx;
23行目: 23行目:
 
dataString[1] = cccc;
 
dataString[1] = cccc;
 
....
 
....
</pre>
+
</source>
  
 
===インターフェイスを実装する===
 
===インターフェイスを実装する===
 
ISpawnableインターフェイスを実装します。<br/>
 
ISpawnableインターフェイスを実装します。<br/>
 
Ex:
 
Ex:
<pre>
+
<source lang="java">
 
public class ClassName extends Entity implements ISpawnable {
 
public class ClassName extends Entity implements ISpawnable {
</pre>
+
</source>
 
上記はClassNameクラスにEntityクラスを継承してISpawnableインターフェイスを実装しています。<br/>
 
上記はClassNameクラスにEntityクラスを継承してISpawnableインターフェイスを実装しています。<br/>
 
<br/>
 
<br/>
 
ISpawnableインターフェイスを実装した後、<br/>
 
ISpawnableインターフェイスを実装した後、<br/>
 
Server側でgetSpawnPacketメソッドを追加した場合の例
 
Server側でgetSpawnPacketメソッドを追加した場合の例
<pre>
+
<source lang="java">
 
public Packet230ModLoader getSpawnPacket()
 
public Packet230ModLoader getSpawnPacket()
 
{
 
{
49行目: 49行目:
 
     return packet;
 
     return packet;
 
}
 
}
</pre>
+
</source>
 
packetType = 0:アップデートフラグとして<br/>
 
packetType = 0:アップデートフラグとして<br/>
 
packetType = 1:送信フラグとして<br/>
 
packetType = 1:送信フラグとして<br/>
77行目: 77行目:
 
<br/>
 
<br/>
 
使用例
 
使用例
<pre>
+
<source lang="java">
 
public void sendInthoge(EntityPlayerMP entityPlayerMp, int inthoge)
 
public void sendInthoge(EntityPlayerMP entityPlayerMp, int inthoge)
 
{
 
{
91行目: 91行目:
 
   }
 
   }
 
}
 
}
</pre>
+
</source>
 
上記では、sendInthogeメソッドが呼び出された場合、<br/>
 
上記では、sendInthogeメソッドが呼び出された場合、<br/>
 
entityPlayerMp.ridingEntityがEntityをクラスを実装していればTrueとして(←ここは特に関係ない)<br/>
 
entityPlayerMp.ridingEntityがEntityをクラスを実装していればTrueとして(←ここは特に関係ない)<br/>

2012年3月16日 (金) 00:24時点における版

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送信処理

執筆中...