package joshie.harvest.shops; import joshie.harvest.animals.HFAnimals; import joshie.harvest.animals.block.BlockTrough.Trough; import joshie.harvest.animals.entity.EntityHarvestChicken; import joshie.harvest.animals.entity.EntityHarvestCow; import joshie.harvest.animals.entity.EntityHarvestSheep; import joshie.harvest.animals.item.ItemAnimalProduct.Sizeable; import joshie.harvest.animals.item.ItemAnimalTool.Tool; import joshie.harvest.animals.item.ItemAnimalTreat.Treat; import joshie.harvest.api.HFApi; import joshie.harvest.api.calendar.CalendarDate; import joshie.harvest.api.calendar.Festival; import joshie.harvest.api.core.ITiered.ToolTier; import joshie.harvest.api.core.Size; import joshie.harvest.api.crops.Crop; import joshie.harvest.api.npc.NPC; import joshie.harvest.api.quests.Quest; import joshie.harvest.api.shops.Shop; import joshie.harvest.buildings.HFBuildings; import joshie.harvest.calendar.HFFestivals; import joshie.harvest.cooking.HFCooking; import joshie.harvest.cooking.block.BlockCookware.Cookware; import joshie.harvest.cooking.item.ItemMeal.Meal; import joshie.harvest.core.HFCore; import joshie.harvest.core.block.BlockStorage.Storage; import joshie.harvest.core.util.annotations.HFLoader; import joshie.harvest.crops.HFCrops; import joshie.harvest.crops.block.BlockSprinkler.Sprinkler; import joshie.harvest.fishing.HFFishing; import joshie.harvest.fishing.block.BlockAquatic.Aquatic; import joshie.harvest.fishing.block.BlockFloating.Floating; import joshie.harvest.fishing.item.ItemFish.Fish; import joshie.harvest.fishing.item.ItemJunk.Junk; import joshie.harvest.gathering.HFGathering; import joshie.harvest.gathering.block.BlockNature.NaturalBlock; import joshie.harvest.knowledge.HFKnowledge; import joshie.harvest.knowledge.HFNotes; import joshie.harvest.knowledge.item.ItemBook.Book; import joshie.harvest.mining.HFMining; import joshie.harvest.mining.block.BlockElevator.Elevator; import joshie.harvest.mining.block.BlockLadder.Ladder; import joshie.harvest.mining.item.ItemMaterial.Material; import joshie.harvest.mining.item.ItemMiningTool.MiningTool; import joshie.harvest.npcs.HFNPCs; import joshie.harvest.npcs.npc.NPCHolidayStore; import joshie.harvest.npcs.npc.NPCHolidayStoreSpecial; import joshie.harvest.quests.HFQuests; import joshie.harvest.quests.Quests; import joshie.harvest.quests.base.QuestRecipe; import joshie.harvest.quests.block.BlockQuestBoard.QuestBlock; import joshie.harvest.shops.purchasable.*; import joshie.harvest.shops.requirement.*; import joshie.harvest.shops.requirement.String; import joshie.harvest.shops.rules.SpecialRulesFriendship; import joshie.harvest.shops.rules.SpecialRulesQuest; import joshie.harvest.tools.HFTools; import joshie.harvest.town.TownHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import javax.annotation.Nonnull; import javax.annotation.Nullable; import static joshie.harvest.animals.block.BlockSizedStorage.SizedStorage.INCUBATOR; import static joshie.harvest.animals.block.BlockTray.Tray.FEEDER_EMPTY; import static joshie.harvest.animals.block.BlockTray.Tray.NEST_EMPTY; import static joshie.harvest.animals.block.BlockTrough.Trough.WOOD; import static joshie.harvest.animals.item.ItemAnimalSpawner.Spawner.*; import static joshie.harvest.animals.item.ItemAnimalTool.Tool.*; import static joshie.harvest.api.calendar.Season.*; import static joshie.harvest.api.calendar.Weekday.*; import static joshie.harvest.cooking.HFCooking.*; import static joshie.harvest.cooking.block.BlockCookware.Cookware.OVEN_OFF; import static joshie.harvest.cooking.item.ItemIngredients.Ingredient.*; import static joshie.harvest.cooking.item.ItemUtensil.Utensil.KNIFE; import static joshie.harvest.core.helpers.ConfigHelper.getBoolean; import static joshie.harvest.core.lib.HFModInfo.MODID; import static joshie.harvest.core.registry.ShippingRegistry.SELL_VALUE; import static joshie.harvest.fishing.item.ItemFish.MEDIUM_FISH; @HFLoader public class HFShops { public static final Shop BARN = newShop(new ResourceLocation(MODID, "barn"), HFNPCs.BARN_OWNER); public static final Shop CAFE = newShop(new ResourceLocation(MODID, "cafe"), HFNPCs.CAFE_OWNER); public static final Shop CARPENTER = newShop(new ResourceLocation(MODID, "carpenter"), HFNPCs.CARPENTER); public static final Shop POULTRY = newShop(new ResourceLocation(MODID, "poultry"), HFNPCs.POULTRY); public static final Shop SUPERMARKET = newShop(new ResourceLocation(MODID, "general"), HFNPCs.GS_OWNER); public static final Shop MINER = newShop(new ResourceLocation(MODID, "miner"), HFNPCs.MINER); //Added in 0.6+ public static final Shop BAITSHOP = newShop(new ResourceLocation(MODID, "baitshop"), HFNPCs.FISHERMAN); public static final Shop CLOCKMAKER = newShop(new ResourceLocation(MODID, "clockmaker"), HFNPCs.CLOCKMAKER); public static final Shop BLOODMAGE = newShop(new ResourceLocation(MODID, "bloodmage"), null).setSpecialSellingRules(new SpecialRulesFriendship(HFNPCs.CLOCKMAKER, 15000)).setOpensOnHolidays(); public static final Shop KITCHEN = newShop(new ResourceLocation(MODID, "kitchen"), HFNPCs.CAFE_GRANNY).setSpecialSellingRules(new SpecialRulesFriendship(HFNPCs.CAFE_GRANNY, 15000)); public static final Shop TRADER = newShop(new ResourceLocation(MODID, "trader"), HFNPCs.TRADER).setSpecialSellingRules(new SpecialRulesFriendship(HFNPCs.TRADER, 15000)); public static final Shop COOKING_FESTIVAL_FOOD = newHolidayShop(new ResourceLocation(MODID, "cooking"), HFNPCs.CAFE_GRANNY, HFFestivals.COOKING_CONTEST); public static final Shop COOKING_FESTIVAL_RECIPES = newHolidayShop(new ResourceLocation(MODID, "recipes"), HFNPCs.CAFE_OWNER, HFFestivals.COOKING_CONTEST); public static final Shop COW_FESTIVAL_BARGAINS = newHolidayShop(new ResourceLocation(MODID, "cow"), HFNPCs.BARN_OWNER, HFFestivals.COW_FESTIVAL); public static final Shop COW_FESTIVAL_DAIRY_QUEEN = newHolidayShop(new ResourceLocation(MODID, "dairy"), HFNPCs.CAFE_OWNER, HFFestivals.COW_FESTIVAL); public static final Shop SHEEP_FESTIVAL_SALE = newHolidayShop(new ResourceLocation(MODID, "sheep"), HFNPCs.MILKMAID, HFFestivals.SHEEP_FESTIVAL); public static final Shop SHEEP_FESTIVAL_KNITTNG = newHolidayShop(new ResourceLocation(MODID, "knitting"), HFNPCs.CAFE_GRANNY, HFFestivals.SHEEP_FESTIVAL); public static final Shop CHICKEN_FESTIVAL_MFC = newHolidayShop(new ResourceLocation(MODID, "mfc"), HFNPCs.CAFE_OWNER, HFFestivals.CHICKEN_FESTIVAL); @SuppressWarnings("unused") public static void postInit() { registerBarn(); registerBloodmage(); registerCafe(); registerCafeKitchen(); registerCarpenter(); registerClockmaker(); registerMiner(); registerPoultry(); registerSupermarket(); registerTackleshop(); registerTrader(); //Event specific registerCooking(); registerRecipes(); registerCowBargains(); registerDairyQueen(); registerSaleSheep(); registerGrannysKnits(); registerMinecraftFriedChicken(); } private static void registerBarn() { BARN.addPurchasable(new Purchasable(100, HFCrops.GRASS.getCropStack(1)).addTooltip("crop.grass.item")); BARN.addPurchasable(10, HFAnimals.TREATS.getStackFromEnum(Treat.GENERIC)); BARN.addPurchasable(30, HFAnimals.TREATS.getStackFromEnum(Treat.COW)); BARN.addPurchasable(30, HFAnimals.TREATS.getStackFromEnum(Treat.SHEEP)); BARN.addPurchasable(new PurchasableEntity(EntityHarvestCow.class, 3000, HFAnimals.ANIMAL.getStackFromEnum(COW)).setNote(HFNotes.COW_CARE)); BARN.addPurchasable(new PurchasableEntity(EntityHarvestSheep.class, 2500, HFAnimals.ANIMAL.getStackFromEnum(SHEEP)).setNote(HFNotes.SHEEP_CARE)); BARN.addPurchasable(500, HFAnimals.TROUGH.getStackFromEnum(WOOD)); BARN.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(MEDICINE)); BARN.addPurchasable(1500, HFAnimals.TOOLS.getStackFromEnum(MIRACLE_POTION)); BARN.addPurchasable(250, new ItemStack(Items.NAME_TAG)); BARN.addPurchasable(150, new ItemStack(Items.LEAD)); BARN.addPurchasable(1000, new ItemStack(Items.SADDLE)); BARN.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(BRUSH), 1); BARN.addPurchasable(2000, HFAnimals.TOOLS.getStackFromEnum(MILKER), 1); BARN.addPurchasable(2000, new ItemStack(Items.SHEARS), 1); BARN.setSpecialRules(new SpecialRulesQuest(Quests.JIM_MEET)); BARN.addOpening(MONDAY, 10000, 15000).addOpening(TUESDAY, 10000, 15000).addOpening(WEDNESDAY, 10000, 15000); BARN.addOpening(THURSDAY, 10000, 15000).addOpening(FRIDAY, 10000, 15000).addOpening(SATURDAY, 10000, 15000); } private static void registerBloodmage() { BLOODMAGE.addPurchasable(-100, new ItemStack(Items.SLIME_BALL), 3); BLOODMAGE.addPurchasable(-150, new ItemStack(Items.BONE), 2); BLOODMAGE.addPurchasable(-800, new ItemStack(Items.ENDER_PEARL), 4); BLOODMAGE.addPurchasable(-300, new ItemStack(Items.GOLDEN_APPLE), 3); BLOODMAGE.addPurchasable(-50, new ItemStack(Items.ROTTEN_FLESH), 5); BLOODMAGE.addPurchasable(-100, new ItemStack(Items.SPIDER_EYE), 4); BLOODMAGE.addPurchasable(-30, new ItemStack(Items.POISONOUS_POTATO), 5); BLOODMAGE.addPurchasable(-600, new ItemStack(Items.GHAST_TEAR), 6); BLOODMAGE.addPurchasable(-150, new ItemStack(Items.FERMENTED_SPIDER_EYE), 5); BLOODMAGE.addPurchasable(-700, new ItemStack(Items.BLAZE_ROD), 7); BLOODMAGE.addPurchasable(-350, new ItemStack(Items.MAGMA_CREAM), 7); BLOODMAGE.addPurchasable(-50, new ItemStack(Items.SPECKLED_MELON), 5); BLOODMAGE.addPurchasable(-150, new ItemStack(Items.GOLDEN_CARROT), 5); BLOODMAGE.addPurchasable(-100, new ItemStack(Items.RABBIT_FOOT), 2); BLOODMAGE.addPurchasable(-200, new ItemStack(Items.GUNPOWDER), 4); BLOODMAGE.addPurchasable(-30, new ItemStack(Items.REDSTONE), 10); BLOODMAGE.addPurchasable(-50, new ItemStack(Items.GLOWSTONE_DUST), 5); BLOODMAGE.addOpening(WEDNESDAY, 19000, 24000).addOpening(WEDNESDAY, 0, 5000).addOpening(SATURDAY, 18000, 24000).addOpening(SATURDAY, 0, 3500); } private static void registerCafe() { CAFE.addPurchasable(0, new ItemStack(Items.POTIONITEM)); CAFE.addPurchasable(new PurchasableMeal(200, new ResourceLocation(MODID, "salad")).setStock(10)); CAFE.addPurchasable(new PurchasableMeal(100, new ResourceLocation(MODID, "cookies")).setStock(3)); CAFE.addPurchasable(new PurchasableMeal(250, new ResourceLocation(MODID, "juice_pineapple")).setStock(5)); CAFE.addPurchasable(new PurchasableMeal(250, new ResourceLocation(MODID, "corn_baked")).setStock(5)); CAFE.addPurchasable(new PurchasableMeal(300, new ResourceLocation(MODID, "ice_cream")).setStock(10)); //Add three random meals CAFE.addPurchasable(new PurchasableRandomMeal(5)); CAFE.addPurchasable(new PurchasableRandomMeal(13)); CAFE.addPurchasable(new PurchasableRandomMeal(17)); //Allow the purchasing of cookware at the weekends CAFE.addPurchasable(new PurchasableWeekend(25, new ItemStack(COOKBOOK)).setStock(1).setNote(HFNotes.RECIPE_BOOK)); CAFE.addPurchasable(new PurchasableWeekend(50, UTENSILS.getStackFromEnum(KNIFE)).setStock(1).setNote(HFNotes.KITCHEN_COUNTER)); CAFE.addPurchasable(new PurchasableWeekend(250, COOKWARE.getStackFromEnum(Cookware.COUNTER)).setStock(5).setNote(HFNotes.KITCHEN_COUNTER)); CAFE.addPurchasable(new PurchasableWeekend(3000, COOKWARE.getStackFromEnum(Cookware.FRIDGE)).setStock(1).setNote(HFNotes.FRIDGE)); CAFE.addPurchasable(new PurchasableWeekend(2500, COOKWARE.getStackFromEnum(Cookware.OVEN_OFF)).setStock(1).setNote(HFNotes.OVEN)); CAFE.addPurchasable(new PurchasableWeekend(1500, COOKWARE.getStackFromEnum(Cookware.FRYING_PAN), COOKWARE.getStackFromEnum(OVEN_OFF)).setStock(1).setNote(HFNotes.POTPAN)); CAFE.addPurchasable(new PurchasableWeekend(1000, COOKWARE.getStackFromEnum(Cookware.POT), COOKWARE.getStackFromEnum(OVEN_OFF)).setStock(1).setNote(HFNotes.POTPAN)); CAFE.addPurchasable(new PurchasableWeekend(1200, COOKWARE.getStackFromEnum(Cookware.MIXER)).setStock(1).setNote(HFNotes.MIXER)); //Add recipes for purchase CAFE.addPurchasable(new PurchasableRecipe(SPRING, MONDAY, new ResourceLocation(MODID, "juice_vegetable"))); CAFE.addPurchasable(new PurchasableRecipe(SPRING, TUESDAY, new ResourceLocation(MODID, "sushi"))); CAFE.addPurchasable(new PurchasableRecipe(SPRING, WEDNESDAY, new ResourceLocation(MODID, "sashimi"))); CAFE.addPurchasable(new PurchasableRecipe(SPRING, THURSDAY, new ResourceLocation(MODID, "sashimi_chirashi"))); CAFE.addPurchasable(new PurchasableRecipe(SPRING, FRIDAY, new ResourceLocation(MODID, "cucumber_pickled"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, SATURDAY, new ResourceLocation(MODID, "juice_tomato"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, SUNDAY, new ResourceLocation(MODID, "cornflakes"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, MONDAY, new ResourceLocation(MODID, "ketchup"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, TUESDAY, new ResourceLocation(MODID, "stew_pumpkin"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, WEDNESDAY, new ResourceLocation(MODID, "rice_fried"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, THURSDAY, new ResourceLocation(MODID, "doria"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, FRIDAY, new ResourceLocation(MODID, "juice_fruit"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, SATURDAY, new ResourceLocation(MODID, "salad_herb"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, SUNDAY, new ResourceLocation(MODID, "soup_herb"))); CAFE.addPurchasable(new PurchasableRecipe(SUMMER, SUNDAY, new ResourceLocation(MODID, "sandwich_herb"))); CAFE.addPurchasable(new PurchasableRecipe(AUTUMN, MONDAY, new ResourceLocation(MODID, "sweet_potatoes"))); CAFE.addPurchasable(new PurchasableRecipe(AUTUMN, TUESDAY, new ResourceLocation(MODID, "eggplant_happy"))); CAFE.addPurchasable(new PurchasableRecipe(AUTUMN, WEDNESDAY, new ResourceLocation(MODID, "sandwich"))); CAFE.addPurchasable(new PurchasableRecipe(AUTUMN, THURSDAY, new ResourceLocation(MODID, "sandwich_fruit"))); CAFE.addPurchasable(new PurchasableRecipe(AUTUMN, FRIDAY, new ResourceLocation(MODID, "latte_fruit"))); CAFE.addPurchasable(new PurchasableRecipe(AUTUMN, SATURDAY, new ResourceLocation(MODID, "spinach_boiled"))); CAFE.addPurchasable(new PurchasableRecipe(AUTUMN, SUNDAY, new ResourceLocation(MODID, "riceballs_toasted"))); CAFE.addPurchasable(new PurchasableRecipe(WINTER, MONDAY, new ResourceLocation(MODID, "omelet"))); CAFE.addPurchasable(new PurchasableRecipe(WINTER, TUESDAY, new ResourceLocation(MODID, "egg_boiled"))); CAFE.addPurchasable(new PurchasableRecipe(WINTER, WEDNESDAY, new ResourceLocation(MODID, "egg_overrice"))); CAFE.addPurchasable(new PurchasableRecipe(WINTER, THURSDAY, new ResourceLocation(MODID, "juice_mix"))); CAFE.addPurchasable(new PurchasableRecipe(WINTER, FRIDAY, new ResourceLocation(MODID, "pancake"))); CAFE.addPurchasable(new PurchasableRecipe(WINTER, SATURDAY, new ResourceLocation(MODID, "rice_matsutake"))); CAFE.addPurchasable(new PurchasableRecipe(WINTER, SUNDAY, new ResourceLocation(MODID, "rice_mushroom"))); CAFE.addPurchasable(new PurchasableRecipeShipped(new ResourceLocation(MODID, "juice_grape"), HFCrops.GRAPE)); CAFE.addPurchasable(new PurchasableRecipeShipped(new ResourceLocation(MODID, "juice_apple"), HFCrops.APPLE)); CAFE.addPurchasable(new PurchasableRecipeShipped(new ResourceLocation(MODID, "juice_orange"), HFCrops.ORANGE)); CAFE.addPurchasable(new PurchasableRecipeShipped(new ResourceLocation(MODID, "juice_banana"), HFCrops.BANANA)); CAFE.addPurchasable(new PurchasableRecipeShipped(new ResourceLocation(MODID, "juice_peach"), HFCrops.PEACH)); CAFE.setSpecialRules(new SpecialRulesQuest(Quests.LIARA_MEET)); CAFE.addOpening(MONDAY, 9500, 17000).addOpening(TUESDAY, 9500, 17000).addOpening(WEDNESDAY, 9500, 17000).addOpening(THURSDAY, 9500, 17000); CAFE.addOpening(FRIDAY, 9500, 17000).addOpening(SATURDAY, 9500, 17000).addOpening(SUNDAY, 9500, 17000); } @SuppressWarnings("ConstantConditions") private static void registerCafeKitchen() { KITCHEN.addPurchasable(-50, new ItemStack(Blocks.BROWN_MUSHROOM), 5); KITCHEN.addPurchasable(-10, new ItemStack(Items.SUGAR), 20); KITCHEN.addPurchasable(-25, new ItemStack(Items.CHORUS_FRUIT), 15); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.BREAD)).setStock(4)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.BAKED_POTATO)).setStock(5)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.PUMPKIN_PIE)).setStock(2)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.MUTTON)).setStock(8)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.COOKED_MUTTON)).setStock(4)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.PORKCHOP)).setStock(3)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.COOKED_PORKCHOP)).setStock(4)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.BEEF)).setStock(3)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.COOKED_BEEF)).setStock(4)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.CHICKEN)).setStock(5)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.COOKED_CHICKEN)).setStock(5)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.RABBIT)).setStock(4)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.COOKED_RABBIT)).setStock(5)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.RABBIT_STEW)).setStock(3)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.MUSHROOM_STEW)).setStock(8)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.BEETROOT_SOUP)).setStock(4)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.CAKE)).setStock(4)); KITCHEN.addPurchasable(new PurchasableStock(new ItemStack(Items.COOKIE)).setStock(5)); for (Meal meal: Meal.values()) { if (meal.getUtensil() == null) { ItemStack stack = HFCooking.MEAL.getCreativeStack(meal); if (stack.hasTagCompound() && stack.getTagCompound().hasKey(SELL_VALUE)) { KITCHEN.addPurchasable(new PurchasableStock(stack).setStock(2)); } } } KITCHEN.addOpening(FRIDAY, 6000, 9500).addOpening(FRIDAY, 17000, 20000); HFNPCs.CAFE_GRANNY.setHasInfo(null); //Remove the opening times from the granny, it's a bonus } private static void registerCarpenter() { CARPENTER.addPurchasable(new PurchasableBuilding(0L, HFBuildings.CARPENTER, Logs.of(24))); CARPENTER.addPurchasable(new PurchasableBuilding(5000L, HFBuildings.SUPERMARKET, Logs.of(96), Stone.of(32))); CARPENTER.addPurchasable(new PurchasableBuilding(4000L, HFBuildings.BARN, Logs.of(96))); CARPENTER.addPurchasable(new PurchasableBuilding(3000L, HFBuildings.POULTRY_FARM, Logs.of(96))); CARPENTER.addPurchasable(new PurchasableBuilding(1000L, HFBuildings.FESTIVAL_GROUNDS, Logs.of(16), Saplings.of(4))); CARPENTER.addPurchasable(new PurchasableBuilding(3000L, HFBuildings.MINING_HILL, Logs.of(16))); CARPENTER.addPurchasable(new PurchasableBuilding(9000L, HFBuildings.BLACKSMITH, Logs.of(32), Stone.of(248))); CARPENTER.addPurchasable(new PurchasableBuilding(12000L, HFBuildings.FISHING_HUT, Logs.of(96), Glass.of(16))); CARPENTER.addPurchasable(new PurchasableBuilding(3000L, HFBuildings.FISHING_HOLE, Logs.of(16))); CARPENTER.addPurchasable(new PurchasableBuilding(10000L, HFBuildings.CAFE, Logs.of(200), Stone.of(48), Glass.of(32), Bricks.of(32))); CARPENTER.addPurchasable(new PurchasableBuilding(15000L, HFBuildings.CLOCKMAKER, Logs.of(128), Stone.of(64))); CARPENTER.addPurchasable(new PurchasableBuilding(7000L, HFBuildings.GODDESS_POND, Logs.of(32), Stone.of(64))); CARPENTER.addPurchasable(new PurchasableBuilding(25000L, HFBuildings.CHURCH, Logs.of(160), Stone.of(128), Glass.of(8))); CARPENTER.addPurchasable(new PurchasableBuilding(50000L, HFBuildings.TOWNHALL, Logs.of(640), Stone.of(256), Glass.of(48), Bricks.of(32))); CARPENTER.addPurchasable(new PurchasableMaterials(0L, HFCore.STORAGE.getStackFromEnum(Storage.SHIPPING), Logs.of(8)).addTooltip("storage.shipping").setNote(HFNotes.SHIPPING)); CARPENTER.addPurchasable(new PurchasableMaterials(0L, HFCore.STORAGE.getStackFromEnum(Storage.MAILBOX), Logs.of(4)).addTooltip("storage.mailbox").setNote(HFNotes.MAILBOX)); CARPENTER.addPurchasable(new PurchasableMaterials(0L, HFCrops.SPRINKLER.getStackFromEnum(Sprinkler.OLD), Iron.of(1), Copper.of(5)) { @Override public boolean canList(@Nonnull World world, @Nonnull EntityPlayer player) { CalendarDate date = HFApi.calendar.getDate(world); return (date.getYear() >= 1 || date.getSeason().ordinal() >= 1); } }.addTooltip("sprinkler.old")); CARPENTER.addPurchasable(new PurchasableMaterials(0L, HFCrops.SPRINKLER.getStackFromEnum(Sprinkler.IRON), Adamantite.of(1), Silver.of(5)) { @Override public boolean canList(@Nonnull World world, @Nonnull EntityPlayer player) { return HFApi.quests.hasCompleted(Quests.SELL_SPRINKLER, player); } }.addTooltip("sprinkler.iron")); CARPENTER.addPurchasable(new PurchasableMaterials(500L, HFQuests.QUEST_BLOCK.getStackFromEnum(QuestBlock.BOARD), Logs.of(4), Gold.of(1)) { @Override public boolean canList(@Nonnull World world, @Nonnull EntityPlayer player) { return TownHelper.getClosestTownToEntity(player, false).hasBuilding(HFBuildings.TOWNHALL); } }.setStock(1)); CARPENTER.addPurchasable(new PurchasableMaterials(10, new ItemStack(Blocks.LOG))); CARPENTER.addPurchasable(new PurchasableMaterials(20, new ItemStack(Blocks.STONE))); if (!HFAnimals.CAN_SPAWN) { CARPENTER.addPurchasable(new PurchasableMaterials(500, new ItemStack(Items.BED), Planks.of(3)).setStock(1)); } //Selling things to the carpenter CARPENTER.addPurchasable(-1, new ItemStack(Blocks.LOG)); CARPENTER.addPurchasable(-1, new ItemStack(Blocks.STONE)); if (HFBuildings.ENABLE_DEMOLITION) { //Selling buildings CARPENTER.addPurchasable(new PurchasableDestroy(-10L, HFBuildings.CARPENTER)); CARPENTER.addPurchasable(new PurchasableDestroy(-3000L, HFBuildings.SUPERMARKET)); CARPENTER.addPurchasable(new PurchasableDestroy(-2000L, HFBuildings.BARN)); CARPENTER.addPurchasable(new PurchasableDestroy(-2000L, HFBuildings.POULTRY_FARM)); CARPENTER.addPurchasable(new PurchasableDestroy(-500L, HFBuildings.FESTIVAL_GROUNDS)); CARPENTER.addPurchasable(new PurchasableDestroy(-2000L, HFBuildings.MINING_HILL)); CARPENTER.addPurchasable(new PurchasableDestroy(-5000L, HFBuildings.BLACKSMITH)); CARPENTER.addPurchasable(new PurchasableDestroy(-6000L, HFBuildings.FISHING_HUT)); CARPENTER.addPurchasable(new PurchasableDestroy(-2000L, HFBuildings.FISHING_HOLE)); CARPENTER.addPurchasable(new PurchasableDestroy(-5000L, HFBuildings.CAFE)); CARPENTER.addPurchasable(new PurchasableDestroy(-10000L, HFBuildings.CLOCKMAKER)); CARPENTER.addPurchasable(new PurchasableDestroy(-5000L, HFBuildings.GODDESS_POND)); CARPENTER.addPurchasable(new PurchasableDestroy(-15000L, HFBuildings.CHURCH)); CARPENTER.addPurchasable(new PurchasableDestroy(-30000L, HFBuildings.TOWNHALL)); } CARPENTER.setSpecialRules(new SpecialRulesQuest(Quests.YULIF_MEET)); CARPENTER.addOpening(MONDAY, 9000, 17500).addOpening(TUESDAY, 9000, 17500).addOpening(WEDNESDAY, 9000, 17500); CARPENTER.addOpening(THURSDAY, 9000, 17500).addOpening(FRIDAY, 9000, 17500).addOpening(SUNDAY, 9000, 17500); } private static void registerClockmaker() { CLOCKMAKER.addPurchasable(500, new ItemStack(Items.CLOCK)); CLOCKMAKER.addPurchasable(150, new ItemStack(Items.COMPASS)); CLOCKMAKER.addPurchasable(100, new ItemStack(Items.MAP)); CLOCKMAKER.addPurchasable(750, HFKnowledge.BOOK.getStackFromEnum(Book.CALENDAR)); CLOCKMAKER.addOpening(MONDAY, 8000, 15000).addOpening(TUESDAY, 8000, 15000).addOpening(WEDNESDAY, 8000, 15000) .addOpening(THURSDAY, 8000, 15000).addOpening(FRIDAY, 8000, 15000); } private static void registerMiner() { MINER.addPurchasable(40, new ItemStack(Blocks.TORCH), 160); MINER.addPurchasable(250, HFMining.MINING_TOOL.getStackFromEnum(MiningTool.ESCAPE_ROPE), 10); MINER.addPurchasable(1000, HFMining.LADDER.getStackFromEnum(Ladder.DECORATIVE), 3); MINER.addPurchasable(new PurchasableObtainedMaterial(200, HFMining.MINING_TOOL.getStackFromEnum(MiningTool.ELEVATOR_CABLE, 8), Copper.of(1))); MINER.addPurchasable(new PurchasableObtainedMaterial(1000, HFMining.ELEVATOR.getStackFromEnum(Elevator.JUNK), Logs.of(3), Copper.of(2), Adamantite.of(1)).setNote(HFNotes.ELEVATOR)); MINER.addPurchasable(new PurchasableObtained(100, HFMining.MATERIALS.getStackFromEnum(Material.COPPER))); MINER.addPurchasable(new PurchasableObtained(200, HFMining.MATERIALS.getStackFromEnum(Material.SILVER))); MINER.addPurchasable(new PurchasableObtained(400, HFMining.MATERIALS.getStackFromEnum(Material.GOLD))); MINER.addPurchasable(new PurchasableOre(150, new ItemStack(Items.COAL))); MINER.addPurchasable(new PurchasableOre(300, new ItemStack(Items.IRON_INGOT))); MINER.addPurchasable(new PurchasableOre(500, new ItemStack(Items.GOLD_INGOT))); //Selling things to the mine MINER.addPurchasable(-10, new ItemStack(Items.COAL, 1, 1), 10); MINER.addPurchasable(-6, new ItemStack(Items.GOLD_NUGGET), 10); MINER.addPurchasable(-10, new ItemStack(Items.COAL), 10); MINER.addPurchasable(-20, new ItemStack(Items.QUARTZ), 10); MINER.addPurchasable(-40, new ItemStack(Items.IRON_INGOT), 8); MINER.addPurchasable(-60, new ItemStack(Items.GOLD_INGOT), 5); MINER.setSpecialRules(new SpecialRulesQuest(Quests.BRANDON_MEET)); MINER.addOpening(MONDAY, 11000, 16000).addOpening(TUESDAY, 11000, 16000).addOpening(WEDNESDAY, 11000, 16000); MINER.addOpening(THURSDAY, 11000, 16000).addOpening(FRIDAY, 11000, 16000).addOpening(SATURDAY, 11000, 16000); } private static void registerPoultry() { POULTRY.addPurchasable(new Purchasable(50, HFAnimals.TOOLS.getStackFromEnum(CHICKEN_FEED)).addTooltip("tool.chicken.feed")); POULTRY.addPurchasable(10, HFAnimals.TREATS.getStackFromEnum(Treat.GENERIC)); POULTRY.addPurchasable(30, HFAnimals.TREATS.getStackFromEnum(Treat.CHICKEN)); POULTRY.addPurchasable(new PurchasableEntity(EntityHarvestChicken.class, 1500, HFAnimals.ANIMAL.getStackFromEnum(CHICKEN)).setNote(HFNotes.CHICKEN_CARE)); POULTRY.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(MEDICINE)); POULTRY.addPurchasable(250, new ItemStack(Items.NAME_TAG)); POULTRY.addPurchasable(500, HFAnimals.TRAY.getStackFromEnum(FEEDER_EMPTY)); POULTRY.addPurchasable(1000, HFAnimals.TRAY.getStackFromEnum(NEST_EMPTY)); POULTRY.addPurchasable(5000, HFAnimals.SIZED.getStackFromEnum(INCUBATOR)); POULTRY.setSpecialRules(new SpecialRulesQuest(Quests.ASHLEE_MEET)); POULTRY.addOpening(MONDAY, 6000, 12000).addOpening(TUESDAY, 6000, 12000).addOpening(WEDNESDAY, 6000, 12000); POULTRY.addOpening(THURSDAY, 6000, 12000).addOpening(FRIDAY, 6000, 12000).addOpening(SATURDAY, 6000, 12000); } private static void registerSupermarket() { Crop.REGISTRY.values().stream().filter(crop -> crop != Crop.NULL_CROP && crop.getSeedCost() > 0) .forEachOrdered(crop -> SUPERMARKET.addPurchasable(new PurchasableCropSeeds(crop))); SUPERMARKET.addPurchasable(500, HFTools.HOE.getStack(ToolTier.BASIC), 1); SUPERMARKET.addPurchasable(500, HFTools.SICKLE.getStack(ToolTier.BASIC), 1); SUPERMARKET.addPurchasable(750, HFTools.WATERING_CAN.getStack(ToolTier.BASIC), 1); SUPERMARKET.addPurchasable(new Purchasable(1000, HFTools.AXE.getStack(ToolTier.BASIC)).setStock(1).setNote(HFNotes.AXE)); SUPERMARKET.addPurchasable(new Purchasable(1000, HFTools.HAMMER.getStack(ToolTier.BASIC)).setStock(1).setNote(HFNotes.HAMMER)); //TODO: Reenable in 1.0 when I readd marriage //SUPERMARKET.addPurchasable(new PurchasableBlueFeather(1000, HFNPCs.TOOLS.getStackFromEnum(BLUE_FEATHER))); SUPERMARKET.addPurchasable(RICEBALL.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(RICEBALL)); SUPERMARKET.addPurchasable(OIL.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(OIL)); SUPERMARKET.addPurchasable(FLOUR.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(FLOUR)); SUPERMARKET.addPurchasable(CURRY_POWDER.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(CURRY_POWDER)); //SUPERMARKET.addPurchasable(DUMPLING_POWDER.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(DUMPLING_POWDER)); SUPERMARKET.addPurchasable(CHOCOLATE.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(CHOCOLATE)); SUPERMARKET.addPurchasable(WINE.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(WINE)); SUPERMARKET.addPurchasable(SALT.getCost(), HFCooking.INGREDIENTS.getStackFromEnum(SALT)); SUPERMARKET.addPurchasable(SALT.getCost(), new ItemStack(Items.SUGAR)); SUPERMARKET.setSpecialRules(new SpecialRulesQuest(Quests.JENNI_MEET)); SUPERMARKET.addOpening(MONDAY, 9000, 17000).addOpening(TUESDAY, 9000, 17000).addOpening(THURSDAY, 9000, 17000); SUPERMARKET.addOpening(FRIDAY, 9000, 17000).addOpening(SATURDAY, 11000, 15000); SUPERMARKET.addConditionalOpening((w,e,i) -> TownHelper.getClosestTownToEntity(e, false).getQuests().getFinished().contains(Quests.OPEN_WEDNESDAYS), WEDNESDAY, 9000, 17000); } private static void registerTackleshop() { BAITSHOP.addPurchasable(new Purchasable(Junk.BAIT.getCost(), HFFishing.JUNK.getStackFromEnum(Junk.BAIT)).addTooltip("junk.bait")); BAITSHOP.addPurchasable(1000L, HFFishing.FISHING_ROD.getStack(ToolTier.BASIC), 1); BAITSHOP.addPurchasable(new Purchasable(500L, HFFishing.AQUATIC_BLOCKS.getStackFromEnum(Aquatic.TRAP)).setStock(10).addTooltip("aquatic.trap")); BAITSHOP.addPurchasable(new PurchasableMaterials(0L, HFFishing.FLOATING_BLOCKS.getStackFromEnum(Floating.HATCHERY), Logs.of(8), String.of(6)) { @Override public boolean canList(@Nonnull World world, @Nonnull EntityPlayer player) { return HFApi.quests.hasCompleted(Quests.SELL_HATCHERY, player); } }.setStock(1).addTooltip("floating.hatchery")); //Selling things to the carpenter BAITSHOP.addPurchasable(-100, new ItemStack(Items.PRISMARINE_SHARD), 5); BAITSHOP.addPurchasable(-150, new ItemStack(Items.PRISMARINE_CRYSTALS), 3); BAITSHOP.addPurchasable(-10, new ItemStack(Items.FISH, 1, 0), 20); BAITSHOP.addPurchasable(-30, new ItemStack(Items.FISH, 1, 1), 15); BAITSHOP.addPurchasable(-50, new ItemStack(Items.FISH, 1, 2), 10); BAITSHOP.addPurchasable(-100, new ItemStack(Items.FISH, 1, 3), 5); for (Fish fish: Fish.values()) { long sell = (fish.getSellValue(fish.getLengthFromSizeOfFish(MEDIUM_FISH))) - fish.getSellValue(fish.getLengthFromSizeOfFish(MEDIUM_FISH)) % 10; BAITSHOP.addPurchasable(new PurchasableObtained(-sell, HFFishing.FISH.getStackFromEnum(fish)).setStock(100)); } BAITSHOP.setSpecialRules(new SpecialRulesQuest(Quests.JACOB_MEET)); BAITSHOP.addOpening(TUESDAY, 13000, 19000).addOpening(WEDNESDAY, 13000, 19000).addOpening(THURSDAY, 13000, 19000).addOpening(FRIDAY, 13000, 19000); } private static void registerTrader() { TRADER.addPurchasable(Material.COIN_GOLD.getSellValue(), HFMining.MATERIALS.getStackFromEnum(Material.COIN_GOLD)); TRADER.addPurchasable(Material.COIN_SILVER.getSellValue(), HFMining.MATERIALS.getStackFromEnum(Material.COIN_SILVER)); TRADER.addPurchasable(Material.COIN_COPPER.getSellValue(), HFMining.MATERIALS.getStackFromEnum(Material.COIN_COPPER)); TRADER.addPurchasable(new PurchasableTrade(new ItemStack(Items.EGG), Sizeable.EGG)); TRADER.addPurchasable(new PurchasableTrade(new ItemStack(Blocks.WOOL), Sizeable.WOOL)); TRADER.addPurchasable(new PurchasableTrade(new ItemStack(Items.MILK_BUCKET), Sizeable.MILK)); TRADER.addPurchasable(-60, new ItemStack(Items.MILK_BUCKET), 3);TRADER.addPurchasable(-30, new ItemStack(Items.EGG), 10); TRADER.addPurchasable(-150, new ItemStack(Items.LEATHER), 3); TRADER.addPurchasable(-50, new ItemStack(Items.FEATHER), 8); TRADER.addPurchasable(-80, new ItemStack(Items.RABBIT_HIDE), 5); TRADER.addPurchasable(-20, new ItemStack(Items.STRING), 10); for (int i = 0; i < 16; i++) { TRADER.addPurchasable(-150, new ItemStack(Blocks.WOOL, 1, 0), 3); } TRADER.addOpening(MONDAY, 6000, 10000).addOpening(TUESDAY, 6000, 10000).addOpening(WEDNESDAY, 6000, 10000).addOpening(THURSDAY, 6000, 10000); TRADER.addOpening(FRIDAY, 6000, 10000).addOpening(SATURDAY, 6000, 10000).addOpening(SUNDAY, 6000, 10000); } private static void registerCooking() { COOKING_FESTIVAL_FOOD.addPurchasable(new Purchasable(5000L, HFCore.STORAGE.getStackFromEnum(Storage.BASKET)).setNote(HFNotes.SHIPPING_BASKET)); COOKING_FESTIVAL_FOOD.addPurchasable(50, new ItemStack(Items.FISH)); COOKING_FESTIVAL_FOOD.addPurchasable(100, HFGathering.NATURE.getStackFromEnum(NaturalBlock.MINT)); COOKING_FESTIVAL_FOOD.addPurchasable(150, HFGathering.NATURE.getStackFromEnum(NaturalBlock.CHAMOMILE)); COOKING_FESTIVAL_FOOD.addPurchasable(200, HFGathering.NATURE.getStackFromEnum(NaturalBlock.LAVENDER)); COOKING_FESTIVAL_FOOD.addPurchasable(700, HFGathering.NATURE.getStackFromEnum(NaturalBlock.MATSUTAKE)); COOKING_FESTIVAL_FOOD.addPurchasable(150, new ItemStack(Blocks.BROWN_MUSHROOM)); COOKING_FESTIVAL_FOOD.addPurchasable(300, HFAnimals.ANIMAL_PRODUCT.getStack(Sizeable.EGG, Size.SMALL)); COOKING_FESTIVAL_FOOD.addPurchasable(500, HFAnimals.ANIMAL_PRODUCT.getStack(Sizeable.MILK, Size.SMALL)); COOKING_FESTIVAL_FOOD.addPurchasable(HFCrops.WHEAT.getSellValue() * 4, new ItemStack(Items.BREAD)); COOKING_FESTIVAL_FOOD.addPurchasable(new PurchasableCrop(HFCrops.CUCUMBER)); COOKING_FESTIVAL_FOOD.addPurchasable(new PurchasableCrop(HFCrops.TOMATO)); COOKING_FESTIVAL_FOOD.addPurchasable(new PurchasableCrop(HFCrops.ONION)); COOKING_FESTIVAL_FOOD.addPurchasable(new PurchasableCrop(HFCrops.CORN)); COOKING_FESTIVAL_FOOD.addPurchasable(new PurchasableCrop(HFCrops.EGGPLANT)); COOKING_FESTIVAL_FOOD.addPurchasable(new PurchasableCrop(HFCrops.SPINACH)); COOKING_FESTIVAL_FOOD.addPurchasable(new PurchasableCrop(HFCrops.SWEET_POTATO)); } private static void registerRecipes() { COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "juice_vegetable"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "sushi"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "sashimi"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "sashimi_chirashi"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "cucumber_pickled"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "juice_tomato"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "cornflakes"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "ketchup"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "stew_pumpkin"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "rice_fried"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "doria"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "juice_fruit"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "salad_herb"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "soup_herb"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "sandwich_herb"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "sweet_potatoes"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "eggplant_happy"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "sandwich"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "sandwich_fruit"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "latte_fruit"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "spinach_boiled"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "riceballs_toasted"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "omelet"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "egg_boiled"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "egg_overrice"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "juice_mix"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "pancake"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "rice_matsutake"))); COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, "rice_mushroom"))); //Add all the recipes the player has learnt from friendship to the list for (Quest quest: Quest.REGISTRY) { if (quest instanceof QuestRecipe) { for (java.lang.String recipe : ((QuestRecipe) quest).recipe) { COOKING_FESTIVAL_RECIPES.addPurchasable(new PurchasableRecipe(new ResourceLocation(MODID, recipe)) { @Override public boolean canList(@Nonnull World world, @Nonnull EntityPlayer player) { return HFApi.quests.hasCompleted(quest, player); } }.setStock(1)); } } } } private static void registerCowBargains() { COW_FESTIVAL_BARGAINS.addPurchasable(100, HFAnimals.TREATS.getStackFromEnum(Treat.COW, 16)); COW_FESTIVAL_BARGAINS.addPurchasable(500, HFCrops.GRASS.getCropStack(16)); COW_FESTIVAL_BARGAINS.addPurchasable(1000, HFAnimals.TROUGH.getStackFromEnum(Trough.WOOD, 3)); COW_FESTIVAL_BARGAINS.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(Tool.MEDICINE, 2)); COW_FESTIVAL_BARGAINS.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(Tool.MIRACLE_POTION)); COW_FESTIVAL_BARGAINS.addPurchasable(500, HFAnimals.TOOLS.getStackFromEnum(Tool.BRUSH)); COW_FESTIVAL_BARGAINS.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(Tool.MILKER)); COW_FESTIVAL_BARGAINS.addPurchasable(100, new ItemStack(Items.NAME_TAG)); } private static void registerDairyQueen() { COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(150, new ResourceLocation(MODID, "ice_cream")).setStock(20)); COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(100, new ResourceLocation(MODID, "milk_hot")).setStock(20)); COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(120, new ResourceLocation(MODID, "chocolate_hot")).setStock(10)); COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(50, new ResourceLocation(MODID, "cornflakes")).setStock(10)); COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(200, new ResourceLocation(MODID, "dinnerroll")).setStock(5)); COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(150, new ResourceLocation(MODID, "bun_jam")).setStock(5)); COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(300, new ResourceLocation(MODID, "doughnut")).setStock(5)); COW_FESTIVAL_DAIRY_QUEEN.addPurchasable(new PurchasableMeal(140, new ResourceLocation(MODID, "milk_strawberry")).setStock(8)); } private static void registerSaleSheep() { SHEEP_FESTIVAL_SALE.addPurchasable(100, HFAnimals.TREATS.getStackFromEnum(Treat.SHEEP, 16)); SHEEP_FESTIVAL_SALE.addPurchasable(500, HFCrops.GRASS.getCropStack(16)); SHEEP_FESTIVAL_SALE.addPurchasable(1000, HFAnimals.TROUGH.getStackFromEnum(Trough.WOOD, 3)); SHEEP_FESTIVAL_SALE.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(Tool.MEDICINE, 2)); SHEEP_FESTIVAL_SALE.addPurchasable(1000, HFAnimals.TOOLS.getStackFromEnum(Tool.MIRACLE_POTION)); SHEEP_FESTIVAL_SALE.addPurchasable(500, HFAnimals.TOOLS.getStackFromEnum(Tool.BRUSH)); SHEEP_FESTIVAL_SALE.addPurchasable(1000, new ItemStack(Items.SHEARS)); SHEEP_FESTIVAL_SALE.addPurchasable(100, new ItemStack(Items.NAME_TAG)); } public static ItemStack getWoolyArmor(Item item, java.lang.String name) { ItemStack stack = new ItemStack(item); stack.setStackDisplayName(name); ((ItemArmor)item).setColor(stack, 0xFFFFFF); return stack; } private static void registerGrannysKnits() { SHEEP_FESTIVAL_KNITTNG.addPurchasable(50, new ItemStack(Items.STRING), 16); SHEEP_FESTIVAL_KNITTNG.addPurchasable(200, new ItemStack(Blocks.WOOL), 16); SHEEP_FESTIVAL_KNITTNG.addPurchasable(500, getWoolyArmor(Items.LEATHER_HELMET, "Wooly Hat"), 1); SHEEP_FESTIVAL_KNITTNG.addPurchasable(800, getWoolyArmor(Items.LEATHER_CHESTPLATE, "Wooly Coat"), 1); SHEEP_FESTIVAL_KNITTNG.addPurchasable(700, getWoolyArmor(Items.LEATHER_LEGGINGS, "Wooly Pants"), 1); SHEEP_FESTIVAL_KNITTNG.addPurchasable(400, getWoolyArmor(Items.LEATHER_BOOTS, "Wooly Boots"), 1); SHEEP_FESTIVAL_KNITTNG.addPurchasable(300, new ItemStack(Items.COOKED_MUTTON), 20); } private static void registerMinecraftFriedChicken() { CHICKEN_FESTIVAL_MFC.addPurchasable(250, new ItemStack(Items.COOKED_CHICKEN), 20); CHICKEN_FESTIVAL_MFC.addPurchasable(new PurchasableMeal(150, new ResourceLocation(MODID, "fries_french")).setStock(20)); CHICKEN_FESTIVAL_MFC.addPurchasable(new PurchasableMeal(0, new ResourceLocation(MODID, "ketchup")).setStock(20)); CHICKEN_FESTIVAL_MFC.addPurchasable(new PurchasableMeal(50, new ResourceLocation(MODID, "egg_boiled")).setStock(5)); CHICKEN_FESTIVAL_MFC.addPurchasable(new PurchasableMeal(100, new ResourceLocation(MODID, "egg_scrambled")).setStock(5)); CHICKEN_FESTIVAL_MFC.addPurchasable(new PurchasableMeal(200, new ResourceLocation(MODID, "juice_orange")).setStock(8)); CHICKEN_FESTIVAL_MFC.addPurchasable(new PurchasableMeal(100, new ResourceLocation(MODID, "juice_apple")).setStock(8)); } private static Shop newHolidayShop(ResourceLocation resource, @Nullable NPC npc, Festival festival) { Shop shop = new Shop(resource).setOpensOnHolidays(); if (npc != null) { if (npc instanceof NPCHolidayStore) ((NPCHolidayStore)npc).addHolidayShop(festival, shop); else if (npc instanceof NPCHolidayStoreSpecial) ((NPCHolidayStoreSpecial)npc).addHolidayShop(festival, shop); } return shop.addOpening(MONDAY, 6000, 18000).addOpening(TUESDAY, 6000, 18000).addOpening(WEDNESDAY, 6000, 18000).addOpening(THURSDAY, 6000, 18000).addOpening(FRIDAY, 6000, 18000).addOpening(SATURDAY, 6000, 18000).addOpening(SUNDAY, 6000, 18000); } private static Shop newShop(ResourceLocation resource, @Nullable NPC npc) { Shop shop = new Shop(resource); if (npc != null) { npc.setShop(shop); } return shop; } public static boolean TWENTY_FOUR_HOUR_SHOPPING; public static void configure() { TWENTY_FOUR_HOUR_SHOPPING = getBoolean("Shops are open all the time", false); } }