增加对mod消息与物品左右键的方块放置监听
This commit is contained in:
@ -0,0 +1,43 @@
|
||||
--- ../src-base/minecraft/cpw/mods/fml/common/network/FMLEventChannel.java
|
||||
+++ ../src-work/minecraft/cpw/mods/fml/common/network/FMLEventChannel.java
|
||||
@@ -1,16 +1,20 @@
|
||||
package cpw.mods.fml.common.network;
|
||||
|
||||
-import io.netty.channel.ChannelFutureListener;
|
||||
-import io.netty.channel.ChannelHandlerContext;
|
||||
import java.util.EnumMap;
|
||||
-import net.minecraft.client.network.NetHandlerPlayClient;
|
||||
-import net.minecraft.entity.player.EntityPlayerMP;
|
||||
-import net.minecraft.network.NetHandlerPlayServer;
|
||||
+
|
||||
+import cc.capture.type.CaptureBlock;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.eventhandler.EventBus;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
+import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent;
|
||||
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
+import io.netty.channel.ChannelFutureListener;
|
||||
+import io.netty.channel.ChannelHandlerContext;
|
||||
+import net.minecraft.client.network.NetHandlerPlayClient;
|
||||
+import net.minecraft.entity.player.EntityPlayerMP;
|
||||
+import net.minecraft.network.NetHandlerPlayServer;
|
||||
+import net.minecraft.server.MinecraftServer;
|
||||
|
||||
/**
|
||||
* An event driven network channel, using {@link FMLNetworkEvent.CustomPacketEvent} and {@link FMLNetworkEvent.CustomNetworkEvent}
|
||||
@@ -100,7 +104,14 @@
|
||||
FMLNetworkEvent.CustomPacketEvent<?> event = factory.make(msg);
|
||||
if (event != null)
|
||||
{
|
||||
+ CaptureBlock tCapture=null;
|
||||
+ if(MinecraftServer.cauldronConfig.modPacketPlace.getValue()&&event instanceof ServerCustomPacketEvent){
|
||||
+ EntityPlayerMP tPlayer=((NetHandlerPlayServer)((ServerCustomPacketEvent)event).handler).playerEntity;
|
||||
+ tCapture=tPlayer.worldObj.mCapture.startCapture(tPlayer);
|
||||
+ }
|
||||
this.eventBus.post(event);
|
||||
+
|
||||
+ if(tCapture!=null) tCapture.endCapture();
|
||||
if (event.reply != null)
|
||||
{
|
||||
ctx.channel().attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.REPLY);
|
@ -0,0 +1,46 @@
|
||||
--- ../src-base/minecraft/cpw/mods/fml/common/network/simpleimpl/SimpleChannelHandlerWrapper.java
|
||||
+++ ../src-work/minecraft/cpw/mods/fml/common/network/simpleimpl/SimpleChannelHandlerWrapper.java
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
import org.apache.logging.log4j.Level;
|
||||
|
||||
-import net.minecraft.network.INetHandler;
|
||||
-
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
+import cc.capture.type.CaptureBlock;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.network.FMLOutboundHandler;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
@@ -13,6 +12,10 @@
|
||||
import io.netty.channel.ChannelFutureListener;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
+import net.minecraft.entity.player.EntityPlayerMP;
|
||||
+import net.minecraft.network.INetHandler;
|
||||
+import net.minecraft.network.NetHandlerPlayServer;
|
||||
+import net.minecraft.server.MinecraftServer;
|
||||
|
||||
public class SimpleChannelHandlerWrapper<REQ extends IMessage, REPLY extends IMessage> extends SimpleChannelInboundHandler<REQ> {
|
||||
private final IMessageHandler<? super REQ, ? extends REPLY> messageHandler;
|
||||
@@ -34,9 +37,17 @@
|
||||
{
|
||||
INetHandler iNetHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
|
||||
MessageContext context = new MessageContext(iNetHandler, side);
|
||||
- REPLY result = messageHandler.onMessage(msg, context);
|
||||
- if (result != null)
|
||||
- {
|
||||
+
|
||||
+ CaptureBlock tCapture=null;
|
||||
+ if(MinecraftServer.cauldronConfig.modPacketPlace.getValue()&&iNetHandler instanceof NetHandlerPlayServer){
|
||||
+ EntityPlayerMP tPlayer=((NetHandlerPlayServer)iNetHandler).playerEntity;
|
||||
+ tCapture=tPlayer.worldObj.mCapture.startCapture(tPlayer);
|
||||
+ }
|
||||
+
|
||||
+ REPLY result=messageHandler.onMessage(msg,context);
|
||||
+
|
||||
+ if(tCapture!=null) tCapture.endCapture();
|
||||
+ if(result!=null){
|
||||
ctx.channel().attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.REPLY);
|
||||
ctx.writeAndFlush(result).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);
|
||||
}
|
Reference in New Issue
Block a user