public static bool Building_doAction_Prefix(StardewValley.Buildings.Building __instance, Vector2 tileLocation, Farmer who, ref bool __result) { try { if (__instance.buildingType.Value != buildingType) { return(true); // run original logic } ModMonitor.Log($"{nameof(Building_doAction_Prefix)}: {__instance.buildingType.Value} right clicked.", LogLevel.Trace); if (!(tileLocation.X >= (float)(int)__instance.tileX && tileLocation.X < (float)((int)__instance.tileX + (int)__instance.tilesWide) && tileLocation.Y >= (float)(int)__instance.tileY && tileLocation.Y < (float)((int)__instance.tileY + (int)__instance.tilesHigh))) { return(true); // run original logic } if (!who.IsLocalPlayer || (int)__instance.daysOfConstructionLeft > 0 || who.isRidingHorse()) { return(true); // run original logic } // Just open the forge menu Game1.activeClickableMenu = new ForgeMenu(); __result = true; return(false); // don't run original logic } catch (Exception ex) { ModMonitor.Log($"Failed in {nameof(Building_doAction_Prefix)}:\n{ex}", LogLevel.Error); return(true); // run original logic } }
/* * public static Node CreateElement(Vector2 position, GameLocation location, StardewValley.Object obj) * { * if (obj.name.Equals("ExtractorPipe")) * { * return new ExtractorPipeNode(position, location, obj); * } * else if (obj.name.Equals("GoldExtractorPipe")) * { * return new GoldExtractorPipeNode(position, location, obj); * } * else if (obj.name.Equals("IridiumExtractorPipe")) * { * return new IridiumExtractorPipeNode(position, location, obj); * } * else if (obj.name.Equals("InserterPipe")) * { * return new InserterPipeNode(position, location, obj); * } * else if (obj.name.Equals("PolymorphicPipe")) * { * return new PolymorphicPipeNode(position, location, obj); * } * else if (obj.name.Equals("FilterPipe")) * { * return new FilterPipeNode(position, location, obj); * } * else if (obj.name.Equals("IronPipe")) * { * return new IronPipeNode(position, location, obj); * } * else if (obj.name.Equals("GoldPipe")) * { * return new GoldPipeNode(position, location, obj); * } * else if (obj.name.Equals("IridiumPipe")) * { * return new IridiumPipeNode(position, location, obj); * } * else if (obj.name.Equals("Chest")) * { * return new ChestContainerNode(position, location, obj); * } * else if (obj.name.Equals("Mini-Fridge")) * { * return new ChestContainerNode(position, location, obj); * } * else if (obj.name.Equals("PPM")) * { * return new PPMNode(position, location, obj); * } * else * { * throw new Exception($"Node creation for {obj.Name} failed."); * } * } */ public static Node CreateElement(Vector2 position, GameLocation location, StardewValley.Buildings.Building building) { if (building.GetType().Equals(typeof(ShippingBin))) { return(new ShippingBinContainerNode(position, location, null, building)); } else { throw new Exception($"Node creation for {building.nameOfIndoors} failed."); } }