blob: 798ccffeda2e58f6d01e462459b17db5fee74cb9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package com.detrav.net;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import cpw.mods.fml.common.network.FMLEmbeddedChannel;
import cpw.mods.fml.common.network.FMLOutboundHandler;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
import cpw.mods.fml.relauncher.Side;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.MessageToMessageCodec;
import net.minecraft.entity.player.EntityPlayerMP;
import java.util.EnumMap;
import java.util.List;
/**
* Created by wital_000 on 20.03.2016.
*/
@ChannelHandler.Sharable
public class DetravNetwork extends MessageToMessageCodec<FMLProxyPacket, DetravPacket> {
static public DetravNetwork INSTANCE;
private final EnumMap<Side, FMLEmbeddedChannel> mChannel;
private DetravPacket[] mSubChannels;
public DetravNetwork()
{
INSTANCE = this;
this.mChannel = NetworkRegistry.INSTANCE.newChannel("DetravScanner", new ChannelHandler[]{this, new HandlerShared()});
this.mSubChannels = new DetravPacket[]
{
new DetravProPickPacket00(),
};
}
@Override
protected void encode(ChannelHandlerContext ctx, DetravPacket msg, List<Object> out) throws Exception {
out.add(new FMLProxyPacket(Unpooled.buffer().writeByte(msg.getPacketID()).writeBytes(msg.encode()).copy(),(String) ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get()));
}
@Override
protected void decode(ChannelHandlerContext ctx, FMLProxyPacket msg, List<Object> out) throws Exception {
ByteArrayDataInput aData = ByteStreams.newDataInput(msg.payload().array());
out.add(this.mSubChannels[aData.readByte()].decode(aData));
}
public void sendToPlayer(DetravPacket aPacket, EntityPlayerMP aPlayer) {
((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER);
((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(aPlayer);
((FMLEmbeddedChannel) this.mChannel.get(Side.SERVER)).writeAndFlush(aPacket);
}
public void sendToServer(DetravPacket aPacket) {
((FMLEmbeddedChannel) this.mChannel.get(Side.CLIENT)).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER);
((FMLEmbeddedChannel) this.mChannel.get(Side.CLIENT)).writeAndFlush(aPacket);
}
@ChannelHandler.Sharable
static final class HandlerShared
extends SimpleChannelInboundHandler<DetravPacket> {
protected void channelRead0(ChannelHandlerContext ctx, DetravPacket aPacket)
throws Exception {
//EntityPlayer aPlayer = GT_Values.GT.getThePlayer();
aPacket.process();
}
}
}
|