001 package net.minecraft.server.integrated; 002 003 import cpw.mods.fml.common.network.FMLNetworkHandler; 004 import cpw.mods.fml.relauncher.Side; 005 import cpw.mods.fml.relauncher.SideOnly; 006 import java.io.IOException; 007 import java.net.InetAddress; 008 import net.minecraft.entity.player.EntityPlayerMP; 009 import net.minecraft.network.MemoryConnection; 010 import net.minecraft.network.NetworkListenThread; 011 import net.minecraft.network.packet.NetHandler; 012 import net.minecraft.server.MinecraftServer; 013 import net.minecraft.server.ServerListenThread; 014 import net.minecraft.util.HttpUtil; 015 016 @SideOnly(Side.CLIENT) 017 public class IntegratedServerListenThread extends NetworkListenThread 018 { 019 private final MemoryConnection netMemoryConnection = new MemoryConnection((NetHandler)null); 020 private MemoryConnection theMemoryConnection; 021 private String field_71759_e; 022 private boolean field_71756_f = false; 023 private ServerListenThread myServerListenThread; 024 025 public IntegratedServerListenThread(IntegratedServer par1IntegratedServer) throws IOException 026 { 027 super(par1IntegratedServer); 028 } 029 030 public void func_71754_a(MemoryConnection par1MemoryConnection, String par2Str) 031 { 032 this.theMemoryConnection = par1MemoryConnection; 033 this.field_71759_e = par2Str; 034 } 035 036 public String func_71755_c() throws IOException 037 { 038 if (this.myServerListenThread == null) 039 { 040 int var1 = -1; 041 042 try 043 { 044 var1 = HttpUtil.func_76181_a(); 045 } 046 catch (IOException var4) 047 { 048 ; 049 } 050 051 if (var1 <= 0) 052 { 053 var1 = 25564; 054 } 055 056 try 057 { 058 this.myServerListenThread = new ServerListenThread(this, (InetAddress)null, var1); 059 this.myServerListenThread.start(); 060 } 061 catch (IOException var3) 062 { 063 throw var3; 064 } 065 } 066 067 return FMLNetworkHandler.computeLocalHost().getHostAddress() + ":" + this.myServerListenThread.getMyPort(); 068 } 069 070 public void stopListening() 071 { 072 super.stopListening(); 073 074 if (this.myServerListenThread != null) 075 { 076 System.out.println("Stopping server connection"); 077 this.myServerListenThread.func_71768_b(); 078 this.myServerListenThread.interrupt(); 079 this.myServerListenThread = null; 080 } 081 } 082 083 /** 084 * processes packets and pending connections 085 */ 086 public void networkTick() 087 { 088 if (this.theMemoryConnection != null) 089 { 090 EntityPlayerMP var1 = this.getIntergatedServerMinecraftServerInstance().getConfigurationManager().createPlayerForUser(this.field_71759_e); 091 092 if (var1 != null) 093 { 094 this.netMemoryConnection.pairWith(this.theMemoryConnection); 095 this.field_71756_f = true; 096 this.getIntergatedServerMinecraftServerInstance().getConfigurationManager().initializeConnectionToPlayer(this.netMemoryConnection, var1); 097 } 098 099 this.theMemoryConnection = null; 100 this.field_71759_e = null; 101 } 102 103 if (this.myServerListenThread != null) 104 { 105 this.myServerListenThread.processPendingConnections(); 106 } 107 108 super.networkTick(); 109 } 110 111 /** 112 * Gets MinecraftServer instance. 113 */ 114 public IntegratedServer getIntergatedServerMinecraftServerInstance() 115 { 116 return (IntegratedServer)super.getServer(); 117 } 118 119 public boolean isGamePaused() 120 { 121 return this.field_71756_f && this.netMemoryConnection.getPairedConnection().isConnectionActive() && this.netMemoryConnection.getPairedConnection().isGamePaused(); 122 } 123 124 public MinecraftServer getServer() 125 { 126 return this.getIntergatedServerMinecraftServerInstance(); 127 } 128 }