提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
1行目: 1行目:
 
{{前提MOD|reqmod="Minecraft Forge Universal 10.12.1.1090~"}}
 
{{前提MOD|reqmod="Minecraft Forge Universal 10.12.1.1090~"}}
 +
{{過去リンク|version=Minecraft Forge Universal 10.12.1.1089|url=http://minecraftjp.info/modding/index.php?title=1.7%E3%81%AE%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6&oldid=2070}}
 +
 
==パケットについて==
 
==パケットについて==
 
<p>1.7.2でパケット関連のシステムが大幅に変更され、nettyと呼ばれるオープンプロジェクトのシステムを利用したHandshake方式になりました。<br>
 
<p>1.7.2でパケット関連のシステムが大幅に変更され、nettyと呼ばれるオープンプロジェクトのシステムを利用したHandshake方式になりました。<br>
18行目: 20行目:
  
 
     //このMOD用のSimpleNetworkWrapperを生成。チャンネルの文字列は固有であれば何でも良い。MODIDの利用を推奨。
 
     //このMOD用のSimpleNetworkWrapperを生成。チャンネルの文字列は固有であれば何でも良い。MODIDの利用を推奨。
    //チャンネル名は20文字以内の文字数制限があるので注意。
 
 
     public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel("SamplePacketMod");
 
     public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel("SamplePacketMod");
  
24行目: 25行目:
 
     public static void init() {
 
     public static void init() {
  
         /*IMesssageHandlerクラスとMessageクラスの登録。
+
         /*IMesssageHandlerクラスとMessageクラスの登録。今回同じクラスにしているが、別々でもよい。
 
         *第三引数:MessageクラスのMOD内での登録ID。256個登録できる
 
         *第三引数:MessageクラスのMOD内での登録ID。256個登録できる
 
         *第四引数:送り先指定。クライアントかサーバーか、Side.CLIENT Side.SERVER*/
 
         *第四引数:送り先指定。クライアントかサーバーか、Side.CLIENT Side.SERVER*/
         INSTANCE.registerMessage(MessageSampleHandler.class, MessageSample.class, 0, Side.SERVER);
+
         INSTANCE.registerMessage(MessageSample.class, MessageSample.class, 0, Side.SERVER);
 
     }
 
     }
 
}</source>
 
}</source>
35行目: 36行目:
 
package mods.samplepacketmod;
 
package mods.samplepacketmod;
  
 +
import cpw.mods.fml.client.FMLClientHandler;
 +
import cpw.mods.fml.common.FMLCommonHandler;
 
import cpw.mods.fml.common.network.simpleimpl.IMessage;
 
import cpw.mods.fml.common.network.simpleimpl.IMessage;
 +
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
 +
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
 
import io.netty.buffer.ByteBuf;
 
import io.netty.buffer.ByteBuf;
  
public class MessageSample implements IMessage {
+
public class MessageSample implements IMessage, IMessageHandler<MessageSample, IMessage> {
  
     public byte data;
+
     private byte data;
  
 
     public MessageSample(){}
 
     public MessageSample(){}
57行目: 62行目:
 
         buf.writeByte(this.data);
 
         buf.writeByte(this.data);
 
     }
 
     }
}
 
</source>
 
 
 
===MessageSampleHandler===
 
<source lang = "java">
 
package mods.samplepacketmod;
 
 
import cpw.mods.fml.common.network.simpleimpl.IMessage;
 
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
 
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
 
import io.netty.buffer.ByteBuf;
 
 
public class MessageSampleHandler implements IMessageHandler<MessageSample, IMessage> {
 
  
 
     @Override//IMessageHandlerのメソッド
 
     @Override//IMessageHandlerのメソッド
     public IMessage onMessage(MessageSample message, MessageContext ctx) {
+
     public IMessage onMessage(MessageKeyPressed message, MessageContext ctx) {
         //クライアントへ送った際に、EntityPlayerインスタンスはこのように取れる。
+
         //クライアントへ送った際に、Worldインスタンスはこのように取れる。
         //EntityPlayer player = SamplePacketMod.proxy.getEntityPlayerInstance();
+
         //FMLClientHandler.instance().getClient().theWorld
 
         //サーバーへ送った際に、EntityPlayerインスタンス(EntityPlayerMPインスタンス)はこのように取れる。
 
         //サーバーへ送った際に、EntityPlayerインスタンス(EntityPlayerMPインスタンス)はこのように取れる。
 
         //EntityPlayer entityPlayer = ctx.getServerHandler().playerEntity;
 
         //EntityPlayer entityPlayer = ctx.getServerHandler().playerEntity;
83行目: 74行目:
 
}
 
}
 
</source>
 
</source>
 
===CommonProxy(クライアントにMessageを飛ばした際にEntityPlayerを必要とする場合)===
 
<source lang = "java">
 
package mods.samplepacketmod;
 
 
import net.minecraft.entity.player.EntityPlayer;
 
public class CommonProxy {
 
    public EntityPlayer getEntityPlayerInstance() {return null;}
 
}
 
</source>
 
 
===ClientProxy(クライアントにMessageを飛ばした際にEntityPlayerを必要とする場合)===
 
<source lang = "java">
 
package mods.samplepacketmod;
 
 
import net.minecraft.client.Minecraft;
 
import net.minecraft.entity.player.EntityPlayer;
 
 
public class ClientProxy extends CommonProxy {
 
    @Override
 
    public EntityPlayer getEntityPlayerInstance() {
 
        return Minecraft.getMinecraft().thePlayer;
 
    }
 
}
 
</source>
 
 
 
===@Modクラス内の記述===
 
===@Modクラス内の記述===
 
<source lang = "java">
 
<source lang = "java">
120行目: 85行目:
 
@Mod.Instance("SamplePacketMod")
 
@Mod.Instance("SamplePacketMod")
 
public static SamplePacketMod instance;
 
public static SamplePacketMod instance;
    @SidedProxy(clientSide = "mods.samplepacketmod.ClientProxy", serverSide = "mods.samplepacketmod.CommonProxy")
 
    public static CommonProxy proxy;
 
 
@Mod.EventHandler
 
@Mod.EventHandler
 
public void preInit(FMLPreInitializationEvent event)
 
public void preInit(FMLPreInitializationEvent event)
129行目: 92行目:
 
}
 
}
 
</source>
 
</source>
 
 
===パケットを送る際の記述===
 
===パケットを送る際の記述===
 
<source lang = "java">
 
<source lang = "java">

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: