Add in error logging for outbound messages. Fix bug with indexedcodec NPE
This commit is contained in:
parent
87a45d83fb
commit
9fb9942498
|
@ -1,5 +1,6 @@
|
||||||
package cpw.mods.fml.common.network;
|
package cpw.mods.fml.common.network;
|
||||||
|
|
||||||
|
import io.netty.channel.ChannelFutureListener;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import net.minecraft.client.network.NetHandlerPlayClient;
|
import net.minecraft.client.network.NetHandlerPlayClient;
|
||||||
|
@ -48,7 +49,7 @@ public class FMLEventChannel {
|
||||||
if (event.reply != null)
|
if (event.reply != null)
|
||||||
{
|
{
|
||||||
ctx.channel().attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.REPLY);
|
ctx.channel().attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.REPLY);
|
||||||
ctx.writeAndFlush(event.reply);
|
ctx.writeAndFlush(event.reply).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,33 +63,33 @@ public class FMLEventChannel {
|
||||||
public void sendToAll(FMLProxyPacket pkt)
|
public void sendToAll(FMLProxyPacket pkt)
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL);
|
||||||
channels.get(Side.SERVER).writeAndFlush(pkt);
|
channels.get(Side.SERVER).writeAndFlush(pkt).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendTo(FMLProxyPacket pkt, EntityPlayerMP player)
|
public void sendTo(FMLProxyPacket pkt, EntityPlayerMP player)
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER);
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player);
|
||||||
channels.get(Side.SERVER).writeAndFlush(pkt);
|
channels.get(Side.SERVER).writeAndFlush(pkt).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendToAllAround(FMLProxyPacket pkt, NetworkRegistry.TargetPoint point)
|
public void sendToAllAround(FMLProxyPacket pkt, NetworkRegistry.TargetPoint point)
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT);
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point);
|
||||||
channels.get(Side.SERVER).writeAndFlush(pkt);
|
channels.get(Side.SERVER).writeAndFlush(pkt).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendToDimension(FMLProxyPacket pkt, int dimensionId)
|
public void sendToDimension(FMLProxyPacket pkt, int dimensionId)
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.DIMENSION);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.DIMENSION);
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(dimensionId);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(dimensionId);
|
||||||
channels.get(Side.SERVER).writeAndFlush(pkt);
|
channels.get(Side.SERVER).writeAndFlush(pkt).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendToServer(FMLProxyPacket pkt)
|
public void sendToServer(FMLProxyPacket pkt)
|
||||||
{
|
{
|
||||||
channels.get(Side.CLIENT).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER);
|
channels.get(Side.CLIENT).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER);
|
||||||
channels.get(Side.CLIENT).writeAndFlush(pkt);
|
channels.get(Side.CLIENT).writeAndFlush(pkt).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,10 @@ import io.netty.buffer.Unpooled;
|
||||||
import io.netty.channel.ChannelHandler.Sharable;
|
import io.netty.channel.ChannelHandler.Sharable;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.handler.codec.MessageToMessageCodec;
|
import io.netty.handler.codec.MessageToMessageCodec;
|
||||||
|
import io.netty.util.AttributeKey;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import org.apache.logging.log4j.Level;
|
||||||
|
import cpw.mods.fml.common.FMLLog;
|
||||||
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
|
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
|
||||||
|
|
||||||
@Sharable
|
@Sharable
|
||||||
|
@ -18,7 +21,15 @@ public abstract class FMLIndexedMessageToMessageCodec<A> extends MessageToMessag
|
||||||
/**
|
/**
|
||||||
* Make this accessible to subclasses
|
* Make this accessible to subclasses
|
||||||
*/
|
*/
|
||||||
protected final ThreadLocal<FMLProxyPacket> inboundPacket = new ThreadLocal<FMLProxyPacket>();
|
|
||||||
|
protected static final AttributeKey<ThreadLocal<FMLProxyPacket>> INBOUNDPACKETTRACKER = new AttributeKey<ThreadLocal<FMLProxyPacket>>("fml:inboundpacket");
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handlerAdded(ChannelHandlerContext ctx) throws Exception
|
||||||
|
{
|
||||||
|
super.handlerAdded(ctx);
|
||||||
|
ctx.attr(INBOUNDPACKETTRACKER).set(new ThreadLocal<FMLProxyPacket>());
|
||||||
|
}
|
||||||
|
|
||||||
public FMLIndexedMessageToMessageCodec<A> addDiscriminator(int discriminator, Class<? extends A> type)
|
public FMLIndexedMessageToMessageCodec<A> addDiscriminator(int discriminator, Class<? extends A> type)
|
||||||
{
|
{
|
||||||
|
@ -38,8 +49,11 @@ public abstract class FMLIndexedMessageToMessageCodec<A> extends MessageToMessag
|
||||||
buffer.writeByte(discriminator);
|
buffer.writeByte(discriminator);
|
||||||
encodeInto(ctx, msg, buffer);
|
encodeInto(ctx, msg, buffer);
|
||||||
FMLProxyPacket proxy = new FMLProxyPacket(buffer.copy(), ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get());
|
FMLProxyPacket proxy = new FMLProxyPacket(buffer.copy(), ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get());
|
||||||
FMLProxyPacket old = inboundPacket.get();
|
FMLProxyPacket old = ctx.attr(INBOUNDPACKETTRACKER).get().get();
|
||||||
proxy.setDispatcher(old.getDispatcher());
|
if (old != null)
|
||||||
|
{
|
||||||
|
proxy.setDispatcher(old.getDispatcher());
|
||||||
|
}
|
||||||
out.add(proxy);
|
out.add(proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +71,7 @@ public abstract class FMLIndexedMessageToMessageCodec<A> extends MessageToMessag
|
||||||
throw new NullPointerException("Undefined message for discriminator " + discriminator + " in channel " + msg.channel());
|
throw new NullPointerException("Undefined message for discriminator " + discriminator + " in channel " + msg.channel());
|
||||||
}
|
}
|
||||||
A newMsg = clazz.newInstance();
|
A newMsg = clazz.newInstance();
|
||||||
inboundPacket.set(msg);
|
ctx.attr(INBOUNDPACKETTRACKER).get().set(msg);
|
||||||
decodeInto(ctx, payload.slice(), newMsg);
|
decodeInto(ctx, payload.slice(), newMsg);
|
||||||
out.add(newMsg);
|
out.add(newMsg);
|
||||||
}
|
}
|
||||||
|
@ -70,4 +84,11 @@ public abstract class FMLIndexedMessageToMessageCodec<A> extends MessageToMessag
|
||||||
protected void testMessageValidity(FMLProxyPacket msg)
|
protected void testMessageValidity(FMLProxyPacket msg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception
|
||||||
|
{
|
||||||
|
FMLLog.log(Level.ERROR, cause, "FMLIndexedMessageCodec exception caught");
|
||||||
|
super.exceptionCaught(ctx, cause);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cpw.mods.fml.common.network.handshake;
|
package cpw.mods.fml.common.network.handshake;
|
||||||
|
|
||||||
|
import io.netty.channel.ChannelFutureListener;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import cpw.mods.fml.common.FMLLog;
|
import cpw.mods.fml.common.FMLLog;
|
||||||
import cpw.mods.fml.common.Loader;
|
import cpw.mods.fml.common.Loader;
|
||||||
|
@ -48,8 +49,8 @@ enum FMLHandshakeClientState implements IHandshakeState<FMLHandshakeClientState>
|
||||||
}
|
}
|
||||||
|
|
||||||
FMLLog.info("Server protocol version %x", ((FMLHandshakeMessage.ServerHello)msg).protocolVersion());
|
FMLLog.info("Server protocol version %x", ((FMLHandshakeMessage.ServerHello)msg).protocolVersion());
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.ClientHello());
|
ctx.writeAndFlush(new FMLHandshakeMessage.ClientHello()).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.ModList(Loader.instance().getActiveModList()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.ModList(Loader.instance().getActiveModList())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
return WAITINGSERVERDATA;
|
return WAITINGSERVERDATA;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -66,7 +67,7 @@ enum FMLHandshakeClientState implements IHandshakeState<FMLHandshakeClientState>
|
||||||
dispatcher.rejectHandshake(result);
|
dispatcher.rejectHandshake(result);
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
if (!ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
|
if (!ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
|
||||||
{
|
{
|
||||||
return WAITINGSERVERCOMPLETE;
|
return WAITINGSERVERCOMPLETE;
|
||||||
|
@ -89,7 +90,7 @@ enum FMLHandshakeClientState implements IHandshakeState<FMLHandshakeClientState>
|
||||||
dispatcher.rejectHandshake("Fatally missing blocks and items");
|
dispatcher.rejectHandshake("Fatally missing blocks and items");
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
return PENDINGCOMPLETE;
|
return PENDINGCOMPLETE;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -98,7 +99,7 @@ enum FMLHandshakeClientState implements IHandshakeState<FMLHandshakeClientState>
|
||||||
@Override
|
@Override
|
||||||
public FMLHandshakeClientState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
|
public FMLHandshakeClientState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
|
||||||
{
|
{
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
return COMPLETE;
|
return COMPLETE;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -111,7 +112,7 @@ enum FMLHandshakeClientState implements IHandshakeState<FMLHandshakeClientState>
|
||||||
dispatcher.completeClientHandshake();
|
dispatcher.completeClientHandshake();
|
||||||
FMLMessage.CompleteHandshake complete = new FMLMessage.CompleteHandshake(Side.CLIENT);
|
FMLMessage.CompleteHandshake complete = new FMLMessage.CompleteHandshake(Side.CLIENT);
|
||||||
ctx.fireChannelRead(complete);
|
ctx.fireChannelRead(complete);
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
return DONE;
|
return DONE;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cpw.mods.fml.common.network.handshake;
|
package cpw.mods.fml.common.network.handshake;
|
||||||
|
|
||||||
|
import io.netty.channel.ChannelFutureListener;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import cpw.mods.fml.common.FMLLog;
|
import cpw.mods.fml.common.FMLLog;
|
||||||
import cpw.mods.fml.common.Loader;
|
import cpw.mods.fml.common.Loader;
|
||||||
|
@ -18,8 +19,8 @@ enum FMLHandshakeServerState implements IHandshakeState<FMLHandshakeServerState>
|
||||||
{
|
{
|
||||||
NetworkDispatcher dispatcher = ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER).get();
|
NetworkDispatcher dispatcher = ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER).get();
|
||||||
dispatcher.serverInitiateHandshake();
|
dispatcher.serverInitiateHandshake();
|
||||||
ctx.writeAndFlush(FMLHandshakeMessage.makeCustomChannelRegistration(NetworkRegistry.INSTANCE.channelNamesFor(Side.SERVER)));
|
ctx.writeAndFlush(FMLHandshakeMessage.makeCustomChannelRegistration(NetworkRegistry.INSTANCE.channelNamesFor(Side.SERVER))).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.ServerHello());
|
ctx.writeAndFlush(new FMLHandshakeMessage.ServerHello()).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
return HELLO;
|
return HELLO;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -55,9 +56,9 @@ enum FMLHandshakeServerState implements IHandshakeState<FMLHandshakeServerState>
|
||||||
{
|
{
|
||||||
if (!ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
|
if (!ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
|
||||||
{
|
{
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.ModIdData(GameData.buildItemDataList()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.ModIdData(GameData.buildItemDataList())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
NetworkRegistry.INSTANCE.fireNetworkHandshake(ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER).get(), Side.SERVER);
|
NetworkRegistry.INSTANCE.fireNetworkHandshake(ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER).get(), Side.SERVER);
|
||||||
return COMPLETE;
|
return COMPLETE;
|
||||||
}
|
}
|
||||||
|
@ -68,7 +69,7 @@ enum FMLHandshakeServerState implements IHandshakeState<FMLHandshakeServerState>
|
||||||
public FMLHandshakeServerState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
|
public FMLHandshakeServerState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
|
||||||
{
|
{
|
||||||
// Poke the client
|
// Poke the client
|
||||||
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal()));
|
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck(ordinal())).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
FMLMessage.CompleteHandshake complete = new FMLMessage.CompleteHandshake(Side.SERVER);
|
FMLMessage.CompleteHandshake complete = new FMLMessage.CompleteHandshake(Side.SERVER);
|
||||||
ctx.fireChannelRead(complete);
|
ctx.fireChannelRead(complete);
|
||||||
return DONE;
|
return DONE;
|
||||||
|
|
|
@ -6,6 +6,7 @@ import com.google.common.base.Throwables;
|
||||||
import cpw.mods.fml.common.FMLLog;
|
import cpw.mods.fml.common.FMLLog;
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import io.netty.channel.ChannelFutureListener;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.SimpleChannelInboundHandler;
|
import io.netty.channel.SimpleChannelInboundHandler;
|
||||||
|
|
||||||
|
@ -31,7 +32,7 @@ public class SimpleChannelHandlerWrapper<REQ extends IMessage, REPLY extends IMe
|
||||||
REPLY result = messageHandler.onMessage(msg, context);
|
REPLY result = messageHandler.onMessage(msg, context);
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
ctx.writeAndFlush(result);
|
ctx.writeAndFlush(result).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cpw.mods.fml.common.network.simpleimpl;
|
package cpw.mods.fml.common.network.simpleimpl;
|
||||||
|
|
||||||
|
import io.netty.channel.ChannelFutureListener;
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.network.INetHandler;
|
import net.minecraft.network.INetHandler;
|
||||||
|
@ -105,7 +106,7 @@ public class SimpleNetworkWrapper {
|
||||||
public void sendToAll(IMessage message)
|
public void sendToAll(IMessage message)
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL);
|
||||||
channels.get(Side.SERVER).writeAndFlush(message);
|
channels.get(Side.SERVER).writeAndFlush(message).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -119,7 +120,7 @@ public class SimpleNetworkWrapper {
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER);
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player);
|
||||||
channels.get(Side.SERVER).writeAndFlush(message);
|
channels.get(Side.SERVER).writeAndFlush(message).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -133,7 +134,7 @@ public class SimpleNetworkWrapper {
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT);
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point);
|
||||||
channels.get(Side.SERVER).writeAndFlush(message);
|
channels.get(Side.SERVER).writeAndFlush(message).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -147,7 +148,7 @@ public class SimpleNetworkWrapper {
|
||||||
{
|
{
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.DIMENSION);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.DIMENSION);
|
||||||
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(dimensionId);
|
channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(dimensionId);
|
||||||
channels.get(Side.SERVER).writeAndFlush(message);
|
channels.get(Side.SERVER).writeAndFlush(message).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -159,6 +160,6 @@ public class SimpleNetworkWrapper {
|
||||||
public void sendToServer(IMessage message)
|
public void sendToServer(IMessage message)
|
||||||
{
|
{
|
||||||
channels.get(Side.CLIENT).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER);
|
channels.get(Side.CLIENT).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER);
|
||||||
channels.get(Side.CLIENT).writeAndFlush(message);
|
channels.get(Side.CLIENT).writeAndFlush(message).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue