private void Input_ButtonsChanged(object sender, ButtonsChangedEventArgs e) { foreach (SButton button in e.Pressed) { if (button == SButton.MouseRight) { foreach (ModData m in Data) { foreach (Totem t in m.Totems) { if (Game1.player.ActiveObject?.ParentSheetIndex == JAAPIInstance.GetObjectId(t.Name)) { Object o = Game1.player.ActiveObject; try { Helper.Reflection.GetMethod(o, "totemWarp", true).Invoke(Game1.player); } catch (Exception ex) { Monitor1.Log($"Failed in {nameof(Input_ButtonsChanged)} while trying to invoke method 'Object.totemWarp':\n{ex}", LogLevel.Error); Monitor1.Log(ex.StackTrace, LogLevel.Trace); } } } } } } }
private static bool Object_totemWarpForReal_Prefix(Object __instance) { foreach (ModData m in Data) { foreach (Totem t in m.Totems) { try { if (t.Name != "???") { if (__instance.ParentSheetIndex == JAAPIInstance.GetObjectId(t.Name)) { Game1.warpFarmer(t.WhereToWarp, t.ToX, t.ToY, flip: false); if (!t.PersistItem) { Game1.player.ActiveObject = null; } return(true); } } } catch (Exception e) { Monitor1.Log($"Failed in {nameof(Building_obeliskWarpForReal_Prefix)}:\n{e}", LogLevel.Error); Monitor1.Log(e.StackTrace, LogLevel.Trace); } } } return(true); }