public override void OnChatButtonClicked(NPC npc, bool firstButton) { if (npc.type == NPCID.Guide) { if (firstButton) { if (!RaidsWorld.hasTalkedToGuide.Contains(Main.player[Main.myPlayer].GetModPlayer <TUAPlayer>().ID.ToString())) { Main.npcChatText = GetGuideStartText(); currentGuideText++; } else { switch (guideFocusText) { case 2: UIManager.OpenRaidsUI(); giveRaidsDialog = true; break; case 1: Main.playerInventory = true; Main.npcChatText = ""; Main.PlaySound(12, -1, -1, 1, 1f, 0f); Main.InGuideCraftMenu = true; UILinkPointNavigator.GoToDefaultPage(0); break; default: Main.PlaySound(12, -1, -1, 1, 1f, 0f); // If someone can find a better way to do this, do it immediately ReflManager <Type> .GetItem("TMain").GetMethod("HelpText", BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, null); break; } } } else { if (guideFocusText == 2) { guideFocusText = 0; } else { guideFocusText++; } } } }
public static void PopulateModBrowser(CustomMMHooker.orig_populatebrowser orig, object instance) { Object modBrowserInstance = ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.Interface") .GetField("modBrowser", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null); ErrorLogger.Log(modBrowserInstance); ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser").GetField("loading").SetValue(modBrowserInstance, true); ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser").GetField("_specialModPackFilterTitle", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(modBrowserInstance, ""); //StaticManager<Type>.GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser").GetField("_specialModPackFilterTitle", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(modBrowserInstance, null ); UITextPanel <String> reloadButton = (UITextPanel <String>) ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser") .GetField("reloadButton", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(modBrowserInstance); reloadButton.SetText(Language.GetTextValue("tModLoader.MBGettingData")); MethodInfo SetHeading = ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser") .GetMethod("SetHeading", BindingFlags.Instance | BindingFlags.NonPublic); SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") }); UIPanel uiPanel = (UIPanel)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser") .GetField("uIPanel", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(modBrowserInstance); uiPanel.Append((UIElement)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser") .GetField("uILoader", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(modBrowserInstance)); /*uIPanel.Append(uILoader);*/ UIList modList = (UIList)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser") .GetField("modList").GetValue(modBrowserInstance); IList items = (IList)ReflManager <Type> .GetItem("TMain").Assembly.GetType("Terraria.ModLoader.UI.UIModBrowser") .GetField("items", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly).GetValue(modBrowserInstance); items.Clear(); modList.Deactivate(); try { ServicePointManager.Expect100Continue = false; string url = "http://javid.ddns.net/tModLoader/listmods.php"; var values = new NameValueCollection { { "modloaderversion", TUA.tModLoaderVersion2 }, { "platform", ModLoader.compressedPlatformRepresentation }, }; using (WebClient client = new WebClient()) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return(true); }); Type eventType = typeof(WebClient); EventInfo UploadCompleteValue = eventType.GetEvent("UploadValuesCompleted"); Type eventHandler = UploadCompleteValue.EventHandlerType; MethodInfo methodToMakeDelegate = ReflManager <Type> .GetItem("TMain").Assembly .GetType("Terraria.ModLoader.UI.UIModBrowser").GetMethod("UploadComplete", BindingFlags.Public | BindingFlags.Instance); ErrorLogger.Log("EventHandler : " + UploadCompleteValue); ErrorLogger.Log("Method to add : " + methodToMakeDelegate); Delegate d = Delegate.CreateDelegate(eventHandler, modBrowserInstance, methodToMakeDelegate); MethodInfo addHandler = UploadCompleteValue.GetAddMethod(); Object[] addHandlerArgs = { d }; addHandler.Invoke(client, addHandlerArgs); //client.UploadValuesCompleted += new UploadValuesCompletedEventHandler(d); client.UploadValuesAsync(new Uri(url), "POST", values); } } catch (WebException e) { if (e.Status == WebExceptionStatus.Timeout) { SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", Language.GetTextValue("tModLoader.MBBusy")) }); return; } if (e.Status == WebExceptionStatus.ProtocolError) { var resp = (HttpWebResponse)e.Response; if (resp.StatusCode == HttpStatusCode.NotFound) { SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", resp.StatusCode) }); return; } SetHeading.Invoke(modBrowserInstance, new object[] { Language.GetTextValue("tModLoader.MenuModBrowser") + " " + Language.GetTextValue("tModLoader.MBOfflineWithReason", resp.StatusCode) }); return; } } catch (Exception e) { Object[] obj = new object[] { e }; typeof(ErrorLogger) .GetMethod("LogModBrowserException", BindingFlags.NonPublic | BindingFlags.Static) .Invoke(null, obj); return; } }
public override void Action(CommandCaller caller, string input, string[] args) { if (SteamID64Checker.Instance.VerifyDevID()) { switch (args[0]) { case "Sandstorm": if (Sandstorm.Happening) { ReflManager <Type> .GetItem("TMain").GetMethod("StopSandstorm", BindingFlags.NonPublic | BindingFlags.Static) .Invoke(null, new object[] { }); } else { ReflManager <Type> .GetItem("TMain").GetMethod("StartSandstorm", BindingFlags.NonPublic | BindingFlags.Static) .Invoke(null, new object[] { }); } Sandstorm.Happening = !Sandstorm.Happening; TUA.BroadcastMessage("Sandstorm toggled " + ((Sandstorm.Happening) ? "on" : "off")); break; case "Rain": if (Main.raining) { ReflManager <Type> .GetItem("TMain").GetMethod("StopRain", BindingFlags.NonPublic | BindingFlags.Static) .Invoke(null, new object[] { }); } else { ReflManager <Type> .GetItem("TMain").GetMethod("StartRain", BindingFlags.NonPublic | BindingFlags.Static) .Invoke(null, new object[] { }); } TUA.BroadcastMessage("Rain toggled " + ((Main.raining) ? "on" : "off")); break; case "SlimeRain": Main.slimeRain = !Main.slimeRain; Main.slimeRainTime = (Main.slimeRain) ? 54000.0 : 0; TUA.BroadcastMessage("Slime rain toggled " + ((Main.slimeRain) ? "on" : "off")); break; case "GoblinArmy": Main.invasionType = ((Main.invasionType == 1) ? 0 : 1); TUA.BroadcastMessage("Goblin army toggled " + ((Main.invasionType == 1) ? "on" : "off")); break; case "FrostLegion": Main.invasionType = ((Main.invasionType == 2) ? 0 : 2); TUA.BroadcastMessage("Frost legion toggled " + ((Main.invasionType == 2) ? "on" : "off")); break; case "PirateInvasion": Main.invasionType = ((Main.invasionType == 3) ? 0 : 3); TUA.BroadcastMessage("Pirate invasion toggled " + ((Main.invasionType == 3) ? "on" : "off")); break; case "MartianMadness": Main.invasionType = ((Main.invasionType == 4) ? 0 : 4); TUA.BroadcastMessage("Martian madness toggled " + ((Main.invasionType == 4) ? "on" : "off")); break; case "Eclipse": Main.dayTime = true; Main.time = 0; Main.eclipse = !Main.eclipse; TUA.BroadcastMessage("Solar eclipse toggled " + ((Main.eclipse) ? "on" : "off")); break; case "BloodMoon": Main.dayTime = false; Main.time = 0; Main.bloodMoon = !Main.bloodMoon; TUA.BroadcastMessage("Blood moon toggled " + ((Main.bloodMoon) ? "on" : "off")); break; case "FrostMoon": Main.dayTime = false; Main.time = 0; Main.snowMoon = !Main.snowMoon; TUA.BroadcastMessage("Frost moon toggled " + ((Main.snowMoon) ? "on" : "off")); break; case "PumpkinMoon": Main.dayTime = false; Main.time = 0; Main.pumpkinMoon = !Main.pumpkinMoon; TUA.BroadcastMessage("Pumpkin moon toggled " + ((Main.pumpkinMoon) ? "on" : "off")); break; default: TUA.BroadcastMessage("Event is not supported by the command currently"); break; } } }