Example usage for net.minecraftforge.fluids FluidUtil getFilledBucket

List of usage examples for net.minecraftforge.fluids FluidUtil getFilledBucket

Introduction

In this page you can find the example usage for net.minecraftforge.fluids FluidUtil getFilledBucket.

Prototype

@Nonnull
public static ItemStack getFilledBucket(@Nonnull FluidStack fluidStack) 

Source Link

Usage

From source file:blusunrize.immersiveengineering.common.crafting.IngredientFluidStack.java

@Override
public ItemStack[] getMatchingStacks() {
    if (cachedStacks == null) {
        cachedStacks = new ItemStack[] { FluidUtil.getFilledBucket(fluid) };
    }//from w  ww  . j av a2 s. c o  m
    return this.cachedStacks;
}

From source file:com.buuz135.industrial.jei.JEICustomPlugin.java

License:Open Source License

@Override
public void register(IModRegistry registry) {
    if (BlockRegistry.sludgeRefinerBlock.isEnabled()) {
        int maxWeight = WeightedRandom.getTotalWeight(BlockRegistry.sludgeRefinerBlock.getItems());
        List<SludgeRefinerRecipeWrapper> wrapperList = new ArrayList<>();
        BlockRegistry.sludgeRefinerBlock.getItems().forEach(itemStackWeightedItem -> wrapperList
                .add(new SludgeRefinerRecipeWrapper(itemStackWeightedItem, maxWeight)));
        registry.addRecipes(wrapperList, sludgeRefinerRecipeCategory.getUid());
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.sludgeRefinerBlock),
                sludgeRefinerRecipeCategory.getUid());
    }//from  w w  w  .j  a  va2  s  .  c o m
    if (BlockRegistry.bioReactorBlock.isEnabled()) {
        List<ReactorRecipeWrapper> bioreactor = new ArrayList<>();
        BioReactorEntry.BIO_REACTOR_ENTRIES
                .forEach(entry -> bioreactor.add(new ReactorRecipeWrapper(entry.getStack(),
                        FluidsRegistry.BIOFUEL, BlockRegistry.bioReactorBlock.getBaseAmount())));
        registry.addRecipes(bioreactor, bioReactorRecipeCategory.getUid());
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.bioReactorBlock),
                bioReactorRecipeCategory.getUid());
    }
    if (BlockRegistry.proteinReactorBlock.isEnabled()) {
        List<ReactorRecipeWrapper> proteinreactor = new ArrayList<>();
        ProteinReactorEntry.PROTEIN_REACTOR_ENTRIES
                .forEach(entry -> proteinreactor.add(new ReactorRecipeWrapper(entry.getStack(),
                        FluidsRegistry.PROTEIN, BlockRegistry.proteinReactorBlock.getBaseAmount())));
        registry.addRecipes(proteinreactor, proteinReactorRecipeCategory.getUid());
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.proteinReactorBlock),
                proteinReactorRecipeCategory.getUid());
    }
    if (BlockRegistry.laserBaseBlock.isEnabled() || BlockRegistry.laserDrillBlock.isEnabled()) {
        List<LaserRecipeWrapper> laserRecipeWrappers = new ArrayList<>();
        LaserDrillEntry.LASER_DRILL_UNIQUE_VALUES
                .forEach(entry -> laserRecipeWrappers.add(new LaserRecipeWrapper(entry)));
        registry.addRecipes(laserRecipeWrappers, laserRecipeCategory.getUid());
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.laserDrillBlock), laserRecipeCategory.getUid());
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.laserBaseBlock), laserRecipeCategory.getUid());
    }
    if (BlockRegistry.resourcefulFurnaceBlock.isEnabled())
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.resourcefulFurnaceBlock),
                VanillaRecipeCategoryUid.SMELTING);
    if (BlockRegistry.potionEnervatorBlock.isEnabled())
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.potionEnervatorBlock),
                VanillaRecipeCategoryUid.BREWING);

    registry.addRecipes(Stream.of(
            new MachineProduceWrapper(BlockRegistry.sporesRecreatorBlock, new ItemStack(Blocks.BROWN_MUSHROOM)),
            new MachineProduceWrapper(BlockRegistry.sporesRecreatorBlock, new ItemStack(Blocks.RED_MUSHROOM)),
            new MachineProduceWrapper(BlockRegistry.sewageCompostSolidiferBlock,
                    new ItemStack(ItemRegistry.fertilizer)),
            new MachineProduceWrapper(BlockRegistry.dyeMixerBlock,
                    new ItemStack(ItemRegistry.artificalDye, 1, OreDictionary.WILDCARD_VALUE)),
            new MachineProduceWrapper(BlockRegistry.lavaFabricatorBlock, new ItemStack(Items.LAVA_BUCKET)),
            new MachineProduceWrapper(BlockRegistry.waterResourcesCollectorBlock,
                    new ItemStack(Items.FISH, 1, OreDictionary.WILDCARD_VALUE)),
            new MachineProduceWrapper(BlockRegistry.mobRelocatorBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidsRegistry.ESSENCE, 1000))),
            new MachineProduceWrapper(BlockRegistry.cropRecolectorBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidsRegistry.SLUDGE, 1000))),
            new MachineProduceWrapper(BlockRegistry.waterCondensatorBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidRegistry.WATER, 1000))),
            new MachineProduceWrapper(BlockRegistry.animalResourceHarvesterBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidsRegistry.MILK, 1000))),
            new MachineProduceWrapper(BlockRegistry.mobSlaughterFactoryBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidsRegistry.MEAT, 1000))),
            new MachineProduceWrapper(BlockRegistry.mobSlaughterFactoryBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidsRegistry.PINK_SLIME, 1000))),
            new MachineProduceWrapper(BlockRegistry.latexProcessingUnitBlock,
                    new ItemStack(ItemRegistry.tinyDryRubber)),
            new MachineProduceWrapper(BlockRegistry.animalByproductRecolectorBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidsRegistry.SEWAGE, 1000))),
            new MachineProduceWrapper(BlockRegistry.lavaFabricatorBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidRegistry.LAVA, 1000))),
            new MachineProduceWrapper(BlockRegistry.proteinReactorBlock,
                    FluidUtil.getFilledBucket(new FluidStack(FluidsRegistry.PROTEIN, 1000))),
            new MachineProduceWrapper(BlockRegistry.frosterBlock, new ItemStack(Items.SNOWBALL)),
            new MachineProduceWrapper(BlockRegistry.frosterBlock, new ItemStack(Blocks.ICE)),
            new MachineProduceWrapper(BlockRegistry.frosterBlock, new ItemStack(Blocks.PACKED_ICE)))
            .filter(machineProduceWrapper -> ((CustomOrientedBlock) machineProduceWrapper.getBlock())
                    .isEnabled())
            .collect(Collectors.toList()), machineProduceCategory.getUid());

    if (BlockRegistry.materialStoneWorkFactoryBlock.isEnabled()) {
        List<StoneWorkWrapper> perfectStoneWorkWrappers = new ArrayList<>();
        List<StoneWorkWrapper> wrappers = findAllStoneWorkOutputs(new ArrayList<>());
        for (StoneWorkWrapper workWrapper : new ArrayList<>(wrappers)) {
            if (perfectStoneWorkWrappers.stream().noneMatch(
                    stoneWorkWrapper -> workWrapper.getOutput().isItemEqual(stoneWorkWrapper.getOutput()))) {
                boolean isSomoneShorter = false;
                for (StoneWorkWrapper workWrapperCompare : new ArrayList<>(wrappers)) {
                    if (workWrapper.getOutput().isItemEqual(workWrapperCompare.getOutput())) {
                        List<MaterialStoneWorkFactoryTile.Mode> workWrapperCompareModes = new ArrayList<>(
                                workWrapperCompare.getModes());
                        workWrapperCompareModes
                                .removeIf(mode -> mode == MaterialStoneWorkFactoryTile.Mode.NONE);
                        List<MaterialStoneWorkFactoryTile.Mode> workWrapperModes = new ArrayList<>(
                                workWrapper.getModes());
                        workWrapperModes.removeIf(mode -> mode == MaterialStoneWorkFactoryTile.Mode.NONE);
                        if (workWrapperModes.size() > workWrapperCompareModes.size()) {
                            isSomoneShorter = true;
                            break;
                        }
                    }
                }
                if (!isSomoneShorter)
                    perfectStoneWorkWrappers.add(workWrapper);
            }
        }
        registry.addRecipes(perfectStoneWorkWrappers, stoneWorkCategory.getUid());
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.materialStoneWorkFactoryBlock),
                stoneWorkCategory.getUid());
    }
    if (BlockRegistry.petrifiedFuelGeneratorBlock.isEnabled()) {
        List<PetrifiedBurnTimeWrapper> petrifiedBurnTimeWrappers = new ArrayList<>();
        registry.getIngredientRegistry().getFuels().stream()
                .filter(PetrifiedFuelGeneratorTile::acceptsInputStack)
                .forEach(stack -> petrifiedBurnTimeWrappers
                        .add(new PetrifiedBurnTimeWrapper(stack, TileEntityFurnace.getItemBurnTime(stack))));
        registry.addRecipes(petrifiedBurnTimeWrappers, petrifiedBurnTimeCategory.getUid());
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.petrifiedFuelGeneratorBlock),
                petrifiedBurnTimeCategory.getUid());
    }
    if (CustomConfiguration.enableBookEntriesInJEI) {
        for (BookCategory category : BookCategory.values()) {
            registry.addRecipes(category.getEntries().values().stream().map(ManualWrapper::new)
                    .collect(Collectors.toList()), manualCategory.getUid());
        }
        registry.addRecipeCatalyst(new ItemStack(ItemRegistry.bookManualItem), manualCategory.getUid());
    }
    if (fluidDictionaryCategory != null) {
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.fluidDictionaryConverterBlock),
                fluidDictionaryCategory.getUid());
        registry.addRecipes(FluidDictionaryEntry.FLUID_DICTIONARY_RECIPES.stream()
                .map(FluidDictionaryWrapper::new).collect(Collectors.toList()),
                fluidDictionaryCategory.getUid());
    }
    if (extractorRecipeCategory != null) {
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.treeFluidExtractorBlock),
                extractorRecipeCategory.getUid());
        registry.addRecipes(ExtractorEntry.EXTRACTOR_ENTRIES.stream().map(ExtractorRecipeWrapper::new)
                .collect(Collectors.toList()), extractorRecipeCategory.getUid());
    }
    if (oreWasherCategory != null) {
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.oreWasherBlock), oreWasherCategory.getUid());
        registry.addRecipes(OreFluidEntryRaw.ORE_RAW_ENTRIES.stream().map(OreWasherWrapper::new)
                .collect(Collectors.toList()), oreWasherCategory.getUid());
    }
    if (oreFermenterCategory != null) {
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.oreFermenterBlock),
                oreFermenterCategory.getUid());
        registry.addRecipes(OreFluidEntryFermenter.ORE_FLUID_FERMENTER.stream().map(OreFermenterWrapper::new)
                .collect(Collectors.toList()), oreFermenterCategory.getUid());
    }
    if (oreSieveCategory != null) {
        registry.addRecipeCatalyst(new ItemStack(BlockRegistry.oreSieveBlock), oreSieveCategory.getUid());
        registry.addRecipes(OreFluidEntrySieve.ORE_FLUID_SIEVE.stream().map(OreSieveWrapper::new)
                .collect(Collectors.toList()), oreSieveCategory.getUid());
    }
    registry.addGhostIngredientHandler(GuiConveyor.class, new ConveyorGhostSlotHandler());
}

From source file:com.buuz135.industrial.tile.misc.BlackHoleTankTile.java

License:Open Source License

@Override
public ItemStack getItemStack() {
    if (tank.getFluid() == null || FluidUtil.getFilledBucket(tank.getFluid()).isEmpty())
        return new ItemStack(Items.BUCKET);
    return FluidUtil.getFilledBucket(tank.getFluid());
}

From source file:com.buuz135.industrial.tile.misc.FluidDictionaryConverterTile.java

License:Open Source License

@NotNull
@Override//from  ww w.  java2 s  .c o  m
public List<IGuiContainerPiece> getGuiContainerPieces(@NotNull BasicTeslaGuiContainer<?> container) {
    List<IGuiContainerPiece> pieces = super.getGuiContainerPieces(container);
    pieces.add(new BasicRenderedGuiPiece(84, 45, 25, 18,
            new ResourceLocation(Reference.MOD_ID, "textures/gui/jei.png"), 24, 5));
    pieces.add(new BasicRenderedGuiPiece(40, 43, 18, 18,
            new ResourceLocation(Reference.MOD_ID, "textures/gui/machines.png"), 1, 168) {
        @Override
        public void drawBackgroundLayer(@NotNull BasicTeslaGuiContainer<?> container, int guiX, int guiY,
                float partialTicks, int mouseX, int mouseY) {
            super.drawBackgroundLayer(container, guiX, guiY, partialTicks, mouseX, mouseY);
            if (inputPointer == 0) {
                container.mc.getTextureManager()
                        .bindTexture(new ResourceLocation("teslacorelib", "textures/gui/basic-machine.png"));
                container.drawTexturedRect(this.getLeft() + 2, this.getTop() + 2, 146, 210, 14, 14);
            } else {
                if (inputPointer - 1 < INPUT_LIST.size()) {
                    String fluidName = INPUT_LIST.get(inputPointer - 1);
                    if (FluidRegistry.isFluidRegistered(fluidName)) {
                        ItemStack stack = FluidUtil
                                .getFilledBucket(FluidRegistry.getFluidStack(fluidName, 1000));
                        if (!stack.isEmpty()) {
                            container.mc.getRenderItem().renderItemIntoGUI(stack, guiX + this.getLeft() + 1,
                                    guiY + this.getTop() + 1);
                        }
                    }
                }
            }
        }

        @Override
        public void drawForegroundTopLayer(@NotNull BasicTeslaGuiContainer<?> container, int guiX, int guiY,
                int mouseX, int mouseY) {
            super.drawForegroundTopLayer(container, guiX, guiY, mouseX, mouseY);
            if (!isInside(container, mouseX, mouseY))
                return;
            if (inputPointer <= 0) {
                container.drawTooltip(
                        Arrays.asList(new TextComponentTranslation("text.industrialforegoing.button.none")
                                .getUnformattedComponentText()),
                        mouseX - guiX, mouseY - guiY);
            } else {
                if (inputPointer - 1 < INPUT_LIST.size()) {
                    String fluidName = INPUT_LIST.get(inputPointer - 1);
                    if (FluidRegistry.isFluidRegistered(fluidName)) {
                        ItemStack stack = FluidUtil
                                .getFilledBucket(FluidRegistry.getFluidStack(fluidName, 1000));
                        if (!stack.isEmpty()) {
                            container.drawTooltip(container.getItemToolTip(stack), mouseX - guiX,
                                    mouseY - guiY);
                        } else {
                            container.drawTooltip(
                                    Arrays.asList(
                                            FluidRegistry.getFluidStack(fluidName, 1000).getLocalizedName()),
                                    mouseX - guiX, mouseY - guiY);
                        }
                    }
                }
            }
        }
    });
    pieces.add(new BasicRenderedGuiPiece(136, 43, 18, 18,
            new ResourceLocation(Reference.MOD_ID, "textures/gui/machines.png"), 1, 168) {
        @Override
        public void drawBackgroundLayer(@NotNull BasicTeslaGuiContainer<?> container, int guiX, int guiY,
                float partialTicks, int mouseX, int mouseY) {
            super.drawBackgroundLayer(container, guiX, guiY, partialTicks, mouseX, mouseY);
            if (outputPointer <= 0) {
                container.mc.getTextureManager()
                        .bindTexture(new ResourceLocation("teslacorelib", "textures/gui/basic-machine.png"));
                container.drawTexturedRect(this.getLeft() + 2, this.getTop() + 2, 146, 210, 14, 14);
            } else {
                if (inputPointer > 0 && inputPointer - 1 < INPUT_LIST.size()) {
                    List<String> names = getOutputListFromFluid(INPUT_LIST.get(inputPointer - 1));
                    if (outputPointer - 1 < names.size()) {
                        String fluidName = names.get(outputPointer - 1);
                        if (FluidRegistry.isFluidRegistered(fluidName)) {
                            ItemStack stack = FluidUtil
                                    .getFilledBucket(FluidRegistry.getFluidStack(fluidName, 1000));
                            if (!stack.isEmpty()) {
                                container.mc.getRenderItem().renderItemIntoGUI(stack, guiX + this.getLeft() + 1,
                                        guiY + this.getTop() + 1);
                            }
                        }
                    }
                }
            }
        }

        @Override
        public void drawForegroundTopLayer(@NotNull BasicTeslaGuiContainer<?> container, int guiX, int guiY,
                int mouseX, int mouseY) {
            super.drawForegroundTopLayer(container, guiX, guiY, mouseX, mouseY);
            if (!isInside(container, mouseX, mouseY))
                return;
            if (outputPointer == 0) {
                container.drawTooltip(
                        Arrays.asList(new TextComponentTranslation("text.industrialforegoing.button.none")
                                .getUnformattedComponentText()),
                        mouseX - guiX, mouseY - guiY);
            } else {
                List<String> names = getOutputListFromFluid(INPUT_LIST.get(inputPointer - 1));
                if (outputPointer - 1 < names.size()) {
                    String fluidName = names.get(outputPointer - 1);
                    if (FluidRegistry.isFluidRegistered(fluidName)) {
                        ItemStack stack = FluidUtil
                                .getFilledBucket(FluidRegistry.getFluidStack(fluidName, 1000));
                        if (!stack.isEmpty()) {
                            container.drawTooltip(container.getItemToolTip(stack), mouseX - guiX,
                                    mouseY - guiY);
                        }
                    }
                }
            }
        }
    });
    pieces.add(new ArrowInfoPiece(42, 26, 17, 72, "text.industrialforegoing.button.decrease_fluid") {
        @Override
        protected void clicked() {
            if (TeslaCoreLib.INSTANCE.isClientSide()) {
                FluidDictionaryConverterTile.this
                        .sendToServer(FluidDictionaryConverterTile.this.setupSpecialNBTMessage("PREV_INPUT"));
            }
        }
    });
    pieces.add(new ArrowInfoPiece(42, 65, 33, 72, "text.industrialforegoing.button.increase_fluid") {
        @Override
        protected void clicked() {
            if (TeslaCoreLib.INSTANCE.isClientSide()) {
                FluidDictionaryConverterTile.this
                        .sendToServer(FluidDictionaryConverterTile.this.setupSpecialNBTMessage("NEXT_INPUT"));
            }
        }
    });
    pieces.add(new ArrowInfoPiece(138, 26, 17, 72, "text.industrialforegoing.button.decrease_fluid") {
        @Override
        protected void clicked() {
            if (TeslaCoreLib.INSTANCE.isClientSide()) {
                FluidDictionaryConverterTile.this
                        .sendToServer(FluidDictionaryConverterTile.this.setupSpecialNBTMessage("PREV_OUTPUT"));
            }
        }
    });
    pieces.add(new ArrowInfoPiece(138, 65, 33, 72, "text.industrialforegoing.button.increase_fluid") {
        @Override
        protected void clicked() {
            if (TeslaCoreLib.INSTANCE.isClientSide()) {
                FluidDictionaryConverterTile.this
                        .sendToServer(FluidDictionaryConverterTile.this.setupSpecialNBTMessage("NEXT_OUTPUT"));
            }
        }
    });
    return pieces;
}

From source file:com.buuz135.industrial.tile.world.FluidPumpTile.java

License:Open Source License

@Override
public List<IGuiContainerPiece> getGuiContainerPieces(BasicTeslaGuiContainer container) {
    List<IGuiContainerPiece> pieces = super.getGuiContainerPieces(container);
    pieces.add(new BasicRenderedGuiPiece(95, 22, 54, 20, null, 0, 0) {
        @Override//from  w w  w. j  a v a2  s.c  o m
        public void drawForegroundLayer(@NotNull BasicTeslaGuiContainer<?> container, int guiX, int guiY,
                int mouseX, int mouseY) {
            super.drawForegroundLayer(container, guiX, guiY, mouseX, mouseY);
            GlStateManager.pushMatrix();
            GlStateManager.translate(this.getLeft() + 2, this.getTop() + 8, 0);
            GlStateManager.scale(1, 1, 1);
            FontRenderer renderer = Minecraft.getMinecraft().fontRenderer;
            ItemStackUtils.renderItemIntoGUI(
                    fluid == null ? new ItemStack(Items.BUCKET)
                            : FluidUtil.getFilledBucket(new FluidStack(FluidRegistry.getFluid(fluid), 1000)),
                    34, -5, 7);
            renderer.drawString(TextFormatting.DARK_GRAY
                    + new TextComponentTranslation("text.industrialforegoing.display.filter")
                            .getUnformattedText(),
                    0, 0, 0xFFFFFF);
            GlStateManager.popMatrix();
        }

        @Override
        public void drawForegroundTopLayer(@NotNull BasicTeslaGuiContainer<?> container, int guiX, int guiY,
                int mouseX, int mouseY) {
            super.drawForegroundTopLayer(container, guiX, guiY, mouseX, mouseY);
            if (isInside(container, mouseX, mouseY))
                container.drawTooltip(Arrays.asList(fluid != null
                        ? FluidRegistry.getFluid(fluid)
                                .getLocalizedName(new FluidStack(FluidRegistry.getFluid(fluid), 1000))
                        : new TextComponentTranslation("text.industrialforegoing.display.empty")
                                .getUnformattedText()),
                        mouseX - guiX, mouseY - guiY);
        }
    });
    return pieces;
}

From source file:com.lothrazar.cyclicmagic.registry.FluidsRegistry.java

License:Open Source License

public static void addPoisonRecipe() {
    try {/*  w w w  . j  a v a  2 s. co m*/
        //dont do this, FluidsRegistry.fluid_poison , some other mod might have added poison first, then we get rejected --> null
        Fluid poison = FluidRegistry.getFluid("poison");
        if (poison == null) {
            return;
        }
        RecipeRegistry.addShapelessRecipe(
                FluidUtil.getFilledBucket(new FluidStack(poison, Fluid.BUCKET_VOLUME)),
                FluidUtil.getFilledBucket(new FluidStack(FluidRegistry.WATER, Fluid.BUCKET_VOLUME)),
                Items.SPIDER_EYE, Items.POISONOUS_POTATO, Items.SUGAR);
    } catch (Exception e) {
        //if another mod adds poison fluid (such as biomes o plenty), then our fluid gets rejected
        ModCyclic.logger.error("Error: Cyclic failed to add recipe for Poison Bucket", e);
    }
}

From source file:nightkosh.gravestone_extended.core.GSRecipes.java

License:LGPL

public static void registration() {
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "toxic_water_bucket"), GROUP,
            FluidUtil.getFilledBucket(FluidRegistry.getFluidStack(GSFluids.TOXIC_WATER.getName(), 1)), "ws",
            "ss", 'w', Items.BUCKET, 's', GSItem.TOXIC_SLIME);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "raven_feather_to_chicken"), GROUP,
            new ItemStack(Items.FEATHER), "fm", 'f', GSItem.RAVEN_FEATHER, 'm',
            new ItemStack(Items.DYE, 1, EnumDyeColor.WHITE.getDyeDamage()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "ooze_to_vine"), GROUP,
            new ItemStack(Blocks.VINE), "o", 'o', GSItem.OOZE);

    // fishes/*from www .  jav  a2  s  .  com*/
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_bones"), GROUP,
            new ItemStack(GSBlock.PILE_OF_BONES), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.BONE_FISH.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_toxic_slime"), GROUP,
            new ItemStack(GSItem.TOXIC_SLIME), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.GREEN_JELLYFISH.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_magma_cream"), GROUP,
            new ItemStack(Items.MAGMA_CREAM), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.MAGMA_JELLYFISH.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_lava"), GROUP,
            new ItemStack(Items.LAVA_BUCKET), "fb", 'b', Items.BUCKET, 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.MAGMA_JELLYFISH.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_obsidian"), GROUP,
            new ItemStack(Blocks.OBSIDIAN), "ff", "ff", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.OBSIDIFISH.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_netherrack"), GROUP,
            new ItemStack(Blocks.NETHERRACK), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.NETHER_SALMON.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_quartz"), GROUP,
            new ItemStack(Items.QUARTZ, 4), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.QUARTZ_COD.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_glowstone_dust"), GROUP,
            new ItemStack(Items.GLOWSTONE_DUST, 2), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.FLAREFIN_KOI.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_blaze_rod"), GROUP,
            new ItemStack(Items.BLAZE_ROD), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.BLAZE_COD.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_end_stone"), GROUP,
            new ItemStack(Blocks.END_STONE), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.ENDERFIN.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_ender_pearl"), GROUP,
            new ItemStack(Items.ENDER_PEARL), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.PEARL_BASS.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_chorus_fruit"), GROUP,
            new ItemStack(Items.CHORUS_FRUIT), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.CHORUS_KOI.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_sand"), GROUP,
            new ItemStack(Blocks.SAND), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.SANDY_BASS.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_clay"), GROUP,
            new ItemStack(Items.CLAY_BALL, 4), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.MUD_TUNA.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_snow"), GROUP,
            new ItemStack(Items.SNOWBALL, 4), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.SNOWY_CRUCIAN.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_ice"), GROUP,
            new ItemStack(Blocks.ICE, 1), "ff", "ff", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.FROST_MINNOW.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_packed_ice"), GROUP,
            new ItemStack(Blocks.PACKED_ICE, 2), "fi", "if", 'i', Blocks.ICE, 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.FROST_MINNOW.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_gunpowder"), GROUP,
            new ItemStack(Items.GUNPOWDER, 3), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.EXPLOSIVE_CRUCIAN.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_sponge"), GROUP,
            new ItemStack(Blocks.SPONGE, 1), "ff", "ff", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.SPONGE_EATER.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_soul_sand"), GROUP,
            new ItemStack(Blocks.SOUL_SAND, 1), "ff", "ff", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.WITHERED_CRUCIAN.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "fish_to_black_dye"), GROUP,
            new ItemStack(Items.DYE, 5, EnumDyeColor.BLACK.getDyeDamage()), "f", 'f',
            new ItemStack(GSItem.FISH, 1, ItemFish.EnumFishType.SQUID.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "slime_chunk"), GROUP,
            new ItemStack(GSItem.SLIME_CHUNK), "bsb", "scs", "bsb", 'b', Items.BONE, 's', GSItem.TOXIC_SLIME,
            'c', Items.COMPASS);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "imp_skull"), GROUP,
            new ItemStack(GSItem.IMP_SKULL), "qqq", "qsq", "gcg", 'q', Items.QUARTZ, 's',
            new ItemStack(Items.SKULL, 1, 0), 'g', Items.GLOWSTONE_DUST, 'c', Items.COMPASS);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "ender_skull"), GROUP,
            new ItemStack(GSItem.ENDER_SKULL), "yey", "ysy", "gcg", 'y', Items.ENDER_EYE, 'e',
            Items.END_CRYSTAL, 's', new ItemStack(Items.SKULL, 1, 1), 'g', Items.GLOWSTONE_DUST, 'c',
            Items.COMPASS);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "frozen_mirror"), GROUP,
            new ItemStack(GSItem.FROZEN_MIRROR), "ipi", "psp", "imi", 'i', Blocks.PACKED_ICE, 'p',
            PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), GSPotion.RECALL_TYPE), 's',
            Items.NETHER_STAR, 'm', Items.IRON_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "chisel"), GROUP,
            new ItemStack(GSItem.CHISEL), "   ", "s  ", " i ", 's', Items.STICK, 'i', Items.IRON_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_fishing_pole"), GROUP,
            new ItemStack(GSItem.BONE_FISHING_POLE), "p  ", "tp ", "s p", 'p',
            new ItemStack(GSBlock.PILE_OF_BONES, 1, EnumPileOfBones.PILE_OF_BONES.ordinal()), 't', Items.STRING,
            's', new ItemStack(Items.SKULL, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_pickaxe"), GROUP,
            new ItemStack(GSItem.BONE_PICKAXE), "bsb", " w ", " w ", 'b', GSBlock.BONE_BLOCK, 's',
            new ItemStack(Items.SKULL, 1, 0), 'w', Items.STICK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_pickaxe_iron"), GROUP,
            new ItemStack(GSItem.BONE_PICKAXE_IRON), "bi", 'b', GSItem.BONE_PICKAXE, 'i', Items.IRON_PICKAXE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_pickaxe_golden"), GROUP,
            new ItemStack(GSItem.BONE_PICKAXE_GOLDEN), "bg", 'b', GSItem.BONE_PICKAXE, 'g',
            Items.GOLDEN_PICKAXE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_pickaxe_diamond"), GROUP,
            new ItemStack(GSItem.BONE_PICKAXE_DIAMOND), "bd", 'b', GSItem.BONE_PICKAXE, 'd',
            Items.DIAMOND_PICKAXE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_axe"), GROUP,
            new ItemStack(GSItem.BONE_AXE), "bs ", "bw ", " w ", 'b', GSBlock.BONE_BLOCK, 's',
            new ItemStack(Items.SKULL, 1, 0), 'w', Items.STICK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_axe_iron"), GROUP,
            new ItemStack(GSItem.BONE_AXE_IRON), "bi", 'b', GSItem.BONE_AXE, 'i', Items.IRON_AXE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_axe_golden"), GROUP,
            new ItemStack(GSItem.BONE_AXE_GOLDEN), "bg", 'b', GSItem.BONE_AXE, 'g', Items.GOLDEN_AXE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_axe_diamond"), GROUP,
            new ItemStack(GSItem.BONE_AXE_DIAMOND), "bd", 'b', GSItem.BONE_AXE, 'd', Items.DIAMOND_AXE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_hoe"), GROUP,
            new ItemStack(GSItem.BONE_HOE), "bs ", " w ", " w ", 'b', GSBlock.BONE_BLOCK, 's',
            new ItemStack(Items.SKULL, 1, 0), 'w', Items.STICK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_hoe_iron"), GROUP,
            new ItemStack(GSItem.BONE_HOE_IRON), "bi", 'b', GSItem.BONE_HOE, 'i', Items.IRON_HOE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_hoe_golden"), GROUP,
            new ItemStack(GSItem.BONE_HOE_GOLDEN), "bg", 'b', GSItem.BONE_HOE, 'g', Items.GOLDEN_HOE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_hoe_diamond"), GROUP,
            new ItemStack(GSItem.BONE_HOE_DIAMOND), "bd", 'b', GSItem.BONE_HOE, 'd', Items.DIAMOND_HOE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_sword"), GROUP,
            new ItemStack(GSItem.BONE_SWORD), " b ", "sbs", " w ", 'b', GSBlock.BONE_BLOCK, 's',
            new ItemStack(Items.SKULL, 1, 0), 'w', Items.STICK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_sword_iron"), GROUP,
            new ItemStack(GSItem.BONE_SWORD_IRON), "bs", 'b', GSItem.BONE_SWORD, 's', Items.IRON_SWORD);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_sword_golden"), GROUP,
            new ItemStack(GSItem.BONE_SWORD_GOLDEN), "bs", 'b', GSItem.BONE_SWORD, 's', Items.GOLDEN_SWORD);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_sword_diamond"), GROUP,
            new ItemStack(GSItem.BONE_SWORD_DIAMOND), "bs", 'b', GSItem.BONE_SWORD, 's', Items.DIAMOND_SWORD);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_shield"), GROUP,
            new ItemStack(GSItem.BONE_SHIELD), "sss", "pbp", "pcp", 's', new ItemStack(Items.SKULL, 1, 0), 'p',
            GSBlock.PILE_OF_BONES, 'b', GSBlock.BONE_BLOCK, 'c', Items.SHIELD);

    // alternative recipes
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_pickaxe_iron_2"), GROUP,
            new ItemStack(GSItem.BONE_PICKAXE_IRON), "bi", "ii", 'b', GSItem.BONE_PICKAXE, 'i',
            Items.IRON_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_pickaxe_golden_2"), GROUP,
            new ItemStack(GSItem.BONE_PICKAXE_GOLDEN), "bg", "gg", 'b', GSItem.BONE_PICKAXE, 'g',
            Items.GOLD_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_pickaxe_diamond_2"), GROUP,
            new ItemStack(GSItem.BONE_PICKAXE_DIAMOND), "bd", "dd", 'b', GSItem.BONE_PICKAXE, 'd',
            Items.DIAMOND);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_axe_iron_2"), GROUP,
            new ItemStack(GSItem.BONE_AXE_IRON), "bi", "ii", 'b', GSItem.BONE_AXE, 'i', Items.IRON_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_axe_golden_2"), GROUP,
            new ItemStack(GSItem.BONE_AXE_GOLDEN), "bg", "gg", 'b', GSItem.BONE_AXE, 'g', Items.GOLD_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_axe_diamond_2"), GROUP,
            new ItemStack(GSItem.BONE_AXE_DIAMOND), "bd", "dd", 'b', GSItem.BONE_AXE, 'd', Items.DIAMOND);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_hoe_iron_2"), GROUP,
            new ItemStack(GSItem.BONE_HOE_IRON), "b ", "ii", 'b', GSItem.BONE_HOE, 'i', Items.IRON_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_hoe_golden_2"), GROUP,
            new ItemStack(GSItem.BONE_HOE_GOLDEN), "b ", "gg", 'b', GSItem.BONE_HOE, 'g', Items.GOLD_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_hoe_diamond_2"), GROUP,
            new ItemStack(GSItem.BONE_HOE_DIAMOND), "b ", "dd", 'b', GSItem.BONE_HOE, 'd', Items.DIAMOND);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_sword_iron_2"), GROUP,
            new ItemStack(GSItem.BONE_SWORD_IRON), "b ", "ii", 'b', GSItem.BONE_SWORD, 'i', Items.IRON_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_sword_golden_2"), GROUP,
            new ItemStack(GSItem.BONE_SWORD_GOLDEN), "b ", "gg", 'b', GSItem.BONE_SWORD, 'g', Items.GOLD_INGOT);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_sword_diamond_2"), GROUP,
            new ItemStack(GSItem.BONE_SWORD_DIAMOND), "b ", "dd", 'b', GSItem.BONE_SWORD, 'd', Items.DIAMOND);

    //armor
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "diving_chestplate"), GROUP,
            new ItemStack(GSItem.DIVING_CHESTPLATE), "pcp", "ppp", "ppp", 'p', GSItem.PIECE_OF_DIVING_SUIT, 'c',
            Items.LEATHER_CHESTPLATE);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "diving_leggings"), GROUP,
            new ItemStack(GSItem.DIVING_LEGGINGS), "ppp", "plp", "p p", 'p', GSItem.PIECE_OF_DIVING_SUIT, 'l',
            Items.LEATHER_LEGGINGS);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "diving_boots"), GROUP,
            new ItemStack(GSItem.DIVING_BOOTS), "p p", "pbp", 'p', GSItem.PIECE_OF_DIVING_SUIT, 'b',
            Items.LEATHER_BOOTS);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "swamp_thing_helmet"), GROUP,
            new ItemStack(GSItem.SWAMP_THING_HELMET), "ooo", "oho", 'o', GSItem.OOZE, 'h',
            Items.LEATHER_HELMET);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "swamp_thing_chestplate"), GROUP,
            new ItemStack(GSItem.SWAMP_THING_CHESTPLATE), "oco", "ooo", "ooo", 'o', GSItem.OOZE, 'c',
            Items.LEATHER_CHESTPLATE);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "swamp_thing_leggings"), GROUP,
            new ItemStack(GSItem.SWAMP_THING_LEGGINGS), "ooo", "olo", "o o", 'o', GSItem.OOZE, 'l',
            Items.LEATHER_LEGGINGS);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "swamp_thing_boots"), GROUP,
            new ItemStack(GSItem.SWAMP_THING_BOOTS), "o o", "obo", 'o', GSItem.OOZE, 'b', Items.LEATHER_BOOTS);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "mummy_helmet"), GROUP,
            new ItemStack(GSItem.MUMMY_HELMET), "ppp", "php", 'p', GSItem.PIECE_OF_MUMMY_CLOTH, 'h',
            Items.LEATHER_HELMET);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "mummy_chestplate"), GROUP,
            new ItemStack(GSItem.MUMMY_CHESTPLATE), "pcp", "ppp", "ppp", 'p', GSItem.PIECE_OF_MUMMY_CLOTH, 'c',
            Items.LEATHER_CHESTPLATE);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "mummy_leggings"), GROUP,
            new ItemStack(GSItem.MUMMY_LEGGINGS), "ppp", "plp", "p p", 'p', GSItem.PIECE_OF_MUMMY_CLOTH, 'l',
            Items.LEATHER_LEGGINGS);
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "mummy_boots"), GROUP,
            new ItemStack(GSItem.MUMMY_BOOTS), "p p", "pbp", 'p', GSItem.PIECE_OF_MUMMY_CLOTH, 'b',
            Items.LEATHER_BOOTS);

    // blocks
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "withered_glass"), GROUP,
            new ItemStack(GSBlock.WITHERED_GLASS, 6), "ggg", "sos", "ggg", 'g', Blocks.GLASS, 's',
            Blocks.SOUL_SAND, 'o', Blocks.OBSIDIAN);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "withered_glass_pane"), GROUP,
            new ItemStack(GSBlock.WITHERED_GLASS_PANE, 16), "ggg", "ggg", 'g', GSBlock.WITHERED_GLASS);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "pile_of_bones"), GROUP,
            new ItemStack(GSBlock.PILE_OF_BONES, 1, 0), "bb", "bb", 'b', Items.BONE);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "pile_of_bones_with_skull"), GROUP,
            new ItemStack(GSBlock.PILE_OF_BONES, 9, 1), "bbb", "bsb", "bbb", 'b',
            new ItemStack(GSBlock.PILE_OF_BONES, 1, 0), 's', new ItemStack(Items.SKULL, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "piles_to_bones"), GROUP,
            new ItemStack(Items.BONE, 4), "p", 'p', new ItemStack(GSBlock.PILE_OF_BONES, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "skull_from_piles"), GROUP,
            new ItemStack(Items.SKULL, 1, 0), "ppp", "ppp", "ppp", 'p',
            new ItemStack(GSBlock.PILE_OF_BONES, 1, 1));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_block"), GROUP,
            new ItemStack(GSBlock.BONE_BLOCK, 1, 0), "ppp", "ppp", "ppp", 'p',
            new ItemStack(GSBlock.PILE_OF_BONES, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_block_with_skull"), GROUP,
            new ItemStack(GSBlock.BONE_BLOCK, 9, 1), "bbb", "bsb", "bbb", 'b',
            new ItemStack(GSBlock.BONE_BLOCK, 1, 0), 's', new ItemStack(Items.SKULL, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_block_from_slabs"), GROUP,
            new ItemStack(GSBlock.BONE_BLOCK), "x", "x", 'x', GSBlock.BONE_SLAB);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_slabs"), GROUP,
            new ItemStack(GSBlock.BONE_SLAB, 6), "xxx", 'x', GSBlock.BONE_BLOCK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "bone_stairs"), GROUP,
            new ItemStack(GSBlock.BONE_STAIRS, 4), "x  ", "xx ", "xxx", 'x', GSBlock.BONE_BLOCK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "pile_of_bones_from_block"), GROUP,
            new ItemStack(GSBlock.PILE_OF_BONES, 9, 0), "x", 'x', GSBlock.BONE_BLOCK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "gallows"), GROUP,
            new ItemStack(GSBlock.EXECUTION, 1, EnumExecution.GALLOWS.ordinal()), "ww ", "wr ", "ww ", 'w',
            Blocks.PLANKS, 'r', Items.LEAD);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "gibbets"), GROUP,
            new ItemStack(GSBlock.EXECUTION, 1, EnumExecution.GIBBET.ordinal()), "ww ", "wr ", "wi ", 'w',
            Blocks.PLANKS, 'r', Items.LEAD, 'i', Blocks.IRON_BLOCK);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "stocks"), GROUP,
            new ItemStack(GSBlock.EXECUTION, 1, EnumExecution.STOCKS.ordinal()), "wsw", "w w", 'w',
            Blocks.PLANKS, 's', Blocks.WOODEN_SLAB);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "burning_stake"), GROUP,
            new ItemStack(GSBlock.EXECUTION, 1, EnumExecution.BURNING_STAKE.ordinal()), " w ", "www", "hwh",
            'w', Blocks.PLANKS, 'h', Blocks.HAY_BLOCK);

    //TODO ????
    // sword graves TODO remove
    //        for (net.minecraft.item.Item sword : GraveStoneHelper.swordsList) {
    //            GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, ""), GROUP, GraveStoneHelper.getSwordAsGrave(net.minecraft.item.Item.getItemFromBlock(Block.graveStone), new ItemStack(sword, 1)),
    //                    "sc",
    //                    's', sword,
    //                    'c', ExtendedItem.chisel);
    //        }

    if (ExtendedConfig.craftableWitherSpawner) {
        GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "wither_spawner"), GROUP,
                new ItemStack(GSBlock.SPAWNER, 1, EnumSpawner.WITHER_SPAWNER.ordinal()), "bcb", "cec", "cbc",
                'c', new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.WITHER_SKULL.ordinal()), 'b',
                new ItemStack(Items.DYE, 1, EnumDyeColor.WHITE.getDyeDamage()), 'e', Items.ENDER_EYE);
    }
    if (ExtendedConfig.craftableSpawners) {
        GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "skeleton_spawner"), GROUP,
                new ItemStack(GSBlock.SPAWNER, 1, EnumSpawner.SKELETON_SPAWNER.ordinal()), "bcb", "cec", "cbc",
                'c', new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.SKELETON_SKULL.ordinal()), 'b',
                new ItemStack(Items.DYE, 1, EnumDyeColor.WHITE.getDyeDamage()), 'e', Items.ENDER_EYE);

        GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "zombie_spawner"), GROUP,
                new ItemStack(GSBlock.SPAWNER, 1, EnumSpawner.ZOMBIE_SPAWNER.ordinal()), "bcb", "cec", "cbc",
                'c', new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.ZOMBIE_SKULL.ordinal()), 'b',
                new ItemStack(Items.DYE, 1, EnumDyeColor.WHITE.getDyeDamage()), 'e', Items.ENDER_EYE);

        GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "spider_spawner"), GROUP,
                new ItemStack(GSBlock.SPAWNER, 1, EnumSpawner.SPIDER_SPAWNER.ordinal()), "www", "ses", "www",
                'w', Blocks.WEB, 's', Items.SPIDER_EYE, 'e', Items.ENDER_EYE);
    }

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "candle"), GROUP,
            new ItemStack(GSBlock.CANDLE, 1, 0), "t", "m", "s", 't', Items.STRING, 'm',
            new ItemStack(Items.DYE, 1, EnumDyeColor.WHITE.getDyeDamage()), 's', Items.SLIME_BALL);

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "skeleton_candle"), GROUP,
            new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.SKELETON_SKULL.ordinal()), "c", "s", 's',
            new ItemStack(Items.SKULL, 1, 0), 'c', new ItemStack(GSBlock.CANDLE, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "wither_candle"), GROUP,
            new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.WITHER_SKULL.ordinal()), "c", "s", 's',
            new ItemStack(Items.SKULL, 1, 1), 'c', new ItemStack(GSBlock.CANDLE, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "zombie_candle"), GROUP,
            new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.ZOMBIE_SKULL.ordinal()), "c", "s", 's',
            new ItemStack(Items.SKULL, 1, 2), 'c', new ItemStack(GSBlock.CANDLE, 1, 0));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "skeleton_skull"), GROUP,
            new ItemStack(Items.SKULL, 1, 0), "c", 'c',
            new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.SKELETON_SKULL.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "wither_skull"), GROUP,
            new ItemStack(Items.SKULL, 1, 1), "c", 'c',
            new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.WITHER_SKULL.ordinal()));

    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "zombie_skull"), GROUP,
            new ItemStack(Items.SKULL, 1, 2), "c", 'c',
            new ItemStack(GSBlock.SKULL_CANDLE, 1, EnumSkullCandle.ZOMBIE_SKULL.ordinal()));

    if (ExtendedConfig.craftableNightStone) {
        GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "nightstone"), GROUP,
                new ItemStack(GSBlock.TRAP, 1, 0), " p ", "rnr", " s ", 'n', Blocks.NETHER_BRICK, 'p',
                Blocks.STONE_PRESSURE_PLATE, 'r', Items.REDSTONE, 's', Blocks.SOUL_SAND);
    }
    if (ExtendedConfig.craftableThunderStone) {
        GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "thunderstone"), GROUP,
                new ItemStack(GSBlock.TRAP, 1, 1), " p ", "rnr", " s ", 'n', Blocks.STONEBRICK, 'p',
                Blocks.STONE_PRESSURE_PLATE, 'r', Items.REDSTONE, 's', Blocks.SOUL_SAND);
    }

    // altar
    Item altarCrystal = (ExtendedConfig.hardAltarRecipe) ? Items.NETHER_STAR : Items.DIAMOND;
    GameRegistry.addShapedRecipe(new ResourceLocation(ModInfo.ID, "altar"), GROUP, new ItemStack(GSBlock.ALTAR),
            " h ", "sns", "bbb", 'h', altarCrystal, 's', new ItemStack(Items.SKULL, 1, 0), 'n',
            new ItemStack(GSBlock.TRAP, 1, 0), 'b', new ItemStack(GSBlock.BONE_BLOCK, 1, 0));
}