Search in sources :

Example 1 with IMoldHandler

use of net.dries007.tfc.api.capability.IMoldHandler 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 IMoldHandler

use of net.dries007.tfc.api.capability.IMoldHandler in project firmalife by eerussianguy.

the class ClientRegisterEventsFL method registerModels.

@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
    // Setting the model resource location for items
    for (Item i : ItemsFL.getAllEasyItems()) ModelLoader.setCustomModelResourceLocation(i, 0, new ModelResourceLocation(i.getRegistryName().toString()));
    for (ItemFruitDoor i : ItemsFL.getAllFruitDoors()) ModelLoader.setCustomModelResourceLocation(i, 0, new ModelResourceLocation(i.getRegistryName().toString()));
    for (ItemBlock ib : BlocksFL.getAllIBs()) ModelLoader.setCustomModelResourceLocation(ib, 0, new ModelResourceLocation(ib.getRegistryName().toString(), "normal"));
    for (BlockFruitTreeLeaves leaves : BlocksFL.getAllFruitLeaves()) ModelLoader.setCustomStateMapper(leaves, new StateMap.Builder().ignore(BlockFruitTreeLeaves.DECAYABLE).ignore(BlockFruitTreeLeaves.HARVESTABLE).build());
    ModelLoader.setCustomStateMapper(BlocksFL.SPOUT, new StateMap.Builder().ignore(StatePropertiesFL.WATERED).ignore(StatePropertiesFL.NEEDS_SOURCE).build());
    ModelLoader.setCustomStateMapper(BlocksFL.SPRINKLER, new StateMap.Builder().ignore(StatePropertiesFL.WATERED).ignore(StatePropertiesFL.NEEDS_SOURCE).build());
    ModelLoader.setCustomStateMapper(BlocksFL.TURNTABLE, new StateMap.Builder().ignore(StatePropertiesFL.CLAY).build());
    ModelLoader.setCustomModelResourceLocation(ItemsFL.CHEESECLOTH, 0, new ModelResourceLocation(ItemsFL.CHEESECLOTH.getRegistryName(), "inventory"));
    ModelLoader.setCustomModelResourceLocation(ItemsFL.CRACKED_COCONUT, 0, new ModelResourceLocation(ItemsFL.CRACKED_COCONUT.getRegistryName(), "inventory"));
    ModelLoader.setCustomModelResourceLocation(ItemsFL.ITEM_CINNAMON_SAPLING, 0, new ModelResourceLocation(ItemsFL.ITEM_CINNAMON_SAPLING.getRegistryName().toString()));
    ModelLoader.setCustomModelResourceLocation(ItemsFL.ITEM_QUAD_PLANTER, 0, new ModelResourceLocation(ItemsFL.ITEM_QUAD_PLANTER.getRegistryName().toString(), "inventory"));
    ModelLoader.setCustomModelResourceLocation(ItemsFL.ITEM_LARGE_PLANTER, 0, new ModelResourceLocation(ItemsFL.ITEM_LARGE_PLANTER.getRegistryName().toString(), "inventory"));
    // Mallet mold
    ItemMetalMalletMold item = ItemsFL.malletMold;
    ModelBakery.registerItemVariants(item, new ModelResourceLocation(item.getRegistryName().toString()));
    ModelBakery.registerItemVariants(item, TFCRegistries.METALS.getValuesCollection().stream().filter(Metal.ItemType.PROPICK_HEAD::hasMold).map(x -> new ModelResourceLocation(FirmaLife.MOD_ID + ":" + x.getRegistryName().getPath() + "_" + item.getRegistryName().getPath())).toArray(ModelResourceLocation[]::new));
    ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition() {

        private final ModelResourceLocation FALLBACK = new ModelResourceLocation(item.getRegistryName().toString());

        @Override
        @Nonnull
        public ModelResourceLocation getModelLocation(@Nonnull ItemStack stack) {
            IFluidHandler cap = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null);
            if (cap instanceof IMoldHandler) {
                Metal metal = ((IMoldHandler) cap).getMetal();
                if (metal != null) {
                    return new ModelResourceLocation(FirmaLife.MOD_ID + ":" + metal.getRegistryName().getPath() + "_" + stack.getItem().getRegistryName().getPath());
                }
            }
            return FALLBACK;
        }
    });
    // use vanilla stem rendering for StemCrops
    for (BlockStemCrop block : BlocksFL.getAllCropBlocks()) ModelLoader.setCustomStateMapper(block, new VanillaStemStateMapper());
    for (BlockFruitDoor door : BlocksFL.getAllFruitDoors()) ModelLoader.setCustomStateMapper(door, new StateMap.Builder().ignore(BlockDoor.POWERED).build());
    for (BlockFruitFenceGate gate : BlocksFL.getAllFruitFenceGates()) ModelLoader.setCustomStateMapper(gate, new StateMap.Builder().ignore(BlockFenceGate.POWERED).build());
    ModelLoader.setCustomStateMapper(BlocksFL.CINNAMON_LOG, new StateMap.Builder().ignore(StatePropertiesFL.CAN_GROW).build());
    ModelLoader.setCustomStateMapper(BlocksFL.CINNAMON_LEAVES, new StateMap.Builder().ignore(BlockLeaves.DECAYABLE).build());
    ModelLoader.setCustomStateMapper(BlocksFL.CINNAMON_SAPLING, new StateMap.Builder().ignore(BlockSaplingTFC.STAGE).build());
    for (Block block : BlocksFL.getAllFluidBlocks()) ModelLoader.setCustomStateMapper(block, new StateMap.Builder().ignore(BlockFluidBase.LEVEL).build());
    ModelLoader.setCustomStateMapper(BlocksFL.GREENHOUSE_DOOR, new StateMap.Builder().ignore(BlockDoor.POWERED).build());
    ModelLoader.setCustomStateMapper(BlocksFL.CINNAMON_LOG, new StateMap.Builder().ignore(StatePropertiesFL.CAN_GROW).build());
    ModelLoader.setCustomStateMapper(BlocksFL.CINNAMON_LEAVES, new StateMap.Builder().ignore(BlockLeaves.DECAYABLE).build());
    ModelLoader.setCustomStateMapper(BlocksFL.CINNAMON_SAPLING, new StateMap.Builder().ignore(BlockSaplingTFC.STAGE).build());
    ModelLoader.setCustomStateMapper(BlocksFL.QUAD_PLANTER, new QuadPlanterStateMapper());
    ModelLoader.setCustomStateMapper(BlocksFL.LARGE_PLANTER, new LargePlanterStateMapper());
    ClientRegistry.bindTileEntitySpecialRenderer(TEOven.class, new TESROven());
    ClientRegistry.bindTileEntitySpecialRenderer(TEString.class, new TESRString());
    ClientRegistry.bindTileEntitySpecialRenderer(TELeafMat.class, new TESRLeafMat());
    ClientRegistry.bindTileEntitySpecialRenderer(TETurntable.class, new TESRTurntable());
}
Also used : StateMap(net.minecraft.client.renderer.block.statemap.StateMap) ModelResourceLocation(net.minecraft.client.renderer.block.model.ModelResourceLocation) Metal(net.dries007.tfc.api.types.Metal) ItemMetalMalletMold(com.eerussianguy.firmalife.items.ItemMetalMalletMold) IFluidHandler(net.minecraftforge.fluids.capability.IFluidHandler) Item(net.minecraft.item.Item) Nonnull(javax.annotation.Nonnull) IMoldHandler(net.dries007.tfc.api.capability.IMoldHandler) BlockFruitFenceGate(com.eerussianguy.firmalife.blocks.BlockFruitFenceGate) ItemBlock(net.minecraft.item.ItemBlock) ItemFruitDoor(com.eerussianguy.firmalife.items.ItemFruitDoor) ItemMeshDefinition(net.minecraft.client.renderer.ItemMeshDefinition) BlockFruitDoor(com.eerussianguy.firmalife.blocks.BlockFruitDoor) BlockFruitTreeLeaves(net.dries007.tfc.objects.blocks.agriculture.BlockFruitTreeLeaves) BlockStemCrop(com.eerussianguy.firmalife.blocks.BlockStemCrop) ItemBlock(net.minecraft.item.ItemBlock) ItemStack(net.minecraft.item.ItemStack) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Example 3 with IMoldHandler

use of net.dries007.tfc.api.capability.IMoldHandler in project firmalife by eerussianguy.

the class UnmoldRecipeFL method getCraftingResult.

@Nonnull
public ItemStack getCraftingResult(InventoryCrafting inv) {
    ItemStack moldStack = null;
    for (int slot = 0; slot < inv.getSizeInventory(); ++slot) {
        ItemStack stack = inv.getStackInSlot(slot);
        if (!stack.isEmpty()) {
            if (!(stack.getItem() instanceof ItemMetalMalletMold)) {
                return ItemStack.EMPTY;
            }
            ItemMetalMalletMold tmp = (ItemMetalMalletMold) stack.getItem();
            if (!tmp.getToolName().equals(this.type) || moldStack != null) {
                return ItemStack.EMPTY;
            }
            moldStack = stack;
        }
    }
    if (moldStack != null) {
        IFluidHandler moldCap = moldStack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null);
        if (moldCap instanceof IMoldHandler) {
            IMoldHandler moldHandler = (IMoldHandler) moldCap;
            if (!moldHandler.isMolten() && moldHandler.getAmount() == 100) {
                return this.getOutputItem(moldHandler);
            }
        }
    }
    return ItemStack.EMPTY;
}
Also used : IMoldHandler(net.dries007.tfc.api.capability.IMoldHandler) ItemStack(net.minecraft.item.ItemStack) ItemMetalMalletMold(com.eerussianguy.firmalife.items.ItemMetalMalletMold) IFluidHandler(net.minecraftforge.fluids.capability.IFluidHandler) Nonnull(javax.annotation.Nonnull)

Example 4 with IMoldHandler

use of net.dries007.tfc.api.capability.IMoldHandler in project firmalife by eerussianguy.

the class UnmoldRecipeFL method getOutputItem.

public ItemStack getOutputItem(IMoldHandler moldHandler) {
    Metal m = moldHandler.getMetal();
    if (m != null) {
        ItemStack output = new ItemStack(ItemsFL.getMetalMalletHead(m));
        IItemHeat heat = output.getCapability(CapabilityItemHeat.ITEM_HEAT_CAPABILITY, null);
        if (heat != null) {
            heat.setTemperature(moldHandler.getTemperature());
        }
        return output;
    } else {
        return ItemStack.EMPTY;
    }
}
Also used : IItemHeat(net.dries007.tfc.api.capability.heat.IItemHeat) Metal(net.dries007.tfc.api.types.Metal) ItemStack(net.minecraft.item.ItemStack)

Aggregations

ItemStack (net.minecraft.item.ItemStack)4 ItemMetalMalletMold (com.eerussianguy.firmalife.items.ItemMetalMalletMold)3 IMoldHandler (net.dries007.tfc.api.capability.IMoldHandler)3 Metal (net.dries007.tfc.api.types.Metal)3 IFluidHandler (net.minecraftforge.fluids.capability.IFluidHandler)3 Nonnull (javax.annotation.Nonnull)2 BlockFruitDoor (com.eerussianguy.firmalife.blocks.BlockFruitDoor)1 BlockFruitFenceGate (com.eerussianguy.firmalife.blocks.BlockFruitFenceGate)1 BlockStemCrop (com.eerussianguy.firmalife.blocks.BlockStemCrop)1 ItemFruitDoor (com.eerussianguy.firmalife.items.ItemFruitDoor)1 IItemHeat (net.dries007.tfc.api.capability.heat.IItemHeat)1 BlockFruitTreeLeaves (net.dries007.tfc.objects.blocks.agriculture.BlockFruitTreeLeaves)1 ItemMeshDefinition (net.minecraft.client.renderer.ItemMeshDefinition)1 ModelResourceLocation (net.minecraft.client.renderer.block.model.ModelResourceLocation)1 StateMap (net.minecraft.client.renderer.block.statemap.StateMap)1 Item (net.minecraft.item.Item)1 ItemBlock (net.minecraft.item.ItemBlock)1 SubscribeEvent (net.minecraftforge.fml.common.eventhandler.SubscribeEvent)1