diff --git a/common/mekanism/client/ClientConnectionHandler.java b/common/mekanism/client/ClientConnectionHandler.java index fc326b16c..0ee743cd7 100644 --- a/common/mekanism/client/ClientConnectionHandler.java +++ b/common/mekanism/client/ClientConnectionHandler.java @@ -18,7 +18,7 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ClientConnectionHandler implements IConnectionHandler { - public VoiceClient voiceClient = new VoiceClient(); + public VoiceClient voiceClient; @Override public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager) {} @@ -32,21 +32,26 @@ public class ClientConnectionHandler implements IConnectionHandler @Override public void connectionOpened(NetHandler netClientHandler, String server, int port, INetworkManager manager) { - voiceClient.start(server, 36123); + try { + voiceClient = new VoiceClient(server, 36123); + voiceClient.run(); + } catch(Exception e) {} } @Override public void connectionOpened(NetHandler netClientHandler, MinecraftServer server, INetworkManager manager) { try { - voiceClient.start(InetAddress.getLocalHost().getHostAddress(), 36123); + voiceClient = new VoiceClient(InetAddress.getLocalHost().getHostAddress(), 36123); + voiceClient.run(); } catch(Exception e) {} } @Override public void connectionClosed(INetworkManager manager) { - voiceClient.stop(); + voiceClient.disconnect(); + voiceClient = null; Mekanism.proxy.unloadSoundHandler(); } diff --git a/common/mekanism/client/voice/VoiceClient.java b/common/mekanism/client/voice/VoiceClient.java index ad62b6be0..a7a3a265a 100644 --- a/common/mekanism/client/voice/VoiceClient.java +++ b/common/mekanism/client/voice/VoiceClient.java @@ -12,10 +12,13 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class VoiceClient +public class VoiceClient extends Thread { public Socket socket; + public String ip; + public int port; + public AudioFormat format = new AudioFormat(11025.0F, 8, 1, true, true); public VoiceInput inputThread; @@ -26,7 +29,14 @@ public class VoiceClient public boolean running; - public void start(String ip, int port) + public VoiceClient(String s, int i) + { + ip = s; + port = i; + } + + @Override + public void run() { System.out.println("[Mekanism] VoiceServer: Starting client connection..."); @@ -39,13 +49,15 @@ public class VoiceClient (outputThread = new VoiceOutput(this)).start(); (inputThread = new VoiceInput(this)).start(); + + System.out.println("[Mekanism] VoiceServer: Successfully connected to server."); } catch(Exception e) { System.err.println("[Mekanism] VoiceServer: Error while starting client connection."); e.printStackTrace(); } } - public void stop() + public void disconnect() { System.out.println("[Mekanism] VoiceServer: Stopping client connection..."); @@ -55,6 +67,10 @@ public class VoiceClient outputThread.interrupt(); } catch(Exception e) {} + try { + interrupt(); + } catch(Exception e) {} + try { inputThread.close(); outputThread.close(); diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 7e8860bbd..ab5de9c2e 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -1,7 +1,5 @@ package mekanism.common; -import ic2.api.energy.event.EnergyTileLoadEvent; -import ic2.api.energy.tile.IEnergyTile; import ic2.api.recipe.RecipeInputOreDict; import ic2.api.recipe.Recipes; @@ -19,7 +17,6 @@ import mekanism.api.infuse.InfuseRegistry; import mekanism.api.infuse.InfuseType; import mekanism.api.infuse.InfusionInput; import mekanism.api.transmitters.TransmitterNetworkRegistry; -import mekanism.client.sound.SoundHandler; import mekanism.common.EnergyNetwork.EnergyTransferEvent; import mekanism.common.FluidNetwork.FluidTransferEvent; import mekanism.common.IFactory.RecipeType; @@ -76,11 +73,9 @@ import mekanism.common.network.PacketWalkieTalkieState; import mekanism.common.network.PacketWeather; import mekanism.common.tileentity.TileEntityBoundingBlock; import mekanism.common.tileentity.TileEntityControlPanel; -import mekanism.common.tileentity.TileEntityElectricBlock; import mekanism.common.tileentity.TileEntityEnergyCube; import mekanism.common.tileentity.TileEntityGasTank; import mekanism.common.tileentity.TileEntityTeleporter; -import mekanism.common.tileentity.TileEntityUniversalCable; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.common.voice.VoiceServerManager; @@ -89,11 +84,9 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.Configuration; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.ForgeSubscribe; -import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapelessOreRecipe; import rebelkeithy.mods.metallurgy.api.IOreInfo; @@ -112,8 +105,6 @@ import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; /** * Mekanism - the mod in which no true definition fits.