提供: Minecraft Modding Wiki
移動先: 案内検索
(使う分には分かるのだけど、分かりやすさが難しい)
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/>
1.packetTeigi.classに送付Packet内容を記述
+
 クライアントからサーバー側へデータを送るために使用するメソッドです。<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 Packet230ModLoader.getPacketData()
+
public void sendInthoge(EntityPlayerMP entityPlayerMp, int inthoge)
 
{
 
{
Packet230ModLoader packet = new Packet230ModLodaer();
+
  if(entityPlayerMp.ridingEntity instanceof Entity)
packet.dataInt = new int[1];
+
  {
packet.dataInt[0] = this.posX;
+
      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>
2.mod_hogehogeに参照データを記述
+
上記では、sendInthogeメソッドが呼び出された場合、<br/>
<pre>
+
entityPlayerMp.ridingEntityがEntityをクラスを実装していればTrueとして(←ここは特に関係ない)<br/>
public class mod_hogehoge extends BaseModMp
+
dataInt[0]にinthogeを格納し、ModLoaderMp.SendPacketToにてデータを対象クライアントに送付してます。<br/>
{
+
 
public static mod_hogehoge instance;
+
やっぱり書きづらい。もっとわかりやすく書ける方お願いします。<br/>
.....
 
  
public void load
 
{
 
instance = this;
 
.....
 
}
 
</pre>
 
3.Entityhogeでpacketデータを送信
 
<pre>
 
public class Entityhoge extends Entity
 
{
 
packetTeigi hogge
 
</pre>
 
・・・書いてたら頭が沸騰したので、ちょっと停止
 
解説と例を考え中
 
===ModLoaderMp.SendPacketTo===
 
サーバー側で使用できるメソッドです。
 
解説と例を考え中
 
===ModLoaderMp.SendPacketToAll===
 
サーバー側で使用できるメソッドです。
 
解説と例を考え中
 
 
===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送信処理

執筆中...