Search in sources :

Example 1 with Metal

use of net.dries007.tfc.api.types.Metal in project firmalife by eerussianguy.

the class UnmoldRecipeFL method matches.

public boolean matches(@Nonnull InventoryCrafting inv, @Nonnull World world) {
    boolean foundMold = false;
    for (int slot = 0; slot < inv.getSizeInventory(); ++slot) {
        ItemStack stack = inv.getStackInSlot(slot);
        if (!stack.isEmpty()) {
            if (!(stack.getItem() instanceof ItemMetalMalletMold)) {
                return false;
            }
            ItemMetalMalletMold moldItem = (ItemMetalMalletMold) stack.getItem();
            IFluidHandler cap = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null);
            if (!(cap instanceof IMoldHandler)) {
                return false;
            }
            IMoldHandler moldHandler = (IMoldHandler) cap;
            if (moldHandler.isMolten()) {
                return false;
            }
            Metal metal = moldHandler.getMetal();
            if (metal == null || !moldItem.getToolName().equals(this.type) || foundMold) {
                return false;
            }
            foundMold = true;
        }
    }
    return foundMold;
}
Also used : IMoldHandler(net.dries007.tfc.api.capability.IMoldHandler) Metal(net.dries007.tfc.api.types.Metal) ItemStack(net.minecraft.item.ItemStack) ItemMetalMalletMold(com.eerussianguy.firmalife.items.ItemMetalMalletMold) IFluidHandler(net.minecraftforge.fluids.capability.IFluidHandler)

Example 2 with Metal

use of net.dries007.tfc.api.types.Metal in project firmalife by eerussianguy.

the class ItemsFL method registerItems.

@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
    IForgeRegistry<Item> r = event.getRegistry();
    ImmutableList.Builder<Item> easyItems = ImmutableList.builder();
    ImmutableList.Builder<ItemFruitDoor> fruitDoors = ImmutableList.builder();
    ImmutableList.Builder<Item> unu = ImmutableList.builder();
    for (FoodFL food : FoodFL.values()) {
        FoodData data = food.getData();
        ItemFoodFL foodItem = new ItemFoodFL(data);
        easyItems.add(register(r, food.name().toLowerCase(), foodItem, CT_FOOD));
        OreDictionary.registerOre(convert(food.name()), foodItem);
        String[] nameOverrides = food.getNameOverrides();
        if (nameOverrides != null) {
            for (String name : nameOverrides) OreDictionary.registerOre(name, foodItem);
        } else if (!food.isReplacingOres()) {
            addCategories(foodItem, data);
        }
        foods.put(food, foodItem);
    }
    easyItems.add(register(r, "unfired_mallet_mold", new ItemPottery(), CT_POTTERY));
    malletMold = register(r, "mallet_mold", new ItemMetalMalletMold("mallet"), CT_POTTERY);
    ItemDriedPineapple dryPineapple = new ItemDriedPineapple();
    easyItems.add(register(r, "dried_pineapple", dryPineapple, CT_FOOD));
    OreDictionary.registerOre("dried_pineapple", dryPineapple);
    ItemTrailMix trailMix = new ItemTrailMix();
    easyItems.add(register(r, "trail_mix", trailMix, CT_FOOD));
    OreDictionary.registerOre("categoryMeal", trailMix);
    ItemPizza pizza = new ItemPizza();
    easyItems.add(register(r, "finished_pizza", pizza, CT_FOOD));
    OreDictionary.registerOre("categoryMeal", pizza);
    // Dried Berries
    for (Fruit fruit : Fruit.values()) {
        if (fruit.canDry()) {
            ItemFoodFL dried = new ItemFoodFL(fruit.getDriedData());
            easyItems.add(register(r, "dried_" + fruit.name().toLowerCase(), dried, CT_FOOD));
            OreDictionary.registerOre("dried_" + fruit.name().toLowerCase(), dried);
            OreDictionary.registerOre("fruitDry", dried);
            OreDictionary.registerOre("categoryFruit", dried);
            driedFruits.put(fruit, dried);
        }
    }
    for (String grain : new String[] { "barley", "corn", "oat", "rice", "rye", "wheat" }) {
        ItemFoodFL flatbread_dough = new ItemFoodFL(FoodDataFL.DOUGH);
        easyItems.add(register(r, grain + "_flatbread_dough", flatbread_dough, CT_FOOD));
        OreDictionary.registerOre(grain + "_flatbread_dough", flatbread_dough);
        OreDictionary.registerOre("doughFlat", flatbread_dough);
        ItemFoodFL flatbread = new ItemFoodFL(FoodDataFL.FLATBREAD);
        easyItems.add(register(r, grain + "_flatbread", flatbread, CT_FOOD));
        OreDictionary.registerOre("flatbread", flatbread);
        OreDictionary.registerOre("categoryBread", flatbread);
        ItemHeatableFoodFL slice = new ItemHeatableFoodFL(FoodDataFL.SLICE);
        easyItems.add(register(r, grain + "_slice", slice, CT_FOOD));
        OreDictionary.registerOre("slice", slice);
        OreDictionary.registerOre("categoryBread", slice);
    }
    easyItems.add(register(r, "chestnut_slice", new ItemHeatableFoodFL(FoodDataFL.SLICE), CT_FOOD));
    ItemSandwichFL sandwich = new ItemSandwichFL(FoodDataFL.SANDWICH);
    easyItems.add(register(r, "chestnut_sandwich", sandwich, CT_FOOD));
    OreDictionary.registerOre("sandwich", sandwich);
    OreDictionary.registerOre("categoryMeal", sandwich);
    // Misc Items
    easyItems.add(register(r, "rennet", new ItemMisc(Size.SMALL, Weight.LIGHT), CT_MISC));
    easyItems.add(register(r, "roasted_cocoa_beans", new ItemRoastedCocoaBeans(), CT_MISC));
    easyItems.add(register(r, "cocoa_butter", new ItemMisc(Size.SMALL, Weight.LIGHT), CT_MISC));
    easyItems.add(register(r, "cocoa_powder", new ItemMisc(Size.SMALL, Weight.LIGHT), CT_MISC));
    easyItems.add(register(r, "dark_chocolate_blend", new ItemMisc(Size.SMALL, Weight.LIGHT), CT_MISC));
    easyItems.add(register(r, "milk_chocolate_blend", new ItemMisc(Size.SMALL, Weight.LIGHT), CT_MISC));
    easyItems.add(register(r, "white_chocolate_blend", new ItemMisc(Size.SMALL, Weight.LIGHT), CT_MISC));
    easyItems.add(register(r, "peel", new ItemMisc(Size.LARGE, Weight.VERY_HEAVY), CT_MISC));
    easyItems.add(register(r, "frothy_coconut", new ItemMisc(Size.SMALL, Weight.LIGHT), CT_MISC));
    ItemMisc fruit_leaf = new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT);
    easyItems.add(register(r, "fruit_leaf", fruit_leaf, CT_MISC));
    OreDictionary.registerOre("fruitLeaf", fruit_leaf);
    easyItems.add(register(r, "watering_can", new ItemWateringCan(), CT_MISC));
    easyItems.add(register(r, "vanilla", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "cinnamon_bark", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "cinnamon", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "ground_cinnamon", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "greenhouse_door", new ItemGreenhouseDoor(BlocksFL.GREENHOUSE_DOOR), CT_DECORATIONS));
    easyItems.add(register(r, "quad_planter", new ItemBlock(BlocksFL.QUAD_PLANTER), CT_DECORATIONS));
    easyItems.add(register(r, "large_planter", new ItemBlock(BlocksFL.LARGE_PLANTER), CT_DECORATIONS));
    easyItems.add(register(r, "cinnamon_sapling", new ItemBlock(BlocksFL.CINNAMON_SAPLING), CT_DECORATIONS));
    easyItems.add(register(r, "pineapple_leather", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "pineapple_fiber", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "pineapple_yarn", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "honeycomb", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_MISC));
    easyItems.add(register(r, "honey_jar", new ItemBlockJar(BlocksFL.HONEY_JAR), CT_FOOD));
    easyItems.add(register(r, "jar", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_FOOD));
    easyItems.add(register(r, "treated_lumber", new ItemMisc(Size.SMALL, Weight.MEDIUM), CT_MISC));
    easyItems.add(register(r, "beeswax", new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT), CT_FOOD));
    for (int i = 0; i < 5; i++) {
        ItemMisc item = register(r, "unused" + i, new ItemMisc(Size.VERY_SMALL, Weight.VERY_LIGHT));
        easyItems.add(item);
        unu.add(item);
    }
    ItemMisc cpole = new ItemMisc(Size.SMALL, Weight.MEDIUM);
    easyItems.add(register(r, "cinnamon_pole", cpole, CT_MISC));
    OreDictionary.registerOre("poleWooden", cpole);
    for (FruitTreeFL fruitTree : FruitTreeFL.values()) easyItems.add(registerPole(r, fruitTree));
    for (IFruitTree fruitTree : FruitTree.values()) easyItems.add(registerPole(r, fruitTree));
    for (BlockFruitDoor door : BlocksFL.getAllFruitDoors()) fruitDoors.add(register(r, door.getRegistryName().getPath(), new ItemFruitDoor(door), CT_DECORATIONS));
    for (Metal metal : TFCRegistries.METALS.getValuesCollection()) if (metal.isToolMetal()) {
        ItemMetalMallet mallet = register(r, metal.toString() + "_mallet", new ItemMetalMallet(metal), CT_METAL);
        OreDictionary.registerOre("tool", mallet);
        easyItems.add(mallet);
        ItemMetalMalletHead head = new ItemMetalMalletHead(metal);
        easyItems.add(register(r, metal.toString() + "_mallet_head", head, CT_METAL));
        OreDictionary.registerOre("tool", head);
        malletHeads.put(metal, head);
    }
    // uses a separate model loader
    register(r, "cracked_coconut", new ItemWoodenBucket(), CT_MISC);
    register(r, "cheesecloth", new ItemCheesecloth(), CT_MISC);
    BlocksFL.getAllIBs().forEach((x) -> registerIB(r, x));
    BlocksFL.getAllInventoryIBs().forEach((x) -> easyItems.add(registerIB(r, new ItemBlock(x))));
    for (StemCrop crop : StemCrop.values()) {
        easyItems.add(register(r, "crop/seeds/" + crop.name().toLowerCase(), new ItemSeedsTFC(crop), CT_FOOD));
    }
    allEasyItems = easyItems.build();
    allFruitDoors = fruitDoors.build();
    unused = unu.build();
}
Also used : ImmutableList(com.google.common.collect.ImmutableList) ItemPottery(net.dries007.tfc.objects.items.ceramics.ItemPottery) Metal(net.dries007.tfc.api.types.Metal) ItemSeedsTFC(net.dries007.tfc.objects.items.ItemSeedsTFC) Item(net.minecraft.item.Item) IFruitTree(net.dries007.tfc.api.types.IFruitTree) ItemWoodenBucket(net.dries007.tfc.objects.items.wood.ItemWoodenBucket) ItemBlock(net.minecraft.item.ItemBlock) BlockFruitDoor(com.eerussianguy.firmalife.blocks.BlockFruitDoor) FoodData(net.dries007.tfc.api.capability.food.FoodData) ItemMisc(net.dries007.tfc.objects.items.ItemMisc) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Example 3 with Metal

use of net.dries007.tfc.api.types.Metal in project firmalife by eerussianguy.

the class TFCRegistry method onRegisterAnvilRecipes.

@SubscribeEvent
public static void onRegisterAnvilRecipes(RegistryEvent.Register<AnvilRecipe> event) {
    IForgeRegistry<AnvilRecipe> r = event.getRegistry();
    for (Metal metal : TFCRegistries.METALS.getValuesCollection()) {
        if (metal.isToolMetal())
            r.register(new AnvilRecipe(new ResourceLocation(MOD_ID, metal.toString() + "_mallet_head"), IIngredient.of(new ItemStack(ItemMetal.get(metal, Metal.ItemType.INGOT))), new ItemStack(ItemsFL.getMetalMalletHead(metal)), metal.getTier(), TOOLS, PUNCH_LAST, PUNCH_SECOND_LAST, SHRINK_THIRD_LAST));
    }
    r.registerAll(new AnvilRecipe(new ResourceLocation(MOD_ID, "greenhouse_wall"), IIngredient.of(ItemMetal.get(Metal.WROUGHT_IRON, Metal.ItemType.SHEET)), new ItemStack(BlocksFL.GREENHOUSE_WALL, 2), Metal.WROUGHT_IRON.getTier(), GENERAL, HIT_NOT_LAST, PUNCH_NOT_LAST, SHRINK_LAST));
    r.registerAll(new AnvilRecipe(new ResourceLocation(MOD_ID, "greenhouse_roof"), IIngredient.of(ItemMetal.get(Metal.WROUGHT_IRON, Metal.ItemType.SHEET)), new ItemStack(BlocksFL.GREENHOUSE_ROOF, 2), Metal.WROUGHT_IRON.getTier(), GENERAL, HIT_THIRD_LAST, PUNCH_SECOND_LAST, PUNCH_LAST));
    r.registerAll(new AnvilRecipe(new ResourceLocation(MOD_ID, "greenhouse_door"), IIngredient.of(ItemMetal.get(Metal.WROUGHT_IRON, Metal.ItemType.SHEET)), new ItemStack(ItemsFL.ITEM_GREENHOUSE_DOOR), Metal.WROUGHT_IRON.getTier(), GENERAL, HIT_NOT_LAST, HIT_NOT_LAST, PUNCH_LAST));
    r.registerAll(new AnvilRecipe(new ResourceLocation(MOD_ID, "spout"), IIngredient.of("ingotBlackSteel"), new ItemStack(BlocksFL.SPOUT), Metal.WROUGHT_IRON.getTier(), GENERAL, PUNCH_THIRD_LAST, SHRINK_SECOND_LAST, HIT_LAST));
}
Also used : ResourceLocation(net.minecraft.util.ResourceLocation) AnvilRecipe(net.dries007.tfc.api.recipes.anvil.AnvilRecipe) Metal(net.dries007.tfc.api.types.Metal) ItemMetal(net.dries007.tfc.objects.items.metal.ItemMetal) ItemStack(net.minecraft.item.ItemStack) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Example 4 with Metal

use of net.dries007.tfc.api.types.Metal in project firmalife by eerussianguy.

the class JEIPluginFL method register.

@Override
public void register(IModRegistry registry) {
    REGISTRY = registry;
    List<SimpleRecipeWrapper> ovenList = RegistriesFL.OVEN.getValuesCollection().stream().map(OvenRecipeWrapper::new).collect(Collectors.toList());
    registry.addRecipes(ovenList, OVEN_ID);
    registry.addRecipeCatalyst(new ItemStack(BlocksFL.OVEN), OVEN_ID);
    List<SimpleRecipeWrapper> dryList = RegistriesFL.DRYING.getValuesCollection().stream().map(DryingRecipeWrapper::new).collect(Collectors.toList());
    registry.addRecipes(dryList, DRY_ID);
    registry.addRecipeCatalyst(new ItemStack(BlocksFL.LEAF_MAT, 1), DRY_ID);
    registry.addIngredientInfo(new ItemStack(ItemsFL.FRUIT_LEAF, 1), VanillaTypes.ITEM, new TextComponentTranslation("jei.tooltip.firmalife.fruit_leaf").getFormattedText());
    registry.addIngredientInfo(new ItemStack(ItemsFL.COCOA_POWDER, 1), VanillaTypes.ITEM, new TextComponentTranslation("jei.tooltip.firmalife.cocoa_powder").getFormattedText());
    registry.addIngredientInfo(new ItemStack(ItemsFL.getFood(FoodFL.PINEAPPLE_CHUNKS), 1), VanillaTypes.ITEM, new TextComponentTranslation("jei.tooltip.firmalife.pineapple_chunks").getFormattedText());
    // Pumpkin Knapping
    List<KnappingRecipeWrapper> pumpkinknapRecipes = TFCRegistries.KNAPPING.getValuesCollection().stream().filter(recipe -> recipe.getType() == KnappingFL.PUMPKIN).map(recipe -> new KnappingRecipeWrapperFL(recipe, registry.getJeiHelpers().getGuiHelper())).collect(Collectors.toList());
    // Molds
    List<UnmoldRecipeWrapperFL> moldRecipes = TFCRegistries.METALS.getValuesCollection().stream().filter(metal -> metal.isToolMetal() && metal.getTier().isAtMost(Metal.Tier.TIER_II)).map(metal -> new UnmoldRecipeWrapperFL(metal, "mallet")).collect(Collectors.toList());
    // Casts
    List<CastingRecipeWrapperFL> castRecipes = TFCRegistries.METALS.getValuesCollection().stream().filter(metal -> metal.isToolMetal() && metal.getTier().isAtMost(Metal.Tier.TIER_II)).map(metal -> new CastingRecipeWrapperFL(metal, "mallet")).collect(Collectors.toList());
    registry.addRecipes(moldRecipes, "minecraft.crafting");
    registry.addRecipes(castRecipes, CASTING_UID);
    registry.addRecipeCatalyst(new ItemStack(BlocksTFC.CRUCIBLE), CASTING_UID);
    registry.addRecipeCatalyst(new ItemStack(ItemsTFC.FIRED_VESSEL), CASTING_UID);
    registry.addRecipes(pumpkinknapRecipes, KNAP_PUMPKIN_UID);
    registry.addRecipeCatalyst(new ItemStack(Item.getItemFromBlock(BlocksFL.PUMPKIN_FRUIT)), KNAP_PUMPKIN_UID);
}
Also used : JEIPlugin(mezz.jei.api.JEIPlugin) IModRegistry(mezz.jei.api.IModRegistry) SimpleRecipeWrapper(net.dries007.tfc.compat.jei.wrappers.SimpleRecipeWrapper) Item(net.minecraft.item.Item) DryingRecipeCategory(com.eerussianguy.firmalife.compat.jei.category.DryingRecipeCategory) ItemsTFC(net.dries007.tfc.objects.items.ItemsTFC) BlocksTFC(net.dries007.tfc.objects.blocks.BlocksTFC) IRecipeCategoryRegistration(mezz.jei.api.recipe.IRecipeCategoryRegistration) TextComponentTranslation(net.minecraft.util.text.TextComponentTranslation) IModPlugin(mezz.jei.api.IModPlugin) ItemStack(net.minecraft.item.ItemStack) KnappingFL(com.eerussianguy.firmalife.init.KnappingFL) Metal(net.dries007.tfc.api.types.Metal) TFCRegistries(net.dries007.tfc.api.registries.TFCRegistries) ItemsFL(com.eerussianguy.firmalife.registry.ItemsFL) FoodFL(com.eerussianguy.firmalife.init.FoodFL) BlocksFL(com.eerussianguy.firmalife.registry.BlocksFL) OvenRecipeCategory(com.eerussianguy.firmalife.compat.jei.category.OvenRecipeCategory) KnappingRecipeWrapper(net.dries007.tfc.compat.jei.wrappers.KnappingRecipeWrapper) Collectors(java.util.stream.Collectors) com.eerussianguy.firmalife.compat.jei.wrapper(com.eerussianguy.firmalife.compat.jei.wrapper) List(java.util.List) KnappingCategory(net.dries007.tfc.compat.jei.categories.KnappingCategory) VanillaTypes(mezz.jei.api.ingredients.VanillaTypes) MOD_ID(com.eerussianguy.firmalife.FirmaLife.MOD_ID) RegistriesFL(com.eerussianguy.firmalife.init.RegistriesFL) CastingCategoryFL(com.eerussianguy.firmalife.compat.jei.category.CastingCategoryFL) SimpleRecipeWrapper(net.dries007.tfc.compat.jei.wrappers.SimpleRecipeWrapper) TextComponentTranslation(net.minecraft.util.text.TextComponentTranslation) ItemStack(net.minecraft.item.ItemStack) KnappingRecipeWrapper(net.dries007.tfc.compat.jei.wrappers.KnappingRecipeWrapper)

Example 5 with Metal

use of net.dries007.tfc.api.types.Metal in project TerraFirmaCraft by TerraFirmaCraft.

the class SheetPileBlockEntityRenderer method render.

@Override
public void render(SheetPileBlockEntity pile, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) {
    final BlockState state = pile.getBlockState();
    if (state.getBlock() instanceof DirectionPropertyBlock) {
        final Function<ResourceLocation, TextureAtlasSprite> textureAtlas = Minecraft.getInstance().getTextureAtlas(RenderHelpers.BLOCKS_ATLAS);
        final VertexConsumer builder = buffer.getBuffer(RenderType.cutout());
        for (Direction direction : Helpers.DIRECTIONS) {
            if (// The properties are authoritative on which sides should be rendered
            state.getValue(DirectionPropertyBlock.getProperty(direction))) {
                final Metal metal = pile.getOrCacheMetal(direction);
                final TextureAtlasSprite sprite = textureAtlas.apply(metal.getTextureId());
                renderSheet(poseStack, sprite, builder, direction, packedLight, packedOverlay);
            }
        }
    }
}
Also used : BlockState(net.minecraft.world.level.block.state.BlockState) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) ResourceLocation(net.minecraft.resources.ResourceLocation) DirectionPropertyBlock(net.dries007.tfc.common.blocks.DirectionPropertyBlock) VertexConsumer(com.mojang.blaze3d.vertex.VertexConsumer) Metal(net.dries007.tfc.util.Metal) Direction(net.minecraft.core.Direction)

Aggregations

Metal (net.dries007.tfc.util.Metal)8 Metal (net.dries007.tfc.api.types.Metal)6 ItemStack (net.minecraft.item.ItemStack)5 FluidStack (net.minecraftforge.fluids.FluidStack)4 TextureAtlasSprite (net.minecraft.client.renderer.texture.TextureAtlasSprite)3 Item (net.minecraft.item.Item)3 ItemStack (net.minecraft.world.item.ItemStack)3 SubscribeEvent (net.minecraftforge.fml.common.eventhandler.SubscribeEvent)3 BlockFruitDoor (com.eerussianguy.firmalife.blocks.BlockFruitDoor)2 ItemMetalMalletMold (com.eerussianguy.firmalife.items.ItemMetalMalletMold)2 VertexConsumer (com.mojang.blaze3d.vertex.VertexConsumer)2 IMoldHandler (net.dries007.tfc.api.capability.IMoldHandler)2 ResourceLocation (net.minecraft.resources.ResourceLocation)2 BlockState (net.minecraft.world.level.block.state.BlockState)2 MOD_ID (com.eerussianguy.firmalife.FirmaLife.MOD_ID)1 BlockFruitFenceGate (com.eerussianguy.firmalife.blocks.BlockFruitFenceGate)1 BlockStemCrop (com.eerussianguy.firmalife.blocks.BlockStemCrop)1 CastingCategoryFL (com.eerussianguy.firmalife.compat.jei.category.CastingCategoryFL)1 DryingRecipeCategory (com.eerussianguy.firmalife.compat.jei.category.DryingRecipeCategory)1 OvenRecipeCategory (com.eerussianguy.firmalife.compat.jei.category.OvenRecipeCategory)1