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