Close the channel better

This commit is contained in:
fullwall 2013-12-01 17:36:16 +08:00
parent 38cec9d3f3
commit 15b1bd0683
2 changed files with 7 additions and 16 deletions

View File

@ -2,12 +2,17 @@ package net.citizensnpcs.npc.network;
import java.io.IOException; import java.io.IOException;
import net.citizensnpcs.util.NMS;
import net.minecraft.server.v1_7_R1.NetworkManager; import net.minecraft.server.v1_7_R1.NetworkManager;
import net.minecraft.util.io.netty.channel.ChannelHandlerContext;
public class EmptyNetworkManager extends NetworkManager { public class EmptyNetworkManager extends NetworkManager {
public EmptyNetworkManager(boolean flag) throws IOException { public EmptyNetworkManager(boolean flag) throws IOException {
super(flag); super(flag);
NMS.stopNetworkThreads(this); }
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
super.channelActive(ctx);
ctx.channel().close();
} }
} }

View File

@ -27,11 +27,9 @@ import net.minecraft.server.v1_7_R1.GenericAttributes;
import net.minecraft.server.v1_7_R1.MathHelper; import net.minecraft.server.v1_7_R1.MathHelper;
import net.minecraft.server.v1_7_R1.MobEffectList; import net.minecraft.server.v1_7_R1.MobEffectList;
import net.minecraft.server.v1_7_R1.Navigation; import net.minecraft.server.v1_7_R1.Navigation;
import net.minecraft.server.v1_7_R1.NetworkManager;
import net.minecraft.server.v1_7_R1.Packet; import net.minecraft.server.v1_7_R1.Packet;
import net.minecraft.server.v1_7_R1.PathfinderGoalSelector; import net.minecraft.server.v1_7_R1.PathfinderGoalSelector;
import net.minecraft.server.v1_7_R1.World; import net.minecraft.server.v1_7_R1.World;
import net.minecraft.util.io.netty.channel.Channel;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -410,17 +408,6 @@ public class NMS {
navigation.h(); navigation.h();
} }
public static void stopNetworkThreads(NetworkManager manager) {
if (THREAD_STOPPER == null)
return;
try {
Channel channel = (Channel) THREAD_STOPPER.get(manager);
channel.close();
} catch (Exception e) {
Messaging.logTr(Messages.ERROR_STOPPING_NETWORK_THREADS, e.getMessage());
}
}
public static void trySwim(org.bukkit.entity.Entity entity) { public static void trySwim(org.bukkit.entity.Entity entity) {
trySwim(entity, 0.04F); trySwim(entity, 0.04F);
} }
@ -500,7 +487,6 @@ public class NMS {
private static final Location PACKET_CACHE_LOCATION = new Location(null, 0, 0, 0); private static final Location PACKET_CACHE_LOCATION = new Location(null, 0, 0, 0);
private static Field PATHFINDING_RANGE = getField(Navigation.class, "e"); private static Field PATHFINDING_RANGE = getField(Navigation.class, "e");
private static final Random RANDOM = Util.getFastRandom(); private static final Random RANDOM = Util.getFastRandom();
private static Field THREAD_STOPPER = getField(NetworkManager.class, "k");
// true field above false and three synchronised lists // true field above false and three synchronised lists
static { static {