package net.minecraft.client.stream; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import tv.twitch.AuthToken; import tv.twitch.ErrorCode; import tv.twitch.chat.Chat; import tv.twitch.chat.ChatChannelInfo; import tv.twitch.chat.ChatEvent; import tv.twitch.chat.ChatMessage; import tv.twitch.chat.ChatMessageList; import tv.twitch.chat.ChatTokenizedMessage; import tv.twitch.chat.ChatUserInfo; import tv.twitch.chat.ChatUserList; import tv.twitch.chat.IChatCallbacks; import tv.twitch.chat.StandardChatAPI; @SideOnly(Side.CLIENT) public class ChatController implements IChatCallbacks { private static final Logger LOGGER = LogManager.getLogger(); protected ChatController.ChatListener field_153003_a = null; protected String field_153004_b = ""; protected String field_153005_c = ""; protected String field_153006_d = ""; protected String field_153007_e = ""; protected Chat field_153008_f = null; protected boolean field_153009_g = false; protected boolean field_153010_h = false; protected ChatController.ChatState field_153011_i; protected AuthToken field_153012_j; protected List field_153013_k; protected LinkedList field_153014_l; protected int field_153015_m; protected boolean field_153016_n; protected boolean field_153017_o; private static final String __OBFID = "CL_00001819"; public void chatStatusCallback(ErrorCode p_chatStatusCallback_1_) { if (!ErrorCode.succeeded(p_chatStatusCallback_1_)) { this.field_153011_i = ChatController.ChatState.Disconnected; } } public void chatChannelMembershipCallback(ChatEvent p_chatChannelMembershipCallback_1_, ChatChannelInfo p_chatChannelMembershipCallback_2_) { switch (ChatController.SwitchChatState.field_152982_a[p_chatChannelMembershipCallback_1_.ordinal()]) { case 1: this.field_153011_i = ChatController.ChatState.Connected; this.func_152999_p(); break; case 2: this.field_153011_i = ChatController.ChatState.Disconnected; } } public void chatChannelUserChangeCallback(ChatUserList p_chatChannelUserChangeCallback_1_, ChatUserList p_chatChannelUserChangeCallback_2_, ChatUserList p_chatChannelUserChangeCallback_3_) { int i; int j; for (i = 0; i < p_chatChannelUserChangeCallback_2_.userList.length; ++i) { j = this.field_153013_k.indexOf(p_chatChannelUserChangeCallback_2_.userList[i]); if (j >= 0) { this.field_153013_k.remove(j); } } for (i = 0; i < p_chatChannelUserChangeCallback_3_.userList.length; ++i) { j = this.field_153013_k.indexOf(p_chatChannelUserChangeCallback_3_.userList[i]); if (j >= 0) { this.field_153013_k.remove(j); } this.field_153013_k.add(p_chatChannelUserChangeCallback_3_.userList[i]); } for (i = 0; i < p_chatChannelUserChangeCallback_1_.userList.length; ++i) { this.field_153013_k.add(p_chatChannelUserChangeCallback_1_.userList[i]); } try { if (this.field_153003_a != null) { this.field_153003_a.func_152904_a(p_chatChannelUserChangeCallback_1_.userList, p_chatChannelUserChangeCallback_2_.userList, p_chatChannelUserChangeCallback_3_.userList); } } catch (Exception exception) { this.func_152995_h(exception.toString()); } } public void chatQueryChannelUsersCallback(ChatUserList p_chatQueryChannelUsersCallback_1_) {} public void chatChannelMessageCallback(ChatMessageList p_chatChannelMessageCallback_1_) { for (int i = 0; i < p_chatChannelMessageCallback_1_.messageList.length; ++i) { this.field_153014_l.addLast(p_chatChannelMessageCallback_1_.messageList[i]); } try { if (this.field_153003_a != null) { this.field_153003_a.func_152903_a(p_chatChannelMessageCallback_1_.messageList); } } catch (Exception exception) { this.func_152995_h(exception.toString()); } while (this.field_153014_l.size() > this.field_153015_m) { this.field_153014_l.removeFirst(); } } public void chatClearCallback(String p_chatClearCallback_1_) { this.func_152987_o(); } public void emoticonDataDownloadCallback(ErrorCode p_emoticonDataDownloadCallback_1_) { if (ErrorCode.succeeded(p_emoticonDataDownloadCallback_1_)) { this.func_152988_s(); } } public void chatChannelTokenizedMessageCallback(ChatTokenizedMessage[] p_chatChannelTokenizedMessageCallback_1_) {} public void func_152990_a(ChatController.ChatListener p_152990_1_) { this.field_153003_a = p_152990_1_; } public boolean func_152991_c() { return this.field_153011_i == ChatController.ChatState.Connected; } public void func_152994_a(AuthToken p_152994_1_) { this.field_153012_j = p_152994_1_; } public void func_152984_a(String p_152984_1_) { this.field_153006_d = p_152984_1_; } public void func_152998_c(String p_152998_1_) { this.field_153004_b = p_152998_1_; } public ChatController.ChatState func_153000_j() { return this.field_153011_i; } public ChatController() { this.field_153011_i = ChatController.ChatState.Uninitialized; this.field_153012_j = new AuthToken(); this.field_153013_k = new ArrayList(); this.field_153014_l = new LinkedList(); this.field_153015_m = 128; this.field_153016_n = false; this.field_153017_o = false; this.field_153008_f = new Chat(new StandardChatAPI()); } public boolean func_152986_d(String p_152986_1_) { this.func_153002_l(); this.field_153010_h = false; this.field_153005_c = p_152986_1_; return this.func_152985_f(p_152986_1_); } public boolean func_153002_l() { if (this.field_153011_i != ChatController.ChatState.Connected && this.field_153011_i != ChatController.ChatState.Connecting) { if (this.field_153011_i == ChatController.ChatState.Disconnected) { this.func_152989_q(); } } else { ErrorCode errorcode = this.field_153008_f.disconnect(); if (ErrorCode.failed(errorcode)) { String s = ErrorCode.getString(errorcode); this.func_152995_h(String.format("Error disconnecting: %s", new Object[] {s})); return false; } this.func_152989_q(); } return this.func_152993_m(); } protected boolean func_152985_f(String p_152985_1_) { if (this.field_153009_g) { return false; } else { ErrorCode errorcode = this.field_153008_f.initialize(p_152985_1_, false); if (ErrorCode.failed(errorcode)) { String s1 = ErrorCode.getString(errorcode); this.func_152995_h(String.format("Error initializing chat: %s", new Object[] {s1})); this.func_152989_q(); return false; } else { this.field_153009_g = true; this.field_153008_f.setChatCallbacks(this); this.field_153011_i = ChatController.ChatState.Initialized; return true; } } } protected boolean func_152993_m() { if (this.field_153009_g) { ErrorCode errorcode = this.field_153008_f.shutdown(); if (ErrorCode.failed(errorcode)) { String s = ErrorCode.getString(errorcode); this.func_152995_h(String.format("Error shutting down chat: %s", new Object[] {s})); return false; } } this.field_153011_i = ChatController.ChatState.Uninitialized; this.field_153009_g = false; this.func_152996_t(); this.field_153008_f.setChatCallbacks((IChatCallbacks)null); return true; } public void func_152997_n() { if (this.field_153009_g) { ErrorCode errorcode = this.field_153008_f.flushEvents(); String s; if (ErrorCode.failed(errorcode)) { s = ErrorCode.getString(errorcode); this.func_152995_h(String.format("Error flushing chat events: %s", new Object[] {s})); } switch (ChatController.SwitchChatState.field_152983_b[this.field_153011_i.ordinal()]) { case 1: case 3: case 4: default: break; case 2: if (this.field_153010_h) { errorcode = this.field_153008_f.connectAnonymous(); } else { errorcode = this.field_153008_f.connect(this.field_153005_c, this.field_153012_j.data); } if (ErrorCode.failed(errorcode)) { s = ErrorCode.getString(errorcode); this.func_152995_h(String.format("Error connecting: %s", new Object[] {s})); this.func_152993_m(); this.func_152989_q(); } else { this.field_153011_i = ChatController.ChatState.Connecting; this.func_153001_r(); } break; case 5: this.func_153002_l(); } } } public boolean func_152992_g(String p_152992_1_) { if (this.field_153011_i != ChatController.ChatState.Connected) { return false; } else { ErrorCode errorcode = this.field_153008_f.sendMessage(p_152992_1_); if (ErrorCode.failed(errorcode)) { String s1 = ErrorCode.getString(errorcode); this.func_152995_h(String.format("Error sending chat message: %s", new Object[] {s1})); return false; } else { return true; } } } public void func_152987_o() { this.field_153014_l.clear(); try { if (this.field_153003_a != null) { this.field_153003_a.func_152902_f(); } } catch (Exception exception) { this.func_152995_h(exception.toString()); } } protected void func_152999_p() { try { if (this.field_153003_a != null) { this.field_153003_a.func_152906_d(); } } catch (Exception exception) { this.func_152995_h(exception.toString()); } } protected void func_152989_q() { try { if (this.field_153003_a != null) { this.field_153003_a.func_152905_e(); } } catch (Exception exception) { this.func_152995_h(exception.toString()); } } protected void func_153001_r() {} protected void func_152988_s() {} protected void func_152996_t() {} protected void func_152995_h(String p_152995_1_) { LOGGER.error(TwitchStream.field_152949_a, "[Chat controller] {}", new Object[] {p_152995_1_}); } @SideOnly(Side.CLIENT) public interface ChatListener { void func_152903_a(ChatMessage[] p_152903_1_); void func_152904_a(ChatUserInfo[] p_152904_1_, ChatUserInfo[] p_152904_2_, ChatUserInfo[] p_152904_3_); void func_152906_d(); void func_152905_e(); void func_152902_f(); } @SideOnly(Side.CLIENT) public static enum ChatState { Uninitialized, Initialized, Connecting, Connected, Disconnected; private static final String __OBFID = "CL_00001817"; } @SideOnly(Side.CLIENT) static final class SwitchChatState { static final int[] field_152982_a; static final int[] field_152983_b = new int[ChatController.ChatState.values().length]; private static final String __OBFID = "CL_00001818"; static { try { field_152983_b[ChatController.ChatState.Uninitialized.ordinal()] = 1; } catch (NoSuchFieldError var7) { ; } try { field_152983_b[ChatController.ChatState.Initialized.ordinal()] = 2; } catch (NoSuchFieldError var6) { ; } try { field_152983_b[ChatController.ChatState.Connecting.ordinal()] = 3; } catch (NoSuchFieldError var5) { ; } try { field_152983_b[ChatController.ChatState.Connected.ordinal()] = 4; } catch (NoSuchFieldError var4) { ; } try { field_152983_b[ChatController.ChatState.Disconnected.ordinal()] = 5; } catch (NoSuchFieldError var3) { ; } field_152982_a = new int[ChatEvent.values().length]; try { field_152982_a[ChatEvent.TTV_CHAT_JOINED_CHANNEL.ordinal()] = 1; } catch (NoSuchFieldError var2) { ; } try { field_152982_a[ChatEvent.TTV_CHAT_LEFT_CHANNEL.ordinal()] = 2; } catch (NoSuchFieldError var1) { ; } } } }