package joshie.harvest.mining; import joshie.harvest.HarvestFestival; import joshie.harvest.animals.render.ModelHarvestChicken; import joshie.harvest.animals.render.ModelHarvestCow; import joshie.harvest.animals.render.ModelHarvestSheep; import joshie.harvest.api.HFApi; import joshie.harvest.api.mining.MiningContext; import joshie.harvest.core.helpers.RegistryHelper; import joshie.harvest.core.lib.EntityIDs; import joshie.harvest.core.util.annotations.HFLoader; import joshie.harvest.mining.block.*; import joshie.harvest.mining.block.BlockOre.Ore; import joshie.harvest.mining.entity.EntityDarkChick; import joshie.harvest.mining.entity.EntityDarkChicken; import joshie.harvest.mining.entity.EntityDarkCow; import joshie.harvest.mining.entity.EntityDarkSheep; import joshie.harvest.mining.gen.MiningProvider; import joshie.harvest.mining.item.ItemDarkDrop; import joshie.harvest.mining.item.ItemDarkDrop.DarkDrop; import joshie.harvest.mining.item.ItemDarkSpawner; import joshie.harvest.mining.item.ItemDarkSpawner.DarkSpawner; import joshie.harvest.mining.item.ItemMaterial; import joshie.harvest.mining.item.ItemMaterial.Material; import joshie.harvest.mining.item.ItemMiningTool; import joshie.harvest.mining.loot.*; import joshie.harvest.mining.render.*; import joshie.harvest.mining.tile.TileElevator; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.DimensionType; import net.minecraft.world.storage.loot.conditions.LootConditionManager; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.oredict.OreDictionary; import static joshie.harvest.api.calendar.Season.*; import static joshie.harvest.core.HFCore.FLOWERS; import static joshie.harvest.core.HFTab.MINING; import static joshie.harvest.core.block.BlockFlower.FlowerType.WEED; import static joshie.harvest.core.helpers.ConfigHelper.getBoolean; import static joshie.harvest.core.helpers.ConfigHelper.getInteger; import static joshie.harvest.core.helpers.RegistryHelper.registerOreIfNotExists; import static joshie.harvest.core.helpers.RegistryHelper.registerTiles; import static joshie.harvest.mining.MiningHelper.*; import static net.minecraft.init.Items.DIAMOND; import static net.minecraft.init.Items.EMERALD; import static net.minecraftforge.fml.common.registry.EntityRegistry.registerModEntity; @HFLoader public class HFMining { public static final BlockOre ORE = new BlockOre().register("ore"); public static final BlockStone STONE = new BlockStone().register("stone"); public static final BlockDirt DIRT = new BlockDirt().setBlockUnbreakable().setResistance(6000000.0F).register("dirt"); public static final BlockDirt DIRT_DECORATIVE = new BlockDirt().setHardness(0.5F).register("dirt_decorative"); public static final BlockLadder LADDER = new BlockLadder().register("ladder"); public static final BlockPortal PORTAL = new BlockPortal().setBlockUnbreakable().register("portal"); public static final BlockElevator ELEVATOR = new BlockElevator().setBlockUnbreakable().register("elevator"); public static final ItemMaterial MATERIALS = new ItemMaterial().register("materials"); public static final ItemDarkSpawner DARK_SPAWNER = new ItemDarkSpawner().register("dark_spawner"); public static final ItemDarkDrop DARK_DROP = new ItemDarkDrop().register("dark_drop"); public static final ItemMiningTool MINING_TOOL = new ItemMiningTool().register("tool_mining"); public static DimensionType MINE_WORLD; public static void preInit() { MINE_WORLD = DimensionType.register("The Mine", "_hf_mine", MINING_ID, MiningProvider.class, false); DimensionManager.registerDimension(MINING_ID, MINE_WORLD); registerModEntity(EntityDarkCow.class, "dark_cow", EntityIDs.DARK_COW, HarvestFestival.instance, 80, 3, true); registerModEntity(EntityDarkSheep.class, "dark_sheep", EntityIDs.DARK_SHEEP, HarvestFestival.instance, 80, 3, true); registerModEntity(EntityDarkChicken.class, "dark_chicken", EntityIDs.DARK_CHICKEN, HarvestFestival.instance, 80, 3, true); registerModEntity(EntityDarkChick.class, "dark_chick", EntityIDs.DARK_CHICK, HarvestFestival.instance, 80, 3, true); OreDictionary.registerOre("feather", DARK_DROP.getStackFromEnum(DarkDrop.FEATHER)); OreDictionary.registerOre("leather", DARK_DROP.getStackFromEnum(DarkDrop.LEATHER)); registerTiles(TileElevator.class); LootConditionManager.registerCondition(new From.Serializer()); LootConditionManager.registerCondition(new Between.Serializer()); LootConditionManager.registerCondition(new Between100.Serializer()); LootConditionManager.registerCondition(new EndsIn.Serializer()); LootConditionManager.registerCondition(new Exact.Serializer()); LootConditionManager.registerCondition(new MultipleOf.Serializer()); LootConditionManager.registerCondition(new Obtained.Serializer()); LootConditionManager.registerCondition(new Seasonal.Serializer()); registerOreIfNotExists("gemRuby", MATERIALS.getStackFromEnum(Material.RUBY)); registerOreIfNotExists("gemTopaz", MATERIALS.getStackFromEnum(Material.TOPAZ)); registerOreIfNotExists("gemAmethyst", MATERIALS.getStackFromEnum(Material.AMETHYST)); registerSellable(DIAMOND, 100L); registerSellable(EMERALD, 80L); } @SideOnly(Side.CLIENT) public static void preInitClient() { ModelLoader.setCustomStateMapper(DIRT, new BakedDirt.StateMapper()); ModelLoader.setCustomStateMapper(DIRT_DECORATIVE, new BakedDirt.StateMapper()); RenderingRegistry.registerEntityRenderingHandler(EntityDarkCow.class, RenderDarkCow:: new); RenderingRegistry.registerEntityRenderingHandler(EntityDarkSheep.class, RenderDarkSheep:: new); RenderingRegistry.registerEntityRenderingHandler(EntityDarkChicken.class, RenderDarkChicken:: new); RenderingRegistry.registerEntityRenderingHandler(EntityDarkChick.class, RenderDarkChick:: new); //Register the dark spawner RegistryHelper.registerEntityRenderer(DARK_SPAWNER, FakeAnimalsItemRenderer.INSTANCE); FakeAnimalsItemRenderer.INSTANCE.register(DarkSpawner.COW, "dark_cow", new ModelHarvestCow.Adult()); FakeAnimalsItemRenderer.INSTANCE.register(DarkSpawner.SHEEP, "dark_sheep", new ModelHarvestSheep.Wooly()); FakeAnimalsItemRenderer.INSTANCE.register(DarkSpawner.CHICKEN, "dark_chicken", new ModelHarvestChicken.Adult()); FakeAnimalsItemRenderer.INSTANCE.register(DarkSpawner.CHICK, "dark_chick", new ModelHarvestChicken.Child()); } public static void init() { HFApi.npc.getGifts().addToBlacklist(DARK_SPAWNER, MINING_TOOL, DIRT, DIRT_DECORATIVE, STONE, LADDER, PORTAL, ORE); //Spring, Summer, Autumn values MiningContext copper = new MiningContext(COPPER_FLOOR); MiningContext silver = new MiningContext(SILVER_FLOOR); MiningContext gold = new MiningContext(GOLD_FLOOR); MiningContext mystril = new MiningContext(MYSTRIL_FLOOR); HFApi.mining.registerOre(copper, FLOWERS.getStateFromEnum(WEED), 40D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(copper, ORE.getStateFromEnum(Ore.ROCK), 100D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(copper, ORE.getStateFromEnum(Ore.COPPER), 6D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(copper, ORE.getStateFromEnum(Ore.AMETHYST), 6D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(silver, ORE.getStateFromEnum(Ore.SILVER), 7D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(silver, ORE.getStateFromEnum(Ore.TOPAZ), 5D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(gold, ORE.getStateFromEnum(Ore.GOLD), 8D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(gold, ORE.getStateFromEnum(Ore.RUBY), 6D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(gold, ORE.getStateFromEnum(Ore.JADE), 5D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(mystril, ORE.getStateFromEnum(Ore.EMERALD), 4D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(mystril, ORE.getStateFromEnum(Ore.MYSTRIL), 5D, SPRING, SUMMER, AUTUMN); HFApi.mining.registerOre(mystril, ORE.getStateFromEnum(Ore.DIAMOND), 3D, SPRING, SUMMER, AUTUMN); //Winter values HFApi.mining.registerOre(copper, ORE.getStateFromEnum(Ore.ROCK), 110D, WINTER); HFApi.mining.registerOre(copper, ORE.getStateFromEnum(Ore.COPPER), 9D, WINTER); HFApi.mining.registerOre(copper, ORE.getStateFromEnum(Ore.GEM), 5D, WINTER); HFApi.mining.registerOre(copper, ORE.getStateFromEnum(Ore.AMETHYST), 6D, WINTER); HFApi.mining.registerOre(silver, ORE.getStateFromEnum(Ore.SILVER), 10D, WINTER); HFApi.mining.registerOre(silver, ORE.getStateFromEnum(Ore.TOPAZ), 6D, WINTER); HFApi.mining.registerOre(gold, ORE.getStateFromEnum(Ore.GOLD), 10D, WINTER); HFApi.mining.registerOre(gold, ORE.getStateFromEnum(Ore.RUBY), 7D, WINTER); HFApi.mining.registerOre(mystril, ORE.getStateFromEnum(Ore.JADE), 5D, WINTER); HFApi.mining.registerOre(mystril, ORE.getStateFromEnum(Ore.EMERALD), 4D, WINTER); HFApi.mining.registerOre(mystril, ORE.getStateFromEnum(Ore.MYSTRIL), 5D, WINTER); HFApi.mining.registerOre(mystril, ORE.getStateFromEnum(Ore.DIAMOND), 3D, WINTER); } private static void registerSellable(Item item, long value) { HFApi.shipping.registerSellable(new ItemStack(item), value); item.setCreativeTab(MINING); } public static int MINING_ID; public static boolean ANIMALS_ON_EVERY_FLOOR; public static void configure() { MINING_ID = getInteger("Mining world ID", 4); ANIMALS_ON_EVERY_FLOOR = getBoolean("Spawn dark animals on every floor instead of hordes", false); } }