diff --git a/FactoryMod-20140619.jar b/FactoryMod-20140619.jar new file mode 100644 index 00000000..366633e0 Binary files /dev/null and b/FactoryMod-20140619.jar differ diff --git a/FactoryMod.jar b/FactoryMod.jar deleted file mode 100644 index 1a4860f7..00000000 Binary files a/FactoryMod.jar and /dev/null differ diff --git a/config.yml b/config.yml index 8bb38e16..63411151 100644 --- a/config.yml +++ b/config.yml @@ -88,6 +88,7 @@ printing_presses: Charcoal: material: 'COAL' durability: 1 + fuel_time: 5 costs: construction: "Iron block": @@ -108,10 +109,11 @@ printing_presses: plates: "Iron ingot": material: 'IRON_INGOT' - amount: 4 + amount: 1 "Gold nugget": material: "GOLD_NUGGET" amount: 1 + set_page_time: 5 repair: "Iron block": material: 'IRON_BLOCK' @@ -130,10 +132,11 @@ printing_presses: durability: 0 amount: 1 pages_per_lot: 32 + page_lead: 6 pamphlet_lot: Paper: material: 'PAPER' - amount: 8 + amount: 4 Ink: material: 'INK_SACK' durability: 0 @@ -147,8 +150,7 @@ printing_presses: material: 'INK_SACK' durability: 2 amount: 6 - security_notes_per_lot: 64 - + security_notes_per_lot: 128 crafting: disable: enable: @@ -191,6493 +193,3886 @@ crafting: Double Stone Slab: material: DOUBLE_STEP production_factories: - Bakery: - name: Bakery + Stone_Imbuer: fuel: Charcoal: material: COAL durability: 1 inputs: - Baked Potato: - material: BAKED_POTATO - amount: 512 - Cookie: - material: COOKIE - amount: 1024 - Bread: - material: BREAD - amount: 256 - Pumpkin Pie: - material: PUMPKIN_PIE - amount: 192 + Cobblestone: + material: COBBLESTONE + amount: 512 recipes: - - Baked_Potato - - Cookie - - Bread - - Bake_Cake - - Bake_Pumpkin_Pie - repair_multiple: 26 + - Smelt_Stone + - Stone_Knife + - Blast_Furnace + - Burn_Lump_Charcoal_Dark_Oak + - Burn_Lump_Charcoal_Acacia + - Burn_Lump_Charcoal_Jungle + - Burn_Lump_Charcoal_Birch + - Burn_Lump_Charcoal_Spruce + - Burn_Lump_Charcoal_Oak + repair_multiple: 205 repair_inputs: - Baked Potato: - material: BAKED_POTATO - amount: 2 - Cookie: - material: COOKIE - amount: 4 - Bread: - material: BREAD - Pumpkin Pie: - material: PUMPKIN_PIE - Black_Wool_Processing: - name: Black Wool Processing + Cobblestone: + material: COBBLESTONE + amount: 6 + Iron_Imbuer: fuel: - Charcoal: + Lump Charcoal: material: COAL durability: 1 + lore: Lump Charcoal inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - Black Wool: - material: WOOL - amount: 20 - durability: 15 + Iron: + material: IRON + amount: 512 recipes: - - Dye_Black_Wool_Blue - - Dye_Black_Wool_Gray - - Dye_Black_Wool_Brown - - Dye_Black_Wool_Purple - - Dye_Black_Wool_Yellow - - Dye_Black_Wool_Magenta - - Dye_Black_Wool_Pink - - Dye_Black_Wool_Cyan - - Dye_Black_Wool_Orange - - Dye_Black_Wool_Green - - Dye_Black_Wool_White - - Dye_Black_Wool_Light_Gray - - Dye_Black_Wool_Light_Blue - - Dye_Black_Wool_Red - - Dye_Black_Wool_Lime - repair_multiple: 2 + - Smelt_Iron + - Iron_hammer + - Faceting machine + - Burn_Briquette_Dark_Oak + - Burn_Briquette_Acacia + - Burn_Briquette_Jungle + - Burn_Briquette_Birch + - Burn_Briquette_Spruce + - Burn_Briquette_Oak + repair_multiple: 205 repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK - durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - Black Wool: - material: WOOL - durability: 15 - Brown_Wool_Processing: - name: Brown Wool Processing + Iron: + material: IRON + amount: 6 + Diamond_Imbuer: fuel: - Charcoal: + Briquette: material: COAL durability: 1 + lore: Briquette inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - Brown Wool: - material: WOOL - amount: 20 - durability: 12 + Diamond: + material: DIAMOND + amount: 512 recipes: - - Dye_Brown_Wool_Blue - - Dye_Brown_Wool_Gray - - Dye_Brown_Wool_Purple - - Dye_Brown_Wool_Yellow - - Dye_Brown_Wool_Black - - Dye_Brown_Wool_Magenta - - Dye_Brown_Wool_Pink - - Dye_Brown_Wool_Cyan - - Dye_Brown_Wool_Orange - - Dye_Brown_Wool_Green - - Dye_Brown_Wool_White - - Dye_Brown_Wool_Light_Gray - - Dye_Brown_Wool_Light_Blue - - Dye_Brown_Wool_Red - - Dye_Brown_Wool_Lime - repair_multiple: 2 + - Smelt_Diamond_Ore + - Diamond_Drill_Heads + - Faceting_Machine + - Burn_White_Charcoal_Dark_Oak + - Burn_White_Charcoal_Acacia + - Burn_White_Charcoal_Jungle + - Burn_White_Charcoal_Birch + - Burn_White_Charcoal_Spruce + - Burn_White_Charcoal_Oak + - OBSIDIAN_GENERATOR + repair_multiple: 205 repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK - durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - Brown Wool: - material: WOOL - durability: 12 - Charcoal_Smelter: - name: Charcoal Burner + Diamond: + material: DIAMOND + amount: 6 + Leather_Tanner: fuel: - Charcoal: + Lump Charcoal: material: COAL durability: 1 + lore: Lump Charcoal inputs: - Charcoal: - material: COAL - amount: 600 - durability: 1 + Stone knife: + material: FLINT + amount: 12 + lore: Stone knife recipes: - - Smelt_Oak_Wood - - Smelt_Spruce_Wood - - Smelt_Birch_Wood - - Smelt_Jungle_Wood - - Burn_Acacia_Wood - - Burn_Dark_Oak_Wood - repair_multiple: 60 + - LEATHER_BOOTS_RANK_0 + - LEATHER_BOOTS_RANK_1 + - LEATHER_BOOTS_RANK_2 + - LEATHER_BOOTS_RANK_3 + - LEATHER_BOOTS_RANK_4 + - LEATHER_CHESTPLATE_RANK_0 + - LEATHER_CHESTPLATE_RANK_1 + - LEATHER_CHESTPLATE_RANK_2 + - LEATHER_CHESTPLATE_RANK_3 + - LEATHER_CHESTPLATE_RANK_4 + - LEATHER_HELMET_RANK_0 + - LEATHER_HELMET_RANK_1 + - LEATHER_HELMET_RANK_2 + - LEATHER_HELMET_RANK_3 + - LEATHER_HELMET_RANK_4 + - LEATHER_LEGGINGS_RANK_0 + - LEATHER_LEGGINGS_RANK_1 + - LEATHER_LEGGINGS_RANK_2 + - LEATHER_LEGGINGS_RANK_3 + - LEATHER_LEGGINGS_RANK_4 + repair_multiple: 26 repair_inputs: - Charcoal: - material: COAL - durability: 1 - Diamond_Axe_Smithy: - name: Diamond Axe Smithy + Stone knife: + material: FLINT + amount: 2 + lore: Stone knife + Iron_Refiner: fuel: - Charcoal: + Briquette: material: COAL durability: 1 + lore: Briquette inputs: - Diamond: - material: DIAMOND - amount: 64 + Blast furnace: + material: CLAY_BRICK + amount: 16 + lore: Blast furnace + Iron hammer: + material: BONE + amount: 16 + lore: Iron hammer recipes: - - Diamond_Axe - repair_multiple: 7 + - IRON_BOOTS_RANK_0 + - IRON_BOOTS_RANK_1 + - IRON_BOOTS_RANK_2 + - IRON_BOOTS_RANK_3 + - IRON_BOOTS_RANK_4 + - IRON_CHESTPLATE_RANK_0 + - IRON_CHESTPLATE_RANK_1 + - IRON_CHESTPLATE_RANK_2 + - IRON_CHESTPLATE_RANK_3 + - IRON_CHESTPLATE_RANK_4 + - IRON_HELMET_RANK_0 + - IRON_HELMET_RANK_1 + - IRON_HELMET_RANK_2 + - IRON_HELMET_RANK_3 + - IRON_HELMET_RANK_4 + - IRON_LEGGINGS_RANK_0 + - IRON_LEGGINGS_RANK_1 + - IRON_LEGGINGS_RANK_2 + - IRON_LEGGINGS_RANK_3 + - IRON_LEGGINGS_RANK_4 + repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Boots_Smithy: - name: Diamond Boots Smithy + Blast furnace: + material: CLAY_BRICK + amount: 4 + lore: Blast furnace + Diamond_Cutter: fuel: - Charcoal: + White Charcoal: material: COAL durability: 1 + lore: White Charcoal inputs: - Diamond: + Faceting machine: + material: WATCH + amount: 32 + lore: Faceting machine + Diamond drill heads: material: DIAMOND - amount: 160 + amount: 16 + lore: Diamond drill heads recipes: - - Diamond_Boots - repair_multiple: 16 + - DIAMOND_BOOTS_RANK_0 + - DIAMOND_BOOTS_RANK_1 + - DIAMOND_BOOTS_RANK_2 + - DIAMOND_BOOTS_RANK_3 + - DIAMOND_BOOTS_RANK_4 + - DIAMOND_CHESTPLATE_RANK_0 + - DIAMOND_CHESTPLATE_RANK_1 + - DIAMOND_CHESTPLATE_RANK_2 + - DIAMOND_CHESTPLATE_RANK_3 + - DIAMOND_CHESTPLATE_RANK_4 + - DIAMOND_HELMET_RANK_0 + - DIAMOND_HELMET_RANK_1 + - DIAMOND_HELMET_RANK_2 + - DIAMOND_HELMET_RANK_3 + - DIAMOND_HELMET_RANK_4 + - DIAMOND_LEGGINGS_RANK_0 + - DIAMOND_LEGGINGS_RANK_1 + - DIAMOND_LEGGINGS_RANK_2 + - DIAMOND_LEGGINGS_RANK_3 + - DIAMOND_LEGGINGS_RANK_4 + repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Cauldron: - name: Diamond Cauldron + Faceting machine: + material: WATCH + amount: 8 + lore: Faceting machine + Stone_Grinder: fuel: - Charcoal: + Lump Charcoal: material: COAL durability: 1 + lore: Limp Charcoal inputs: - Diamond: - material: DIAMOND - amount: 50 + Stone knife: + material: FLINT + lore: Stone knife + amount: 12 recipes: - - Diamond_XP_Bottle_0 - - Diamond_XP_Bottle_1 - - Diamond_XP_Bottle_2 - - Diamond_XP_Bottle_3 - repair_multiple: 5 + - STONE_SWORD_RANK_0 + - STONE_SWORD_RANK_1 + - STONE_SWORD_RANK_2 + - STONE_SWORD_RANK_3 + - STONE_SWORD_RANK_4 + repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Chestplate_Smithy: - name: Diamond Chestplate Smithy + Stone knife: + material: FLINT + amount: 2 + lore: Stone knife + Iron_Forger: fuel: - Charcoal: + Briquette: material: COAL durability: 1 + lore: Briquette inputs: - Diamond: - material: DIAMOND - amount: 320 + Blast furnace: + material: CLAY_BRICK + lore: Blast furnace + amount: 16 + Iron hammer: + material: BONE + amount: 16 + lore: Iron hammer recipes: - - Diamond_Chestplate - repair_multiple: 32 + - IRON_SWORD_RANK_0 + - IRON_SWORD_RANK_1 + - IRON_SWORD_RANK_2 + - IRON_SWORD_RANK_3 + - IRON_SWORD_RANK_4 + repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Helmet_Smithy: - name: Diamond Helmet Smithy + Blast furnace: + material: CLAY_BRICK + amount: 4 + lore: Blast furnace + Diamond_Polisher: fuel: - Charcoal: + White Charcoal: material: COAL durability: 1 + lore: White Charcoal inputs: - Diamond: + Faceting machine: + material: WATCH + lore: Faceting machine + amount: 32 + Diamond drill heads: material: DIAMOND - amount: 192 + amount: 16 + lore: Diamond drill heads recipes: - - Diamond_Helmet - repair_multiple: 20 + - DIAMOND_SWORD_RANK_0 + - DIAMOND_SWORD_RANK_1 + - DIAMOND_SWORD_RANK_2 + - DIAMOND_SWORD_RANK_3 + - DIAMOND_SWORD_RANK_4 + repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Hoe_Smithy: - name: Diamond Hoe Smithy + Faceting machine: + material: WATCH + amount: 8 + lore: Faceting machine + Stone_Anvil: fuel: Charcoal: material: COAL durability: 1 inputs: - Diamond: - material: DIAMOND - amount: 32 + Stone knife: + material: FLINT + lore: Stone knife + amount: 12 recipes: - - Diamond_Hoe - repair_multiple: 4 + - STONE_PICKAXE_RANK_0 + - STONE_PICKAXE_RANK_1 + - STONE_PICKAXE_RANK_2 + - STONE_PICKAXE_RANK_3 + - STONE_PICKAXE_RANK_4 + - STONE_AXE_RANK_0 + - STONE_AXE_RANK_1 + - STONE_AXE_RANK_2 + - STONE_AXE_RANK_3 + - STONE_AXE_RANK_4 + - STONE_SHOVEL_RANK_0 + - STONE_SHOVEL_RANK_1 + - STONE_SHOVEL_RANK_2 + - STONE_SHOVEL_RANK_3 + - STONE_SHOVEL_RANK_4 + - STONE_HOE_RANK_0 + - STONE_HOE_RANK_1 + - STONE_HOE_RANK_2 + - STONE_HOE_RANK_3 + - STONE_HOE_RANK_4 + repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Leggings_Smithy: - name: Diamond Leggings Smithy + Stone knife: + material: FLINT + amount: 2 + lore: Stone knife + Iron_Anvil: fuel: Charcoal: material: COAL durability: 1 inputs: - Diamond: - material: DIAMOND - amount: 256 + Blast furnace: + material: CLAY_BRICK + lore: Blast furnace + amount: 16 recipes: - - Diamond_Leggings + - IRON_PICKAXE_RANK_0 + - IRON_PICKAXE_RANK_1 + - IRON_PICKAXE_RANK_2 + - IRON_PICKAXE_RANK_3 + - IRON_PICKAXE_RANK_4 + - IRON_AXE_RANK_0 + - IRON_AXE_RANK_1 + - IRON_AXE_RANK_2 + - IRON_AXE_RANK_3 + - IRON_AXE_RANK_4 + - IRON_SHOVEL_RANK_0 + - IRON_SHOVEL_RANK_1 + - IRON_SHOVEL_RANK_2 + - IRON_SHOVEL_RANK_3 + - IRON_SHOVEL_RANK_4 + - IRON_HOE_RANK_0 + - IRON_HOE_RANK_1 + - IRON_HOE_RANK_2 + - IRON_HOE_RANK_3 + - IRON_HOE_RANK_4 repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Pickaxe_Smithy: - name: Diamond Pickaxe Smithy + Blast furnace: + material: CLAY_BRICK + amount: 4 + lore: Blast furnace + Diamond_Anvil: fuel: Charcoal: material: COAL durability: 1 inputs: - Diamond: - material: DIAMOND - amount: 96 + Faceting machine: + material: WATCH + lore: Faceting machine + amount: 32 + Iron hammer: + material: IRONE_HOE + lore: Iron hammer + amount: 6 recipes: - - Diamond_Pickaxe - repair_multiple: 10 + - DIAMOND_PICKAXE_RANK_0 + - DIAMOND_PICKAXE_RANK_1 + - DIAMOND_PICKAXE_RANK_2 + - DIAMOND_PICKAXE_RANK_3 + - DIAMOND_PICKAXE_RANK_4 + - DIAMOND_AXE_RANK_0 + - DIAMOND_AXE_RANK_1 + - DIAMOND_AXE_RANK_2 + - DIAMOND_AXE_RANK_3 + - DIAMOND_AXE_RANK_4 + - DIAMOND_SHOVEL_RANK_0 + - DIAMOND_SHOVEL_RANK_1 + - DIAMOND_SHOVEL_RANK_2 + - DIAMOND_SHOVEL_RANK_3 + - DIAMOND_SHOVEL_RANK_4 + - DIAMOND_HOE_RANK_0 + - DIAMOND_HOE_RANK_1 + - DIAMOND_HOE_RANK_2 + - DIAMOND_HOE_RANK_3 + - DIAMOND_HOE_RANK_4 + repair_multiple: 26 repair_inputs: - Diamond: - material: DIAMOND - Diamond_Spade_Smithy: - name: Diamond Spade Smithy + Faceting machine: + material: WATCH + amount: 8 + lore: Faceting machine + Aspect_Factory: + name: Arcane Elementizer fuel: Charcoal: material: COAL durability: 1 inputs: - Diamond: - material: DIAMOND - amount: 48 + Netherbrick: + material: NETHER_BRICK + amount: 1536 + Redstone: + material: REDSTONE + amount: 1152 + Netherquartz: + material: QUARTZ + amount: 576 recipes: - - Diamond_Spade - repair_multiple: 5 + - Forge_Aspect_of_Terra + - Forge_Aspect_of_End + - Forge_Aspect_of_Nether + - Craft_Eye_of_Ender + repair_multiple: 26 repair_inputs: - Diamond: + Nether Brick: + material: NETHER_BRICK + amount: 6 + Redstone: + material: REDSTONE + amount: 5 + Netherquartz: + material: QUARTZ + amount: 2 +nether_factory: + name: Nether Factory + fuel: + Charcoal: + material: COAL + durability: 1 + costs: + construction: + Aspect of Nether: + material: MAGMA_CREAM + amount: 8 + display_name: Aspect of Nether + lore: A concentrated essence of the Nether + Aspect of Terra: material: DIAMOND - Diamond_Sword_Smithy: - name: Diamond Sword Smithy - fuel: - Charcoal: - material: COAL - durability: 1 + amount: 8 + display_name: Aspect of Terra + lore: A concentrated essence of Terra + Aspect of END: + material: FLINT + amount: 8 + display_name: Aspect of End + lore: A concentrated essence of the End + repair: + Diamond block: + material: DIAMOND_BLOCK + amount: 1 + repair_multiple: 1 + fuel_time: 10 + repair_time: 12 + scaling_radius: 5000 + cost_scaling_radius: 5000 + use_fuel_on_teleport: false +production_recipes: + Forge_Aspect_of_Terra: + name: Forge Aspect of Terra + production_time: 64 inputs: - Diamond: - material: DIAMOND - amount: 80 - recipes: - - Diamond_Sword - repair_multiple: 8 - repair_inputs: - Diamond: + Emerald Block: + material: EMERALD_BLOCK + amount: 24 + Diamond Block: + material: DIAMOND_BLOCK + amount: 24 + Gold Ore: + material: GOLD_ORE + amount: 8 + Slime Ball: + material: SLIME_BALL + amount: 8 + Anvil: + material: ANVIL + amount: 8 + outputs: + Aspect of Terra: material: DIAMOND - Glass_Smelter: - name: Glass Smelter - fuel: - Charcoal: + amount: 1 + display_name: Aspect of Terra + lore: A concentrated essence of Terra + Forge_Aspect_of_End: + name: Forge Aspect of End + production_time: 64 + inputs: + Ender Pearl: + material: ENDER_PEARL + amount: 256 + Ender Chest: + material: ENDER_CHEST + amount: 256 + Endstone: + material: ENDER_STONE + amount: 1024 + outputs: + Aspect of End: + material: FLINT + amount: 1 + display_name: Aspect of End + lore: A concentrated essence of the End + Smelt_Stone: + name: Smelt Stone + production_time: 16 + inputs: + Cobblestone: + material: COBBLESTONE + amount: 256 + outputs: + Stone: + material: Stone + amount: 512 + Smelt_Iron: + name: Smelt Iron + production_time: 16 + inputs: + Iron Ore: + material: IRON_ORE + amount: 64 + outputs: + Iron: + material: IRON + amount: 128 + Smelt_Diamond_Ore: + name: Smelt Diamond Ore + production_time: 16 + inputs: + Diamond Ore: + material: DIAMOND_ORE + amount: 16 + outputs: + Diamond: + material: DIAMOND + amount: 48 + + Burn_Lump_Charcoal_Oak: + name: Smelt Stone + production_time: 16 + inputs: + Oak Wood: + material: LOG + amount: 256 + outputs: + Lump Charcoal: material: COAL durability: 1 + lore: Lump Charcoal + amount: 512 + Burn_Lump_Charcoal_Spruce: + name: Smelt Stone + production_time: 16 inputs: - Sand: - material: SAND - amount: 2048 - Charcoal: - material: COAL + Spruce Wood: + material: LOG amount: 256 durability: 1 - recipes: - - Smelt_Glass - - Smelt_Sandstone - - Smelt_Glass_panes - - Smelt_Bottles - - Smelt_Red_sand - - Smelt_Glass_From_Sandstone - repair_multiple: 26 - repair_inputs: - Sand: - material: SAND - amount: 8 - Charcoal: + outputs: + Lump Charcoal: material: COAL durability: 1 - Nether_Brick_Smelter: - name: Nether Brick Smelter - fuel: + lore: Lump Charcoal + amount: 512 + Burn_Lump_Charcoal_Birch: + name: Smelt Stone + production_time: 16 + inputs: + Birch Wood: + material: LOG + amount: 256 + durability: 2 + outputs: Charcoal: material: COAL + amount: 512 durability: 1 + Burn_Lump_Charcoal_Jungle: + name: Smelt Stone + production_time: 16 inputs: - Netherrack: - material: NETHERRACK - amount: 2048 - Charcoal: - material: COAL + Jungle Wood: + material: LOG amount: 256 - durability: 1 - recipes: - - Smelt_Nether_bricks - repair_multiple: 26 - repair_inputs: - Netherrack: - material: NETHERRACK - amount: 8 - Charcoal: + durability: 3 + outputs: + Lump Charcoal: material: COAL durability: 1 - Kiln: - name: Kiln - fuel: + lore: Lump Charcoal + amount: 512 + Burn_Lump_Charcoal_Acacia: + name: Smelt Stone + production_time: 16 + inputs: + Acacia Wood: + material: LOG_2 + amount: 256 + outputs: Charcoal: material: COAL + amount: 512 durability: 1 + Burn_Lump_Charcoal_Dark_Oak: + name: Smelt Stone + production_time: 16 inputs: - Clay: - material: CLAY - amount: 1280 - Charcoal: - material: COAL + Dark Oak Wood: + material: LOG_2 amount: 256 durability: 1 - recipes: - - Bake_clay_blocks - - Bake_bricks - - Bake_pots - repair_multiple: 26 - repair_inputs: - Clay: - material: CLAY - amount: 8 - Charcoal: - material: COAL - durability: 1 - Gold_Axe_Smithy: - name: Gold Axe Smithy - fuel: - Charcoal: + outputs: + Lump Charcoal: material: COAL durability: 1 + lore: Lump Charcoal + amount: 512 + Burn_Briquette_Oak: + name: Smelt Stone + production_time: 16 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 64 - recipes: - - Gold_Axe - repair_multiple: 7 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Boots_Smithy: - name: Gold Boots Smithy - fuel: - Charcoal: + Oak Wood: + material: LOG + amount: 256 + outputs: + Briquette: material: COAL durability: 1 + lore: Briquette + amount: 512 + Burn_Briquette_Spruce: + name: Smelt Stone + production_time: 16 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 160 - recipes: - - Gold_Boots - repair_multiple: 16 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Chestplate_Smithy: - name: Gold Chestplate Smithy - fuel: - Charcoal: - material: COAL + Spruce Wood: + material: LOG + amount: 256 durability: 1 - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 320 - recipes: - - Gold_Chestplate - repair_multiple: 32 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Helmet_Smithy: - name: Gold Helmet Smithy - fuel: - Charcoal: + outputs: + Briquette: material: COAL durability: 1 + lore: Briquette + amount: 512 + Burn_Briquette_Birch: + name: Smelt Stone + production_time: 16 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 192 - recipes: - - Gold_Helmet - repair_multiple: 20 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Hoe_Smithy: - name: Gold Hoe Smithy - fuel: + Birch Wood: + material: LOG + amount: 256 + durability: 2 + outputs: Charcoal: material: COAL + amount: 512 durability: 1 + Burn_Briquette_Jungle: + name: Smelt Stone + production_time: 16 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 32 - recipes: - - Gold_Hoe - repair_multiple: 4 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Leggings_Smithy: - name: Gold Leggings Smithy - fuel: - Charcoal: + Jungle Wood: + material: LOG + amount: 256 + durability: 3 + outputs: + Briquette: material: COAL durability: 1 + lore: Briquette + amount: 512 + Burn_Briquette_Acacia: + name: Smelt Stone + production_time: 16 inputs: - Gold Ingot: - material: GOLD_INGOT + Acacia Wood: + material: LOG_2 amount: 256 - recipes: - - Gold_Leggings - repair_multiple: 26 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Pickaxe_Smithy: - name: Gold Pickaxe Smithy - fuel: + outputs: Charcoal: material: COAL + amount: 512 durability: 1 + Burn_Briquette_Dark_Oak: + name: Smelt Stone + production_time: 16 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 96 - recipes: - - Gold_Pickaxe - repair_multiple: 10 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Spade_Smithy: - name: Gold Spade Smithy - fuel: - Charcoal: - material: COAL + Dark Oak Wood: + material: LOG_2 + amount: 256 durability: 1 - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 48 - recipes: - - Gold_Spade - repair_multiple: 5 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gold_Sword_Smithy: - name: Gold Sword Smithy - fuel: - Charcoal: + outputs: + Briquette: material: COAL durability: 1 + lore: Briquette + amount: 512 + Burn_White_Charcoal_Oak: + name: Smelt Stone + production_time: 16 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 80 - recipes: - - Gold_Sword - repair_multiple: 8 - repair_inputs: - Gold Ingot: - material: GOLD_INGOT - Gray_Wool_Processing: - name: Gray Wool Processing - fuel: - Charcoal: + Oak Wood: + material: LOG + amount: 256 + outputs: + White Charcoal: material: COAL durability: 1 + lore: White Charcoal + amount: 512 + Burn_White_Charcoal_Spruce: + name: Smelt Stone + production_time: 16 inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - Gray Wool: - material: WOOL - amount: 20 - durability: 7 - recipes: - - Dye_Gray_Wool_Blue - - Dye_Gray_Wool_Brown - - Dye_Gray_Wool_Purple - - Dye_Gray_Wool_Yellow - - Dye_Gray_Wool_Black - - Dye_Gray_Wool_Magenta - - Dye_Gray_Wool_Pink - - Dye_Gray_Wool_Cyan - - Dye_Gray_Wool_Orange - - Dye_Gray_Wool_Green - - Dye_Gray_Wool_White - - Dye_Gray_Wool_Light_Gray - - Dye_Gray_Wool_Light_Blue - - Dye_Gray_Wool_Red - - Dye_Gray_Wool_Lime - repair_multiple: 2 - repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK + Spruce Wood: + material: LOG + amount: 256 durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - Gray Wool: - material: WOOL - durability: 7 - Grill: - name: Bakery - fuel: - Charcoal: + outputs: + White Charcoal: material: COAL durability: 1 + lore: White Charcoal + amount: 512 + Burn_White_Charcoal_Birch: + name: Smelt Stone + production_time: 16 inputs: - Cooked Chicken: - material: COOKED_CHICKEN - amount: 192 - Cooked Fish: - material: COOKED_FISH - amount: 16 - Cooked Salmon: - material: COOKED_FISH - amount: 16 - durability: 1 - Grilled Pork: - material: GRILLED_PORK - amount: 160 - Cooked Beef: - material: COOKED_BEEF - amount: 64 - recipes: - - Cooked_Chicken - - Cooked_Fish - - Grilled_Pork - - Cooked_Beef - - Cook_Salmon - repair_multiple: 2 - repair_inputs: - Cooked Chicken: - material: COOKED_CHICKEN - amount: 10 - Cooked Fish: - material: COOKED_FISH - Cooked Salmon: - material: COOKED_FISH - durability: 1 - Grilled Pork: - material: GRILLED_PORK - amount: 8 - Cooked Beef: - material: COOKED_BEEF - amount: 4 - Iron_Axe_Smithy: - name: Iron Axe Smithy - fuel: + Birch Wood: + material: LOG + amount: 256 + durability: 2 + outputs: Charcoal: material: COAL + amount: 512 durability: 1 + Burn_White_Charcoal_Jungle: + name: Smelt Stone + production_time: 16 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 64 - recipes: - - Iron_Axe - repair_multiple: 7 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Boots_Smithy: - name: Iron Boots Smithy - fuel: - Charcoal: + Jungle Wood: + material: LOG + amount: 256 + durability: 3 + outputs: + White Charcoal: material: COAL durability: 1 + lore: White Charcoal + amount: 512 + Burn_White_Charcoal_Acacia: + name: Smelt Stone + production_time: 16 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 160 - recipes: - - Iron_Boots - repair_multiple: 16 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Cauldron: - name: Iron Cauldron - fuel: + Acacia Wood: + material: LOG_2 + amount: 256 + outputs: Charcoal: material: COAL + amount: 512 durability: 1 + Burn_White_Charcoal_Dark_Oak: + name: Smelt Stone + production_time: 16 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 200 - recipes: - - Iron_XP_Bottle_0 - - Iron_XP_Bottle_1 - - Iron_XP_Bottle_2 - - Iron_XP_Bottle_3 - repair_multiple: 20 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Chestplate_Smithy: - name: Iron Chestplate Smithy - fuel: - Charcoal: - material: COAL + Dark Oak Wood: + material: LOG_2 + amount: 256 durability: 1 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 320 - recipes: - - Iron_Chestplate - repair_multiple: 32 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Helmet_Smithy: - name: Iron Helmet Smithy - fuel: - Charcoal: + outputs: + White Charcoal: material: COAL durability: 1 + lore: White Charcoal + amount: 512 + LEATHER_BOOTS_RANK_0: + name: Leather Boots Forger Rank 0 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 192 - recipes: - - Iron_Helmet - repair_multiple: 20 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Hoe_Smithy: - name: Iron Hoe Smithy - fuel: - Charcoal: - material: COAL - durability: 1 + Leather: + material: LEATHER + amount: 32 + outputs: + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 0 + lore: Leather Boots Rank 0 + LEATHER_BOOTS_RANK_1: + name: Leather Boots Forger Rank 1 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 32 - recipes: - - Iron_Hoe - repair_multiple: 4 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Leggings_Smithy: - name: Iron Leggings Smithy - fuel: - Charcoal: - material: COAL - durability: 1 + Leather: + material: LEATHER + amount: 32 + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 0 + lore: Leather Boots Rank 0 + outputs: + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 1 + lore: Leather Boots Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + LEATHER_BOOTS_RANK_2: + name: Leather Boots Forger Rank 2 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 256 - recipes: - - Iron_Leggings - repair_multiple: 26 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Pickaxe_Smithy: - name: Iron Pickaxe Smithy - fuel: - Charcoal: - material: COAL - durability: 1 + Leather: + material: LEATHER + amount: 32 + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 1 + lore: Leather Boots Rank 1 + outputs: + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 2 + lore: Leather Boots Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + LEATHER_BOOTS_RANK_3: + name: Leather Boots Forger Rank 3 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 96 - recipes: - - Iron_Pickaxe - repair_multiple: 10 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Spade_Smithy: - name: Iron Spade Smithy - fuel: - Charcoal: - material: COAL - durability: 1 + Leather: + material: LEATHER + amount: 32 + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 2 + lore: Leather Boots Rank 2 + outputs: + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 3 + lore: Leather Boots Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + LEATHER_BOOTS_RANK_4: + name: Leather Boots Forger Rank 4 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 48 - recipes: - - Iron_Spade - repair_multiple: 5 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Iron_Sword_Smithy: - name: Iron Sword Smithy - fuel: - Charcoal: - material: COAL - durability: 1 + Leather: + material: LEATHER + amount: 32 + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 3 + lore: Leather Boots Rank 3 + outputs: + Leather Boots: + material: LEATHER_BOOTS + amount: 1 + display_name: Leather Boots Rank 4 + lore: Leather Boots Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + LEATHER_CHESTPLATE_RANK_0: + name: Leather Chestplate Forger Rank 0 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 80 - recipes: - - Iron_Sword - repair_multiple: 8 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - Light_Gray_Wool_Processing: - name: Light Gray Wool Processing - fuel: - Charcoal: - material: COAL - durability: 1 + Leather: + material: LEATHER + amount: 32 + outputs: + Leather Chestplate: + material: LEATHER_CHESTPLATE + amount: 1 + display_name: Leather Chestplate Rank 0 + lore: Leather Chestplate Rank 0 + LEATHER_CHESTPLATE_RANK_1: + name: Leather Chestplate Forger Rank 1 + production_time: 360 inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - Light Gray Wool: - material: WOOL - amount: 20 - durability: 8 - recipes: - - Dye_Light_Gray_Wool_Blue - - Dye_Light_Gray_Wool_Gray - - Dye_Light_Gray_Wool_Brown - - Dye_Light_Gray_Wool_Purple - - Dye_Light_Gray_Wool_Yellow - - Dye_Light_Gray_Wool_Black - - Dye_Light_Gray_Wool_Magenta - - Dye_Light_Gray_Wool_Pink - - Dye_Light_Gray_Wool_Cyan - - Dye_Light_Gray_Wool_Orange - - Dye_Light_Gray_Wool_Green - - Dye_Light_Gray_Wool_White - - Dye_Light_Gray_Wool_Light_Blue - - Dye_Light_Gray_Wool_Red - - Dye_Light_Gray_Wool_Lime - repair_multiple: 2 - repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK - durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - Light Gray Wool: - material: WOOL - durability: 8 - Pink_Wool_Processing: - name: Pink Wool Processing - fuel: - Charcoal: - material: COAL - durability: 1 + Leather: + material: LEATHER + amount: 32 + Leather Chestplate: + material: LEATHER_CHESTPLATE + amount: 1 + display_name: Leather Chestplate Rank 0 + lore: Leather Chestplate Rank 0 + outputs: + Leather Chestplate: + material: LEATHER_CHESTPLATE + amount: 1 + display_name: Leather Chestplate Rank 1 + lore: Leather Chestplate Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + LEATHER_CHESTPLATE_RANK_2: + name: Leather Chestplate Forger Rank 2 + production_time: 360 inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - Pink Wool: - material: WOOL - amount: 20 - durability: 6 - recipes: - - Dye_Pink_Wool_Blue - - Dye_Pink_Wool_Gray - - Dye_Pink_Wool_Brown - - Dye_Pink_Wool_Purple - - Dye_Pink_Wool_Yellow - - Dye_Pink_Wool_Black - - Dye_Pink_Wool_Magenta - - Dye_Pink_Wool_Cyan - - Dye_Pink_Wool_Orange - - Dye_Pink_Wool_Green - - Dye_Pink_Wool_White - - Dye_Pink_Wool_Light_Gray - - Dye_Pink_Wool_Light_Blue - - Dye_Pink_Wool_Red - - Dye_Pink_Wool_Lime - repair_multiple: 2 - repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK - durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - Pink Wool: - material: WOOL - durability: 6 - Rail_Factory: - name: Rail Factory - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 320 - Stick: - material: STICK - amount: 128 - Gold Ingot: - material: GOLD_INGOT - amount: 192 - Redstone: - material: REDSTONE - amount: 32 - recipes: - - Produce_Rail - - Produce_Powered_Rail - - Produce_Detector_Rail - - Produce_Activator_Rail - - Procuce_Minecarts - repair_multiple: 4 - repair_inputs: - Iron Ingot: - material: IRON_INGOT - amount: 7 - Stick: - material: STICK - amount: 3 - Gold Ingot: - material: GOLD_INGOT - amount: 5 - Redstone: - material: REDSTONE - Horse_Factory: - name: Animal Husbandry Factory - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Iron Block: - material: IRON_BLOCK - amount: 64 - Hay Bale: - material: HAY_BLOCK - amount: 64 - Golden Apple: - material: GOLDEN_APPLE - amount: 64 - Slime_ball: - material: SLIME_BALL - amount: 16 - recipes: - - Produce_Saddle - - Produce_Diamond_Horse_Armor - - Produce_Gold_Horse_Armor - - Produce_Iron_Horse_Armor - - Produce_Leads - repair_multiple: 6 - repair_inputs: - Iron Block: - material: IRON_BLOCK - Hay Bale: - material: HAY_BLOCK - Golden Apple: - material: GOLDEN_APPLE - amount: 1 - durability: 0 - Basic_Redstone_Factory: - name: Basic Redstone Mechanism Factory - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Redstone: - material: REDSTONE - amount: 960 - Stick: - material: STICK - amount: 512 - Stone: - material: STONE - amount: 576 - Netherquartz: - material: QUARTZ - amount: 256 - Glass: - material: GLASS - amount: 128 - recipes: - - Produce_Redstone_Torches - - Produce_Repeaters - - Produce_Comparators - - Produce_Daylight_Sensors - repair_multiple: 10 - repair_inputs: - Netherquartz: - material: QUARTZ - amount: 25 - Glass: - material: GLASS - amount: 12 - Redstone: - material: REDSTONE - amount: 9 - Advanced_Redstone_Factory: - name: Advanced Redstone Mechanism Factory - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Redstone: - material: REDSTONE - amount: 960 - Chest: - material: CHEST - amount: 72 - Glowstone: - material: GLOWSTONE - amount: 256 - Iron_Ingot: - material: IRON_INGOT - amount: 576 - Slime ball: - material: SLIME_BALL - amount: 64 - Diamond: - material: DIAMOND - amount: 64 - recipes: - - Produce_Noteblocks - - Produce_Dispensers - - Produce_Redstone_lamps - - Produce_Pistons - - Produce_Sticky_Pistons - - Produce_Jukeboxes - - Produce_Hoppers - repair_multiple: 10 - repair_inputs: - Redstone: - material: REDSTONE - amount: 9 - Glowstone: - material: GLOWSTONE - amount: 2 - Iron_Ingot: - material: IRON_INGOT - amount: 6 - Slime ball: - material: SLIME_BALL + Leather: + material: LEATHER + amount: 32 + Leather Chestplate: + material: LEATHER_CHESTPLATE + amount: 1 + display_name: Leather Chestplate Rank 1 + lore: Leather Chestplate Rank 1 + outputs: + Leather Chestplate: + material: LEATHER_CHESTPLATE amount: 1 - Carpentry_factory: - name: Carpentry factory - fuel: - Charcoal: - material: COAL - durability: 1 + display_name: Leather Chestplate Rank 2 + lore: Leather Chestplate Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + LEATHER_CHESTPLATE_RANK_3: + name: Leather Chestplate Forger Rank 3 + production_time: 360 inputs: - Paper: - material: PAPER - amount: 384 - Chest: - material: CHEST - amount: 128 Leather: - material: LEATHER - amount: 128 - recipes: - - Craft_Fences - - Craft_Boats - - Craft_Signs - - Craft_Ladders - - Craft_Trap_Doors - - Craft_Item_frames - - Craft_Bookshelfs - repair_multiple: 10 - repair_inputs: - Paper: - material: PAPER - amount: 4 - Chest: - material: CHEST + material: LEATHER + amount: 32 + Leather Chestplate: + material: LEATHER_CHESTPLATE + amount: 1 + display_name: Leather Chestplate Rank 2 + lore: Leather Chestplate Rank 2 + outputs: + Leather Chestplate: + material: LEATHER_CHESTPLATE amount: 1 + display_name: Leather Chestplate Rank 3 + lore: Leather Chestplate Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + LEATHER_CHESTPLATE_RANK_4: + name: Leather Chestplate Forger Rank 4 + production_time: 360 + inputs: Leather: - material: LEATHER + material: LEATHER + amount: 32 + Leather Chestplate: + material: LEATHER_CHESTPLATE + amount: 1 + display_name: Leather Chestplate Rank 3 + lore: Leather Chestplate Rank 3 + outputs: + Leather Chestplate: + material: LEATHER_CHESTPLATE amount: 1 - Fancy_Ore_Smelter: - name: Fancy Ore Smelter - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Lapis Lazuli: - material: INK_SACK - amount: 1536 - durability: 4 - Redstone: - material: REDSTONE - amount: 1152 - Netherquartz: - material: QUARTZ - amount: 576 - recipes: - - Smelt_Lapis_Lazuli_Ore - - Smelt_Redstone_Ore - - Smelt_Netherquartz_Ore - repair_multiple: 26 - repair_inputs: - Lapis Lazuli: - material: INK_SACK - amount: 6 - durability: 4 - Redstone: - material: REDSTONE - amount: 5 - Netherquartz: - material: QUARTZ - amount: 2 - Smelter: - name: Ore Smelter - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Coal: - material: COAL - amount: 512 - Iron Ingot: - material: IRON_INGOT - amount: 384 - Gold Ingot: - material: GOLD_INGOT - amount: 192 - Diamond: - material: DIAMOND - amount: 96 - recipes: - - Smelt_Coal_Ore - - Smelt_Iron_Ore - - Smelt_Gold_Ore - - Smelt_Diamond_Ore - repair_multiple: 10 - repair_inputs: - Coal: - material: COAL - amount: 6 - Iron Ingot: - material: IRON_INGOT - amount: 4 - Gold Ingot: - material: GOLD_INGOT - amount: 2 - Diamond: - material: DIAMOND - Stone_Brick_Smelter: - name: Fancy Stone Brick Smelter - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Stone Brick: - material: SMOOTH_BRICK - amount: 512 - Lapis Lazuli: - material: INK_SACK - amount: 256 - durability: 4 - recipes: - - Smelt_Cracked_Stone_Brick - - Smelt_Mossy_Stone_Brick - - Smelt_Chiseled_Stone_Brick - repair_multiple: 26 - repair_inputs: - Stone Brick: - material: SMOOTH_BRICK - amount: 2 - Lapis Lazuli: - material: INK_SACK - durability: 4 - Stone_Smelter: - name: Stone Smelter - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Stone: - material: STONE - amount: 2048 - recipes: - - Smelt_Stone - repair_multiple: 205 - repair_inputs: - Stone: - material: STONE - Bio_Lab: - name: Bio Lab - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Oak Saplings: - material: SAPLING - amount: 512 - Grass: - material: GRASS - amount: 512 - recipes: - - Mutate_Spruce_Saplings - - Mutate_Birch_Saplings - - Mutate_Jungle_Saplings - - Mutate_Acacia_Saplings - - Mutate_Dark_Oak_Saplings - - Mutate_Podzol - - Mutate_Grassless_Dirt - repair_multiple: 10 - repair_inputs: - Oak Saplings: - material: SAPLING - amount: 5 - Grass: - material: GRASS - amount: 5 - Explosives_Factory: - name: Explosives Factory - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Sulphur: - material: SULPHUR - amount: 384 - Sand: - material: SAND - amount: 384 - Blaze Powder: - material: BLAZE_POWDER - amount: 64 - recipes: - - Produce_TNT - - Produce_Fire_Charges - repair_multiple: 10 - repair_inputs: - Sulphur: - material: SULPHUR - amount: 4 - Sand: - material: SAND - amount: 4 - Iron_Forge_factory: - name: Iron Forge - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 1152 - recipes: - - Forge_Shears - - Forge_Anvils - - Forge_Tripwire_Hooks - - Forge_Iron_Bars - - Forge_Buckets - - Forge_Iron_Doors - - Forge_Flint_And_Steel - repair_multiple: 10 - repair_inputs: - IRON_INGOT: - material: Iron Ingot - amount: 12 - Stained_Glass_Processing: - name: Stained Glass Processing - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - Stained Glass: - material: STAINED_GLASS - amount: 20 - durability: 7 - Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 20 - durability: 7 - recipes: - - Dye_Stained_Glass_Blue - - Dye_Stained_Glass_Brown - - Dye_Stained_Glass_Purple - - Dye_Stained_Glass_Yellow - - Dye_Stained_Glass_Black - - Dye_Stained_Glass_Magenta - - Dye_Stained_Glass_Pink - - Dye_Stained_Glass_Cyan - - Dye_Stained_Glass_Orange - - Dye_Stained_Glass_Green - - Dye_Stained_Glass_White - - Dye_Stained_Glass_Light_Gray - - Dye_Stained_Glass_Light_Blue - - Dye_Stained_Glass_Red - - Dye_Stained_Glass_Lime - - Dye_Stained_Glass_Pane_Blue - - Dye_Stained_Glass_Pane_Brown - - Dye_Stained_Glass_Pane_Purple - - Dye_Stained_Glass_Pane_Yellow - - Dye_Stained_Glass_Pane_Black - - Dye_Stained_Glass_Pane_Magenta - - Dye_Stained_Glass_Pane_Pink - - Dye_Stained_Glass_Pane_Cyan - - Dye_Stained_Glass_Pane_Orange - - Dye_Stained_Glass_Pane_Green - - Dye_Stained_Glass_Pane_White - - Dye_Stained_Glass_Pane_Light_Gray - - Dye_Stained_Glass_Pane_Light_Blue - - Dye_Stained_Glass_Pane_Red - - Dye_Stained_Glass_Pane_Lime - repair_multiple: 2 - repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK - durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - Stained Glass: - material: STAINED_GLASS - durability: 7 - Stained Glass Pane: - material: STAINED_GLASS_PANE - durability: 7 - Hard_Clay_Processing: - name: Hardened Clay Processing - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - Hardened Clay: - material: HARD_CLAY - amount: 20 - durability: 7 - recipes: - - Dye_Hard_Clay_Blue - - Dye_Hard_Clay_Brown - - Dye_Hard_Clay_Purple - - Dye_Hard_Clay_Yellow - - Dye_Hard_Clay_Black - - Dye_Hard_Clay_Magenta - - Dye_Hard_Clay_Pink - - Dye_Hard_Clay_Cyan - - Dye_Hard_Clay_Orange - - Dye_Hard_Clay_Green - - Dye_Hard_Clay_White - - Dye_Hard_Clay_Light_Gray - - Dye_Hard_Clay_Light_Blue - - Dye_Hard_Clay_Red - - Dye_Hard_Clay_Lime - repair_multiple: 2 - repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK - durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - Hardened Clay: - material: HARD_CLAY - durability: 7 - Crystallisation_Factory: - name: Crystallisation Factory - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Ice: - material: ICE - amount: 2048 - Charcoal: - material: COAL - amount: 256 - durability: 1 - recipes: - - Compact_Ice - repair_multiple: 10 - repair_inputs: - Ice: - material: ICE - amount: 20 - Charcoal: - material: COAL - durability: 1 - White_Wool_Processing: - name: White Wool Processing - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Lapis Lazuli: - material: INK_SACK - amount: 20 - durability: 4 - Gray Dye: - material: INK_SACK - amount: 20 - durability: 8 - Cocoa: - material: INK_SACK - amount: 20 - durability: 3 - Purple Dye: - material: INK_SACK - amount: 20 - durability: 5 - Dandelion Yellow: - material: INK_SACK - amount: 20 - durability: 11 - Ink Sack: - material: INK_SACK - amount: 20 - Magenta Dye: - material: INK_SACK - amount: 20 - durability: 13 - Pink Dye: - material: INK_SACK - amount: 20 - durability: 9 - Cyan Dye: - material: INK_SACK - amount: 20 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 20 - durability: 14 - Cactus Green: - material: INK_SACK - amount: 20 - durability: 2 - Bone Meal: - material: INK_SACK - amount: 20 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 20 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 20 - durability: 12 - Rose Red: - material: INK_SACK - amount: 20 - durability: 1 - Lime Dye: - material: INK_SACK - amount: 20 - durability: 10 - White Wool: - material: WOOL - amount: 20 - recipes: - - Dye_White_Wool_Blue - - Dye_White_Wool_Gray - - Dye_White_Wool_Brown - - Dye_White_Wool_Purple - - Dye_White_Wool_Yellow - - Dye_White_Wool_Black - - Dye_White_Wool_Magenta - - Dye_White_Wool_Pink - - Dye_White_Wool_Cyan - - Dye_White_Wool_Orange - - Dye_White_Wool_Green - - Dye_White_Wool_Light_Gray - - Dye_White_Wool_Light_Blue - - Dye_White_Wool_Red - - Dye_White_Wool_Lime - repair_multiple: 2 - repair_inputs: - Lapis Lazuli: - material: INK_SACK - durability: 4 - Gray Dye: - material: INK_SACK - durability: 8 - Cocoa: - material: INK_SACK - durability: 3 - Purple Dye: - material: INK_SACK - durability: 5 - Dandelion Yellow: - material: INK_SACK - durability: 11 - Ink Sack: - material: INK_SACK - Magenta Dye: - material: INK_SACK - durability: 13 - Pink Dye: - material: INK_SACK - durability: 9 - Cyan Dye: - material: INK_SACK - durability: 6 - Orange Dye: - material: INK_SACK - durability: 14 - Cactus Green: - material: INK_SACK - durability: 2 - Bone Meal: - material: INK_SACK - durability: 15 - Light Gray Dye: - material: INK_SACK - durability: 7 - Light Blue Dye: - material: INK_SACK - durability: 12 - Rose Red: - material: INK_SACK - durability: 1 - Lime Dye: - material: INK_SACK - durability: 10 - White Wool: - material: WOOL - Wood_Cauldron: - name: Wood Cauldron - fuel: - Charcoal: - material: COAL - durability: 1 - inputs: - Stick: - material: STICK - amount: 1024 - recipes: - - Wood_XP_Bottle_0 - - Wood_XP_Bottle_1 - - Wood_XP_Bottle_2 - - Wood_XP_Bottle_3 - - Wood_XP_Bottle_4 - - Wood_XP_Bottle_5 - repair_multiple: 103 - repair_inputs: - Stick: - material: STICK -production_recipes: - Wood_XP_Bottle_0: - name: Brew XP Bottles - 1 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 24 - Wheat: - material: WHEAT - amount: 1280 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 24 - Baked_Potato: - name: Bake Potato - production_time: 24 - inputs: - Potato: - material: POTATO_ITEM - amount: 192 - outputs: - Baked Potato: - material: BAKED_POTATO - amount: 384 - Wood_XP_Bottle_2: - name: Brew XP Bottles - 3 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 10 - Baked Potato: - material: BAKED_POTATO - amount: 1280 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 10 - Dye_Black_Wool_Cyan: - name: Dye Black Wool Cyan - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Wool: - material: WOOL - amount: 64 - durability: 9 - Dye_Light_Gray_Wool_Purple: - name: Dye Light Gray Wool Purple - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Wool: - material: WOOL - amount: 64 - durability: 10 - Dye_Black_Wool_Orange: - name: Dye Black Wool Orange - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Wool: - material: WOOL - amount: 64 - durability: 1 - Dye_Light_Gray_Wool_Green: - name: Dye Light Gray Wool Green - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 - outputs: - Green Wool: - material: WOOL - amount: 64 - durability: 13 - Dye_Light_Gray_Wool_Gray: - name: Dye Light Gray Wool Gray - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 - outputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Smelt_Diamond_Ore: - name: Smelt Diamond Ore - production_time: 1 - inputs: - Diamond Ore: - material: DIAMOND_ORE - amount: 16 - outputs: - Diamond: - material: DIAMOND - amount: 48 - Diamond_XP_Bottle_0: - name: Brew XP Bottles - 1 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 128 - Carrot: - material: CARROT_ITEM - amount: 96 - Melon Block: - material: MELON_BLOCK - amount: 32 - Cactus: - material: CACTUS - amount: 256 - Red Rose: - material: RED_ROSE - amount: 8 - Rotten Flesh: - material: ROTTEN_FLESH - amount: 128 - Red Mushroom: - material: RED_MUSHROOM - amount: 32 - Vine: - material: VINE - amount: 32 - Bread: - material: BREAD - amount: 128 - Grilled Pork: - material: GRILLED_PORK - amount: 32 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 128 - Dye_Brown_Wool_Orange: - name: Dye Brown Wool Orange - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Wool: - material: WOOL - amount: 64 - durability: 1 - Smelt_Jungle_Wood: - name: Burn Jungle Wood - production_time: 24 - inputs: - Jungle Wood: - material: LOG - amount: 256 - durability: 3 - outputs: - Charcoal: - material: COAL - amount: 512 - durability: 1 - Burn_Acacia_Wood: - name: Burn Acacia Wood - production_time: 24 - inputs: - Acacia Wood: - material: LOG_2 - amount: 256 - outputs: - Charcoal: - material: COAL - amount: 512 - durability: 1 - Burn_Dark_Oak_Wood: - name: Burn Dark Oak Wood - production_time: 24 - inputs: - Dark Oak Wood: - material: LOG_2 - amount: 256 - durability: 1 - outputs: - Charcoal: - material: COAL - amount: 512 - durability: 1 - Diamond_Boots: - name: Forge Diamond Boots. - production_time: 20 + display_name: Leather Chestplate Rank 4 + lore: Leather Chestplate Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + LEATHER_HELMET_RANK_0: + name: Leather Helmet Forger Rank 0 + production_time: 360 inputs: - Diamond: - material: DIAMOND - amount: 20 - outputs: - Diamond Boots: - material: DIAMOND_BOOTS - amount: 15 - Dye_Gray_Wool_Black: - name: Dye Gray Wool Black - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Ink Sack: - material: INK_SACK - amount: 4 - outputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Dye_Black_Wool_Brown: - name: Dye Black Wool Brown - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Cocoa: - material: INK_SACK - amount: 4 - durability: 3 + Leather: + material: LEATHER + amount: 32 outputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Iron_Boots: - name: Forge Iron Boots. - production_time: 20 + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 0 + lore: Leather Helmet Rank 0 + LEATHER_HELMET_RANK_1: + name: Leather Helmet Forger Rank 1 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 20 - outputs: - Iron Boots: - material: IRON_BOOTS - amount: 15 - Dye_Pink_Wool_Brown: - name: Dye Pink Wool Brown - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Cocoa: - material: INK_SACK - amount: 4 - durability: 3 - outputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Gold_Spade: - name: Forge Gold Spade. - production_time: 5 + Leather: + material: LEATHER + amount: 32 + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 0 + lore: Leather Helmet Rank 0 + outputs: + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 1 + lore: Leather Helmet Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + LEATHER_HELMET_RANK_2: + name: Leather Helmet Forger Rank 2 + production_time: 360 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 5 - outputs: - Gold Spade: - material: GOLD_SPADE - amount: 15 + Leather: + material: LEATHER + amount: 32 + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 1 + lore: Leather Helmet Rank 1 + outputs: + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 2 + lore: Leather Helmet Rank 2 enchantments: - Unbreaking 3: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: type: DURABILITY - level: 3 - Silk Touch 1: - type: SILK_TOUCH level: 1 - probability: 0.1 - Efficiency 1: - type: DIG_SPEED - level: 1 - probability: 0.3 - Efficiency 2: - type: DIG_SPEED - level: 2 - probability: 0.2 - Efficiency 3: - type: DIG_SPEED + LEATHER_HELMET_RANK_3: + name: Leather Helmet Forger Rank 3 + production_time: 360 + inputs: + Leather: + material: LEATHER + amount: 32 + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 2 + lore: Leather Helmet Rank 2 + outputs: + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 3 + lore: Leather Helmet Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL level: 3 - probability: 0.1 - Efficiency 4: - type: DIG_SPEED - level: 4 - probability: 0.05 - Efficiency 5: - type: DIG_SPEED - level: 5 - probability: 0.01 - Dye_Black_Wool_Gray: - name: Dye Black Wool Gray - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 - outputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Dye_Gray_Wool_Light_Gray: - name: Dye Gray Wool Light Gray - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 - outputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Dye_White_Wool_Cyan: - name: Dye White Wool Cyan - inputs: - White Wool: - material: WOOL - amount: 64 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Wool: - material: WOOL - amount: 64 - durability: 9 - Diamond_Hoe: - name: Forge Diamond Hoe. - production_time: 10 + Unbreaking: + type: DURABILITY + level: 2 + LEATHER_HELMET_RANK_4: + name: Leather Helmet Forger Rank 4 + production_time: 360 inputs: - Diamond: - material: DIAMOND - amount: 10 - outputs: - Diamond Hoe: - material: DIAMOND_HOE - amount: 30 - Gold_Chestplate: - name: Forge Gold Chestplate. - production_time: 40 - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 40 - outputs: - Gold Chestplate: - material: GOLD_CHESTPLATE - amount: 15 - durability: -218 + Leather: + material: LEATHER + amount: 32 + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 3 + lore: Leather Helmet Rank 3 + outputs: + Leather Helmet: + material: LEATHER_HELMET + amount: 1 + display_name: Leather Helmet Rank 4 + lore: Leather Helmet Rank 4 enchantments: - Unbreaking 3: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: type: DURABILITY level: 3 - Blast Protection 1: - type: PROTECTION_EXPLOSIONS + LEATHER_LEGGINGS_RANK_0: + name: Leather Leggings Forger Rank 0 + production_time: 360 + inputs: + Leather: + material: LEATHER + amount: 32 + outputs: + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 0 + lore: Leather Leggings Rank 0 + LEATHER_LEGGINGS_RANK_1: + name: Leather Leggings Forger Rank 1 + production_time: 360 + inputs: + Leather: + material: LEATHER + amount: 32 + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 0 + lore: Leather Leggings Rank 0 + outputs: + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 1 + lore: Leather Leggings Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL level: 1 - probability: 0.5 - Blast Protection 2: - type: PROTECTION_EXPLOSIONS + LEATHER_LEGGINGS_RANK_2: + name: Leather Leggings Forger Rank 2 + production_time: 360 + inputs: + Leather: + material: LEATHER + amount: 32 + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 1 + lore: Leather Leggings Rank 1 + outputs: + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 2 + lore: Leather Leggings Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL level: 2 - probability: 0.4 - Blast Protection 3: - type: PROTECTION_EXPLOSIONS - level: 3 - probability: 0.3 - Blast Protection 4: - type: PROTECTION_EXPLOSIONS - level: 4 - probability: 0.4 - Fire Protection 1: - type: PROTECTION_FIRE + Unbreaking: + type: DURABILITY level: 1 - probability: 0.5 - Fire Protection 2: - type: PROTECTION_FIRE - level: 2 - probability: 0.4 - Fire Protection 3: - type: PROTECTION_FIRE + LEATHER_LEGGINGS_RANK_3: + name: Leather Leggings Forger Rank 3 + production_time: 360 + inputs: + Leather: + material: LEATHER + amount: 32 + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 2 + lore: Leather Leggings Rank 2 + outputs: + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 3 + lore: Leather Leggings Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL level: 3 - probability: 0.3 - Fire Protection 4: - type: PROTECTION_FIRE - level: 4 - probability: 0.4 - Projectile Protection 1: - type: PROTECTION_PROJECTILE - level: 1 - probability: 0.5 - Projectile Protection 2: - type: PROTECTION_PROJECTILE + Unbreaking: + type: DURABILITY level: 2 - probability: 0.4 - Projectile Protection 3: - type: PROTECTION_PROJECTILE - level: 3 - probability: 0.3 - Projectile Protection 4: - type: PROTECTION_PROJECTILE - level: 4 - probability: 0.4 - Dye_Light_Gray_Wool_Light_Blue: - name: Dye Light Gray Wool Light Blue - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Wool: - material: WOOL - amount: 64 - durability: 3 - Dye_Brown_Wool_Cyan: - name: Dye Brown Wool Cyan - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Wool: - material: WOOL - amount: 64 - durability: 9 - Iron_XP_Bottle_1: - name: Brew XP Bottles - 2 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 14 - Carrot: - material: CARROT_ITEM - amount: 256 - Nether Wart: - material: NETHER_STALK - amount: 256 - Baked Potato: - material: BAKED_POTATO - amount: 256 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 14 - Dye_White_Wool_Red: - name: Dye White Wool Red - inputs: - White Wool: - material: WOOL - amount: 64 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 - outputs: - Red Wool: - material: WOOL - amount: 64 - durability: 14 - Dye_Brown_Wool_Purple: - name: Dye Brown Wool Purple - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Wool: - material: WOOL - amount: 64 - durability: 10 - Dye_White_Wool_Purple: - name: Dye White Wool Purple - inputs: - White Wool: - material: WOOL - amount: 64 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Wool: - material: WOOL - amount: 64 - durability: 10 - Wood_XP_Bottle_4: - name: Brew XP Bottles - 5 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 14 - Carrot: - material: CARROT_ITEM - amount: 1280 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 14 - Wood_XP_Bottle_5: - name: Brew XP Bottles - 6 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 24 - Hay Bale: - material: HAY_BLOCK - amount: 143 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 24 - Dye_Light_Gray_Wool_Orange: - name: Dye Light Gray Wool Orange - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Wool: - material: WOOL - amount: 64 - durability: 1 - Dye_Black_Wool_Yellow: - name: Dye Black Wool Yellow - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Wool: - material: WOOL - amount: 64 - durability: 4 - Dye_Light_Gray_Wool_Pink: - name: Dye Light Gray Wool Pink - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Dye_Light_Gray_Wool_Brown: - name: Dye Light Gray Wool Brown - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Cocoa: - material: INK_SACK - amount: 4 - durability: 3 - outputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Smelt_Spruce_Wood: - name: Burn Spruce Wood - production_time: 24 - inputs: - Spruce Wood: - material: LOG - amount: 256 - durability: 1 - outputs: - Charcoal: - material: COAL - amount: 512 - durability: 1 - Dye_Brown_Wool_Magenta: - name: Dye Brown Wool Magenta - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 - outputs: - Magenta Wool: - material: WOOL - amount: 64 - durability: 2 - Dye_White_Wool_Brown: - name: Dye White Wool Brown - inputs: - White Wool: - material: WOOL - amount: 64 - Cocoa: - material: INK_SACK - amount: 4 - durability: 3 - outputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Dye_Gray_Wool_Lime: - name: Dye Gray Wool Lime - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 - outputs: - Lime Wool: - material: WOOL - amount: 64 - durability: 5 - Dye_Light_Gray_Wool_Black: - name: Dye Light Gray Wool Black - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Ink Sack: - material: INK_SACK - amount: 4 - outputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Dye_Brown_Wool_Yellow: - name: Dye Brown Wool Yellow - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Wool: - material: WOOL - amount: 64 - durability: 4 - Dye_Pink_Wool_White: - name: Dye Pink Wool White - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 - outputs: - White Wool: - material: WOOL - amount: 64 - Smelt_Coal_Ore: - name: Smelt Coal Ore - production_time: 12 + LEATHER_LEGGINGS_RANK_4: + name: Leather Leggings Forger Rank 4 + production_time: 360 inputs: - Coal Ore: - material: COAL_ORE - amount: 128 - outputs: - Coal: - material: COAL - amount: 384 - Dye_Brown_Wool_Green: - name: Dye Brown Wool Green - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 + Leather: + material: LEATHER + amount: 32 + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 3 + lore: Leather Leggings Rank 3 + outputs: + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 1 + display_name: Leather Leggings Rank 4 + lore: Leather Leggings Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + IRON_BOOTS_RANK_0: + name: Iron Boots Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Leather Boots: + material: LEATHER_BOOTS + amount: 2 + display_name: Leather Boots Rank 4 + lore: Leather Boots Rank 4 outputs: - Green Wool: - material: WOOL - amount: 64 - durability: 13 - Dye_Light_Gray_Wool_Lime: - name: Dye Light Gray Wool Lime - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 0 + lore: Iron Boots Rank 0 + IRON_BOOTS_RANK_1: + name: Iron Boots Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 0 + lore: Iron Boots Rank 0 outputs: - Lime Wool: - material: WOOL - amount: 64 - durability: 5 - Smelt_Birch_Wood: - name: Burn Birch Wood - production_time: 24 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 1 + lore: Iron Boots Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + IRON_BOOTS_RANK_2: + name: Iron Boots Forger Rank 2 + production_time: 360 inputs: - Birch Wood: - material: LOG - amount: 256 - durability: 2 + Iron: + material: IRON + amount: 32 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 1 + lore: Iron Boots Rank 1 outputs: - Charcoal: - material: COAL - amount: 512 - durability: 1 - Diamond_Sword: - name: Forge Diamond Sword. - production_time: 10 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 2 + lore: Iron Boots Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + IRON_BOOTS_RANK_3: + name: Iron Boots Forger Rank 3 + production_time: 360 inputs: - Diamond: - material: DIAMOND - amount: 10 - outputs: - Diamond Sword: - material: DIAMOND_SWORD - amount: 15 - Dye_Pink_Wool_Orange: - name: Dye Pink Wool Orange - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Wool: - material: WOOL - amount: 64 - durability: 1 - Dye_Black_Wool_Blue: - name: Dye Black Wool Blue - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Wool: - material: WOOL - amount: 64 - durability: 11 - Dye_Black_Wool_Magenta: - name: Dye Black Wool Magenta - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 + Iron: + material: IRON + amount: 32 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 2 + lore: Iron Boots Rank 2 outputs: - Magenta Wool: - material: WOOL - amount: 64 - durability: 2 - Iron_Helmet: - name: Forge Iron Helmet. - production_time: 25 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 3 + lore: Iron Boots Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + IRON_BOOTS_RANK_4: + name: Iron Boots Forger Rank 4 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 25 - outputs: - Iron Helmet: - material: IRON_HELMET - amount: 15 - Dye_Gray_Wool_Cyan: - name: Dye Gray Wool Cyan - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Wool: - material: WOOL - amount: 64 - durability: 9 - Cooked_Chicken: - name: Grill Raw Chicken - production_time: 6 - inputs: - Raw Chicken: - material: RAW_CHICKEN - amount: 64 - outputs: - Cooked Chicken: - material: COOKED_CHICKEN - amount: 128 - Dye_Brown_Wool_Pink: - name: Dye Brown Wool Pink - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Dye_Black_Wool_White: - name: Dye Black Wool White - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 - outputs: - White Wool: - material: WOOL - amount: 64 - Dye_Gray_Wool_Pink: - name: Dye Gray Wool Pink - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Dye_White_Wool_Pink: - name: Dye White Wool Pink - inputs: - White Wool: - material: WOOL - amount: 64 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Dye_Light_Gray_Wool_Yellow: - name: Dye Light Gray Wool Yellow - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Wool: - material: WOOL - amount: 64 - durability: 4 - Dye_Pink_Wool_Green: - name: Dye Pink Wool Green - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 - outputs: - Green Wool: - material: WOOL - amount: 64 - durability: 13 - Dye_White_Wool_Black: - name: Dye White Wool Black - inputs: - White Wool: - material: WOOL - amount: 64 - Ink Sack: - material: INK_SACK - amount: 4 + Iron: + material: IRON + amount: 32 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 3 + lore: Iron Boots Rank 3 outputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Dye_Gray_Wool_Blue: - name: Dye Gray Wool Blue - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Wool: - material: WOOL - amount: 64 - durability: 11 - Gold_Pickaxe: - name: Forge Gold Pickaxe. - production_time: 15 - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 15 - outputs: - Gold Pickaxe: - material: GOLD_PICKAXE - amount: 15 + Iron Boots: + material: IRON_BOOTS + amount: 1 + display_name: Iron Boots Rank 4 + lore: Iron Boots Rank 4 enchantments: - Unbreaking 3: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: type: DURABILITY level: 3 - Silk Touch 1: - type: SILK_TOUCH - level: 1 - probability: 0.1 - Efficiency 1: - type: DIG_SPEED - level: 1 - probability: 0.3 - Efficiency 2: - type: DIG_SPEED - level: 2 - probability: 0.2 - Efficiency 3: - type: DIG_SPEED - level: 3 - probability: 0.1 - Efficiency 4: - type: DIG_SPEED - level: 4 - probability: 0.05 - Efficiency 5: - type: DIG_SPEED - level: 5 - probability: 0.01 - Dye_Pink_Wool_Blue: - name: Dye Pink Wool Blue - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Wool: - material: WOOL - amount: 64 - durability: 11 - Dye_Light_Gray_Wool_Cyan: - name: Dye Light Gray Wool Cyan - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Wool: - material: WOOL - amount: 64 - durability: 9 - Dye_Pink_Wool_Magenta: - name: Dye Pink Wool Magenta - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 - outputs: - Magenta Wool: - material: WOOL - amount: 64 - durability: 2 - Dye_Light_Gray_Wool_Blue: - name: Dye Light Gray Wool Blue - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Wool: - material: WOOL - amount: 64 - durability: 11 - Dye_White_Wool_Orange: - name: Dye White Wool Orange - inputs: - White Wool: - material: WOOL - amount: 64 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Wool: - material: WOOL - amount: 64 - durability: 1 - Cooked_Beef: - name: Cook Beef - production_time: 6 - inputs: - Raw Beef: - material: RAW_BEEF - amount: 64 - outputs: - Cooked Beef: - material: COOKED_BEEF - amount: 128 - Cook_Salmon: - name: Cook Salmon - production_time: 6 - inputs: - Raw Salmon: - material: RAW_FISH - amount: 64 - durability: 1 - outputs: - Cooked Salmon: - material: COOKED_FISH - amount: 128 - durability: 1 - Produce_TNT: - name: Produce TNT - production_time: 128 - inputs: - Sulphur: - material: SULPHUR - amount: 128 - Sand: - material: SAND - amount: 128 - outputs: - TNT: - material: TNT - amount: 64 - Produce_Fire_Charges: - name: Produce Fire Charges - production_time: 128 - inputs: - Sulphur: - material: SULPHUR - amount: 16 - Blaze Powder: - material: BLAZE_POWDER - amount: 16 + IRON_CHESTPLATE_RANK_0: + name: Iron Chestplate Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Leather Chestplate: + material: LEATHER_CHESTPLATE + amount: 2 + display_name: Leather Chestplate Rank 4 + lore: Leather Chestplate Rank 4 outputs: - Fire Charge: - material: FIRE_CHARGE - amount: 128 - Dye_White_Wool_Green: - name: Dye White Wool Green - inputs: - White Wool: - material: WOOL - amount: 64 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 0 + lore: Iron Chestplate Rank 0 + IRON_CHESTPLATE_RANK_1: + name: Iron Chestplate Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 0 + lore: Iron Chestplate Rank 0 outputs: - Green Wool: - material: WOOL - amount: 64 - durability: 13 - Wood_XP_Bottle_3: - name: Brew XP Bottles - 4 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 1 + lore: Iron Chestplate Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + IRON_CHESTPLATE_RANK_2: + name: Iron Chestplate Forger Rank 2 + production_time: 360 inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 8 - Cookie: - material: COOKIE - amount: 1280 + Iron: + material: IRON + amount: 32 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 1 + lore: Iron Chestplate Rank 1 outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 8 - Iron_Chestplate: - name: Forge Iron Chestplate. - production_time: 40 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 2 + lore: Iron Chestplate Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + IRON_CHESTPLATE_RANK_3: + name: Iron Chestplate Forger Rank 3 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 40 + Iron: + material: IRON + amount: 32 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 2 + lore: Iron Chestplate Rank 2 outputs: Iron Chestplate: material: IRON_CHESTPLATE - amount: 15 - Dye_Black_Wool_Red: - name: Dye Black Wool Red - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 + amount: 1 + display_name: Iron Chestplate Rank 3 + lore: Iron Chestplate Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + IRON_CHESTPLATE_RANK_4: + name: Iron Chestplate Forger Rank 4 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 3 + lore: Iron Chestplate Rank 3 outputs: - Red Wool: - material: WOOL - amount: 64 - durability: 14 - Gold_Leggings: - name: Forge Gold Leggings. - production_time: 35 - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 35 - outputs: - Gold Leggings: - material: GOLD_LEGGINGS - amount: 15 - durability: -218 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 1 + display_name: Iron Chestplate Rank 4 + lore: Iron Chestplate Rank 4 enchantments: - Unbreaking 3: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: type: DURABILITY level: 3 - Blast Protection 1: - type: PROTECTION_EXPLOSIONS + IRON_HELMET_RANK_0: + name: Iron Helmet Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Leather Helmet: + material: LEATHER_HELMET + amount: 2 + display_name: Leather Helmet Rank 4 + lore: Leather Helmet Rank 4 + outputs: + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 0 + lore: Iron Helmet Rank 0 + IRON_HELMET_RANK_1: + name: Iron Helmet Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 0 + lore: Iron Helmet Rank 0 + outputs: + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 1 + lore: Iron Helmet Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL level: 1 - probability: 0.5 - Blast Protection 2: - type: PROTECTION_EXPLOSIONS + IRON_HELMET_RANK_2: + name: Iron Helmet Forger Rank 2 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 1 + lore: Iron Helmet Rank 1 + outputs: + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 2 + lore: Iron Helmet Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL level: 2 - probability: 0.4 - Blast Protection 3: - type: PROTECTION_EXPLOSIONS - level: 3 - probability: 0.3 - Blast Protection 4: - type: PROTECTION_EXPLOSIONS - level: 4 - probability: 0.4 - Fire Protection 1: - type: PROTECTION_FIRE + Unbreaking: + type: DURABILITY level: 1 - probability: 0.5 - Fire Protection 2: - type: PROTECTION_FIRE - level: 2 - probability: 0.4 - Fire Protection 3: - type: PROTECTION_FIRE + IRON_HELMET_RANK_3: + name: Iron Helmet Forger Rank 3 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 2 + lore: Iron Helmet Rank 2 + outputs: + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 3 + lore: Iron Helmet Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL level: 3 - probability: 0.3 - Fire Protection 4: - type: PROTECTION_FIRE - level: 4 - probability: 0.4 - Projectile Protection 1: - type: PROTECTION_PROJECTILE - level: 1 - probability: 0.5 - Projectile Protection 2: - type: PROTECTION_PROJECTILE + Unbreaking: + type: DURABILITY level: 2 - probability: 0.4 - Projectile Protection 3: - type: PROTECTION_PROJECTILE - level: 3 - probability: 0.3 - Projectile Protection 4: - type: PROTECTION_PROJECTILE - level: 4 - probability: 0.4 - Dye_White_Wool_Light_Gray: - name: Dye White Wool Light Gray - inputs: - White Wool: - material: WOOL - amount: 64 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 - outputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Dye_Gray_Wool_Green: - name: Dye Gray Wool Green - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 - outputs: - Green Wool: - material: WOOL - amount: 64 - durability: 13 - Diamond_Chestplate: - name: Forge Diamond Chestplate. - production_time: 40 + IRON_HELMET_RANK_4: + name: Iron Helmet Forger Rank 4 + production_time: 360 inputs: - Diamond: - material: DIAMOND - amount: 40 + Iron: + material: IRON + amount: 32 + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 3 + lore: Iron Helmet Rank 3 outputs: - Diamond Chestplate: - material: DIAMOND_CHESTPLATE - amount: 15 - Dye_Light_Gray_Wool_Magenta: - name: Dye Light Gray Wool Magenta - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 + Iron Helmet: + material: IRON_HELMET + amount: 1 + display_name: Iron Helmet Rank 4 + lore: Iron Helmet Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + IRON_LEGGINGS_RANK_0: + name: Iron Leggings Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Leather Leggings: + material: LEATHER_LEGGINGS + amount: 2 + display_name: Leather Leggings Rank 4 + lore: Leather Leggings Rank 4 outputs: - Magenta Wool: - material: WOOL - amount: 64 - durability: 2 - Dye_Brown_Wool_Light_Gray: - name: Dye Brown Wool Light Gray - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 0 + lore: Iron Leggings Rank 0 + IRON_LEGGINGS_RANK_1: + name: Iron Leggings Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 0 + lore: Iron Leggings Rank 0 outputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Iron_Leggings: - name: Forge Iron Leggings. - production_time: 35 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 1 + lore: Iron Leggings Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + IRON_LEGGINGS_RANK_2: + name: Iron Leggings Forger Rank 2 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 35 + Iron: + material: IRON + amount: 32 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 1 + lore: Iron Leggings Rank 1 outputs: Iron Leggings: material: IRON_LEGGINGS - amount: 15 - Diamond_XP_Bottle_1: - name: Brew XP Bottles - 2 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 128 - Nether Wart: - material: NETHER_STALK - amount: 64 - Melon Block: - material: MELON_BLOCK - amount: 32 - Sugar Cane: - material: SUGAR_CANE - amount: 128 - Yellow Flower: - material: YELLOW_FLOWER - amount: 16 - Rotten Flesh: - material: ROTTEN_FLESH - amount: 128 - Brown Mushroom: - material: BROWN_MUSHROOM - amount: 64 - Vine: - material: VINE - amount: 32 - Baked Potato: - material: BAKED_POTATO - amount: 256 - Cooked Chicken: - material: COOKED_CHICKEN - amount: 16 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 128 - Diamond_XP_Bottle_2: - name: Brew XP Bottles - 3 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 128 - Wheat: - material: WHEAT - amount: 128 - Cocoa: - material: INK_SACK - amount: 16 - durability: 3 - Pumpkin: - material: PUMPKIN - amount: 128 - Cactus: - material: CACTUS - amount: 256 - Red Rose: - material: RED_ROSE - amount: 8 - Spider Eye: - material: SPIDER_EYE - amount: 32 - Red Mushroom: - material: RED_MUSHROOM - amount: 16 - Grass: - material: LONG_GRASS - amount: 32 - durability: 1 - Cooked Fish: - material: COOKED_FISH - amount: 16 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 128 - Diamond_XP_Bottle_3: - name: Brew XP Bottles - 4 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 128 - Nether Wart: - material: NETHER_STALK - amount: 64 - Pumpkin: - material: PUMPKIN - amount: 128 - Sugar Cane: - material: SUGAR_CANE - amount: 128 - Yellow Flower: - material: YELLOW_FLOWER - amount: 16 - Spider Eye: - material: SPIDER_EYE - amount: 32 - Brown Mushroom: - material: BROWN_MUSHROOM - amount: 64 - Grass: - material: LONG_GRASS - amount: 64 - durability: 1 - Cookie: - material: COOKIE - amount: 256 - Cooked Beef: - material: COOKED_BEEF - amount: 32 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 128 - Dye_White_Wool_Gray: - name: Dye White Wool Gray - inputs: - White Wool: - material: WOOL - amount: 64 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 - outputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Iron_Spade: - name: Forge Iron Spade. - production_time: 5 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 5 - outputs: - Iron Spade: - material: IRON_SPADE - amount: 15 - Dye_Brown_Wool_Light_Blue: - name: Dye Brown Wool Light Blue - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Wool: - material: WOOL - amount: 64 - durability: 3 - Dye_White_Wool_Lime: - name: Dye White Wool Lime - inputs: - White Wool: - material: WOOL - amount: 64 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 - outputs: - Lime Wool: - material: WOOL - amount: 64 - durability: 5 - Dye_Black_Wool_Light_Gray: - name: Dye Black Wool Light Gray - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 - outputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Dye_White_Wool_Blue: - name: Dye White Wool Blue - inputs: - White Wool: - material: WOOL - amount: 64 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Wool: - material: WOOL - amount: 64 - durability: 11 - Dye_Brown_Wool_White: - name: Dye Brown Wool White - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 - outputs: - White Wool: - material: WOOL - amount: 64 - Dye_Pink_Wool_Purple: - name: Dye Pink Wool Purple - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Wool: - material: WOOL - amount: 64 - durability: 10 - Dye_Pink_Wool_Cyan: - name: Dye Pink Wool Cyan - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Wool: - material: WOOL - amount: 64 - durability: 9 - Dye_Light_Gray_Wool_Red: - name: Dye Light Gray Wool Red - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 - outputs: - Red Wool: - material: WOOL - amount: 64 - durability: 14 - Iron_Axe: - name: Forge Iron Axe. - production_time: 15 + amount: 1 + display_name: Iron Leggings Rank 2 + lore: Iron Leggings Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + IRON_LEGGINGS_RANK_3: + name: Iron Leggings Forger Rank 3 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 15 + Iron: + material: IRON + amount: 32 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 2 + lore: Iron Leggings Rank 2 outputs: - Iron Axe: - material: IRON_AXE - amount: 30 - Bake_Cookie: - name: Bake Cocoa - production_time: 24 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 3 + lore: Iron Leggings Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + IRON_LEGGINGS_RANK_4: + name: Iron Leggings Forger Rank 4 + production_time: 360 inputs: - Wheat: - material: WHEAT - amount: 256 - Cocoa: - material: INK_SACK - amount: 128 - durability: 3 - outputs: - Cookie: - material: COOKIE - amount: 2048 - Dye_White_Wool_Light_Blue: - name: Dye White Wool Light Blue - inputs: - White Wool: - material: WOOL - amount: 64 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Wool: - material: WOOL - amount: 64 - durability: 3 - Dye_White_Wool_Yellow: - name: Dye White Wool Yellow - inputs: - White Wool: - material: WOOL - amount: 64 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Wool: - material: WOOL - amount: 64 - durability: 4 - Dye_Light_Gray_Wool_White: - name: Dye Light Gray Wool White - inputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 + Iron: + material: IRON + amount: 32 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 3 + lore: Iron Leggings Rank 3 outputs: - White Wool: - material: WOOL - amount: 64 - Bake_Bread: - name: Bake Wheat - production_time: 24 + Iron Leggings: + material: IRON_LEGGINGS + amount: 1 + display_name: Iron Leggings Rank 4 + lore: Iron Leggings Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_BOOTS_RANK_0: + name: Diamond Boots Forger Rank 0 + production_time: 360 inputs: - Wheat: - material: WHEAT - amount: 384 + Diamond: + material: DIAMOND + amount: 32 + Iron Boots: + material: IRON_BOOTS + amount: 2 + display_name: Iron Boots Rank 4 + lore: Iron Boots Rank 4 outputs: - Bread: - material: BREAD - amount: 256 - Bake_Cake: - name: Bake Cake - production_time: 24 - inputs: - Sugar: - material: SUGAR - amount: 36 - Egg: - material: EGG - amount: 13 - Wheat: - material: WHEAT - amount: 54 - Milk Bucket: - material: MILK_BUCKET - amount: 18 - Bake_Pumpkin_Pie: - name: Bake Pumpkin Pie - production_time: 24 - inputs: - Sugar: - material: SUGAR - amount: 192 - Egg: - material: EGG - amount: 192 - Pumpkin: - material: PUMPKIN - amount: 192 - outputs: - Pumpkin_Pie: - material: PUMPKIN_PIE - amount: 256 - Smelt_Glass: - name: Smelt Glass - production_time: 48 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 0 + lore: Diamond Boots Rank 0 + DIAMOND_BOOTS_RANK_1: + name: Diamond Boots Forger Rank 1 + production_time: 360 inputs: - Sand: - material: SAND - amount: 256 + Diamond: + material: DIAMOND + amount: 32 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 0 + lore: Diamond Boots Rank 0 outputs: - Glass: - material: GLASS - amount: 768 - Smelt_Nether_bricks: - name: Smelt Nether bricks - production_time: 32 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 1 + lore: Diamond Boots Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + DIAMOND_BOOTS_RANK_2: + name: Diamond Boots Forger Rank 2 + production_time: 360 inputs: - Netherrack: - material: NETHERRACK - amount: 512 + Diamond: + material: DIAMOND + amount: 32 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 1 + lore: Diamond Boots Rank 1 outputs: - Nether bricks: - material: NETHER_BRICK_ITEM - amount: 1024 - Bake_clay_blocks: - name: Bake Clay Blocks - production_time: 32 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 2 + lore: Diamond Boots Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_BOOTS_RANK_3: + name: Diamond Boots Forger Rank 3 + production_time: 360 inputs: - Clay: - material: CLAY - amount: 512 + Diamond: + material: DIAMOND + amount: 32 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 2 + lore: Diamond Boots Rank 2 outputs: - Hardened Clay: - material: HARD_CLAY - amount: 1024 - Bake_bricks: - name: Bake Bricks - production_time: 32 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 3 + lore: Diamond Boots Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_BOOTS_RANK_4: + name: Diamond Boots Forger Rank 4 + production_time: 360 inputs: - Clay: - material: CLAY_BALL - amount: 512 - outputs: - Bricks: - material: CLAY_BRICK - amount: 1024 - Bake_pots: - name: Bake Flowerpots - production_time: 5 - inputs: - Clay: - material: CLAY_BALL - amount: 64 - outputs: - Flower Pots: - material: FLOWER_POT - amount: 64 - Smelt_Sandstone: - name: Smelt Sandstone - production_time: 32 - inputs: - Sand: - material: SAND - amount: 512 + Diamond: + material: DIAMOND + amount: 32 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 3 + lore: Diamond Boots Rank 3 outputs: - Sandstone: - material: SANDSTONE - amount: 384 - Smelt_Glass_Panes: - name: Smelt Glass Panes - production_time: 32 - inputs: - Sand: - material: GLASS - amount: 192 - outputs: - Glass Pane: - material: GLASS_PANE - amount: 768 - Smelt_Bottles: - name: Smelt Bottles - production_time: 64 + Diamond Boots: + material: DIAMOND_BOOTS + amount: 1 + display_name: Diamond Boots Rank 4 + lore: Diamond Boots Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_CHESTPLATE_RANK_0: + name: Diamond Chestplate Forger Rank 0 + production_time: 360 inputs: - Sand: - material: SAND - amount: 256 + Diamond: + material: DIAMOND + amount: 32 + Iron Chestplate: + material: IRON_CHESTPLATE + amount: 2 + display_name: Iron Chestplate Rank 4 + lore: Iron Chestplate Rank 4 outputs: - Bottle: - material: GLASS_BOTTLE - amount: 768 - Smelt_Red_Sand: - name: Smelt Red Sand - production_time: 16 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 0 + lore: Diamond Chestplate Rank 0 + DIAMOND_CHESTPLATE_RANK_1: + name: Diamond Chestplate Forger Rank 1 + production_time: 360 inputs: - Sand: - material: SAND - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 0 + lore: Diamond Chestplate Rank 0 outputs: - Red Sand: - material: SAND - amount: 64 - durability: 1 - Smelt_Glass_From_Sandstone: - name: Smelt Glass From Sandstone - production_time: 32 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 1 + lore: Diamond Chestplate Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + DIAMOND_CHESTPLATE_RANK_2: + name: Diamond Chestplate Forger Rank 2 + production_time: 360 inputs: - Sandstone: - material: SANDSTONE - amount: 512 + Diamond: + material: DIAMOND + amount: 32 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 1 + lore: Diamond Chestplate Rank 1 outputs: - Glass: - material: GLASS - amount: 768 - production_time: 6 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 2 + lore: Diamond Chestplate Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_CHESTPLATE_RANK_3: + name: Diamond Chestplate Forger Rank 3 + production_time: 360 inputs: - Lapis Ore: - material: LAPIS_ORE - amount: 32 + Diamond: + material: DIAMOND + amount: 32 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 2 + lore: Diamond Chestplate Rank 2 outputs: - Lapis Lazuli: - material: INK_SACK - amount: 512 - durability: 4 - Smelt_Redstone_Ore: - name: Smelt Redstone Ore - production_time: 16 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 3 + lore: Diamond Chestplate Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_CHESTPLATE_RANK_4: + name: Diamond Chestplate Forger Rank 4 + production_time: 360 inputs: - Redstone Ore: - material: REDSTONE_ORE - amount: 128 + Diamond: + material: DIAMOND + amount: 32 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 3 + lore: Diamond Chestplate Rank 3 outputs: - Redstone: - material: REDSTONE - amount: 1024 - Smelt_Netherquartz_Ore: - name: Smelt Netherquartz ore - production_time: 6 + Diamond Chestplate: + material: DIAMOND_CHESTPLATE + amount: 1 + display_name: Diamond Chestplate Rank 4 + lore: Diamond Chestplate Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_HELMET_RANK_0: + name: Diamond Helmet Forger Rank 0 + production_time: 360 inputs: - Netherquartz ore: - material: QUARTZ_ORE - amount: 64 - outputs: - Quartz: - material: QUARTZ - amount: 192 - Dye_Brown_Wool_Gray: - name: Dye Brown Wool Gray - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 + Diamond: + material: DIAMOND + amount: 32 + Iron Helmet: + material: IRON_HELMET + amount: 2 + display_name: Iron Helmet Rank 4 + lore: Iron Helmet Rank 4 outputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Diamond_Helmet: - name: Forge Diamond Helmet. - production_time: 25 + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 0 + lore: Diamond Helmet Rank 0 + DIAMOND_HELMET_RANK_1: + name: Diamond Helmet Forger Rank 1 + production_time: 360 inputs: Diamond: - material: DIAMOND - amount: 25 + material: DIAMOND + amount: 32 + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 0 + lore: Diamond Helmet Rank 0 outputs: Diamond Helmet: material: DIAMOND_HELMET - amount: 15 - Produce_Rail: - name: Produce Rails - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 128 - Stick: - material: STICK - amount: 16 + amount: 1 + display_name: Diamond Helmet Rank 1 + lore: Diamond Helmet Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + DIAMOND_HELMET_RANK_2: + name: Diamond Helmet Forger Rank 2 + production_time: 360 + inputs: + Diamond: + material: DIAMOND + amount: 32 + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 1 + lore: Diamond Helmet Rank 1 outputs: - Rail: - material: RAILS - amount: 576 - Produce_Redstone_Torches: - name: Produce Redstone Torches + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 2 + lore: Diamond Helmet Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_HELMET_RANK_3: + name: Diamond Helmet Forger Rank 3 + production_time: 360 inputs: - Redstone: - material: REDSTONE - amount: 128 - Stick: - material: STICK - amount: 128 + Diamond: + material: DIAMOND + amount: 32 + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 2 + lore: Diamond Helmet Rank 2 outputs: - Redstone Torches: - material: REDSTONE_TORCH_ON - amount: 256 - Produce_Repeaters: - name: Produce Repeaters + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 3 + lore: Diamond Helmet Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_HELMET_RANK_4: + name: Diamond Helmet Forger Rank 4 + production_time: 360 inputs: - Redstone: - material: REDSTONE - amount: 128 - Stone: - material: STONE - amount: 128 + Diamond: + material: DIAMOND + amount: 32 + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 3 + lore: Diamond Helmet Rank 3 outputs: - Redstone Torches: - material: DIODE - amount: 96 - Produce_Comparators: - name: Produce Comparators + Diamond Helmet: + material: DIAMOND_HELMET + amount: 1 + display_name: Diamond Helmet Rank 4 + lore: Diamond Helmet Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_LEGGINGS_RANK_0: + name: Diamond Leggings Forger Rank 0 + production_time: 360 inputs: - Redstone: - material: REDSTONE - amount: 32 - Stone: - material: STONE - amount: 128 - Netherquartz: - material: QUARTZ - amount: 24 + Diamond: + material: DIAMOND + amount: 32 + Iron Leggings: + material: IRON_LEGGINGS + amount: 2 + display_name: Iron Leggings Rank 4 + lore: Iron Leggings Rank 4 outputs: - Comparators: - material: REDSTONE_COMPARATOR - amount: 32 - Produce_Daylight_Sensors: - name: Produce Daylight Sensors + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 0 + lore: Diamond Leggings Rank 0 + DIAMOND_LEGGINGS_RANK_1: + name: Diamond Leggings Forger Rank 1 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 4 - Glass: - material: GLASS - amount: 64 - Netherquartz: - material: QUARTZ - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 0 + lore: Diamond Leggings Rank 0 outputs: - Daylight sensors: - material: DAYLIGHT_DETECTOR - amount: 32 - Produce_Noteblocks: - name: Produce Noteblocks + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 1 + lore: Diamond Leggings Rank 1 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 1 + DIAMOND_LEGGINGS_RANK_2: + name: Diamond Leggings Forger Rank 2 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 48 - Redstone: - material: REDSTONE - amount: 32 + Diamond: + material: DIAMOND + amount: 32 + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 1 + lore: Diamond Leggings Rank 1 outputs: - Noteblocks: - material: NOTE_BLOCK - amount: 64 - Produce_Dispensers: - name: Produce Dispensers + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 2 + lore: Diamond Leggings Rank 2 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_LEGGINGS_RANK_3: + name: Diamond Leggings Forger Rank 3 + production_time: 360 inputs: - Cobblestone: - material: COBBLESTONE - amount: 320 - Redstone: - material: REDSTONE - amount: 32 - String: - material: STRING - amount: 128 - Chest: - material: CHEST - amount: 4 + Diamond: + material: DIAMOND + amount: 32 + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 2 + lore: Diamond Leggings Rank 2 outputs: - Dispensers: - material: DISPENSER - amount: 64 - Produce_Redstone_lamps: - name: Produce Redstone lamps + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 3 + lore: Diamond Leggings Rank 3 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_LEGGINGS_RANK_4: + name: Diamond Leggings Forger Rank 4 + production_time: 360 inputs: - Glowstone: - material: GLOWSTONE - amount: 128 - Redstone: - material: REDSTONE - amount: 256 + Diamond: + material: DIAMOND + amount: 32 + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 3 + lore: Diamond Leggings Rank 3 outputs: - Redstone lamps: - material: REDSTONE_LAMP_OFF - amount: 128 - Produce_Pistons: - name: Produce Pistons - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 128 - Chest: - material: CHEST - amount: 32 - Cobblestone: - material: COBBLESTONE - amount: 320 - Redstone: - material: REDSTONE - amount: 48 + Diamond Leggings: + material: DIAMOND_LEGGINGS + amount: 1 + display_name: Diamond Leggings Rank 4 + lore: Diamond Leggings Rank 4 + enchantments: + Protection: + type: PROTECTION_ENVIRONMENTAL + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + STONE_SWORD_RANK_0: + name: Stone Sword Forger Rank 0 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 outputs: - Pistons: - material: PISTON_BASE - amount: 128 - Produce_Sticky_Pistons: - name: Produce Sticky Pistons + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 0 + lore: Stone Sword Rank 0 + STONE_SWORD_RANK_1: + name: Stone Sword Forger Rank 1 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 32 - Chest: - material: CHEST - amount: 8 - Redstone: - material: REDSTONE - amount: 12 - Slime Ball: - material: SLIME_BALL - amount: 16 + Stone: + material: STONE + amount: 32 + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 0 + lore: Stone Sword Rank 0 + outputs: + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 1 + lore: Stone Sword Rank 1 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 1 + STONE_SWORD_RANK_2: + name: Stone Sword Forger Rank 2 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 1 + lore: Stone Sword Rank 1 + outputs: + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 2 + lore: Stone Sword Rank 2 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 2 + STONE_SWORD_RANK_3: + name: Stone Sword Forger Rank 3 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 2 + lore: Stone Sword Rank 2 + outputs: + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 3 + lore: Stone Sword Rank 3 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 3 + STONE_SWORD_RANK_4: + name: Stone Sword Forger Rank 4 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 3 + lore: Stone Sword Rank 3 + outputs: + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 4 + lore: Stone Sword Rank 4 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 4 + STONE_SWORD_RANK_5: + name: Stone Sword Forger Rank 5 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 4 + lore: Stone Sword Rank 4 + outputs: + Stone Sword: + material: STONE_SWORD + amount: 1 + display_name: Stone Sword Rank 5 + lore: Stone Sword Rank 5 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 5 + IRON_SWORD_RANK_0: + name: Iron Sword Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Stone Sword: + material: STONE_SWORD + amount: 2 + display_name: Stone Sword Rank 4 + lore: Stone Sword Rank 4 + outputs: + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 0 + lore: Iron Sword Rank 0 + IRON_SWORD_RANK_1: + name: Iron Sword Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 0 + lore: Iron Sword Rank 0 outputs: - Pistons: - material: PISTON_STICKY_BASE - amount: 32 - Produce_Jukeboxes: - name: Produce Jukeboxes - production_time: 16 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 1 + lore: Iron Sword Rank 1 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 1 + IRON_SWORD_RANK_2: + name: Iron Sword Forger Rank 2 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 32 - Diamond: - material: DIAMOND - amount: 48 + Iron: + material: IRON + amount: 32 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 1 + lore: Iron Sword Rank 1 outputs: - Jukebox: - material: JUKEBOX - amount: 64 - Produce_Hoppers: - name: Produce_Hoppers - production_time: 16 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 2 + lore: Iron Sword Rank 2 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 2 + IRON_SWORD_RANK_3: + name: Iron Sword Forger Rank 3 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 32 - Iron Ingot: - material: IRON_INGOT - amount: 192 + Iron: + material: IRON + amount: 32 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 2 + lore: Iron Sword Rank 2 outputs: - Hopper: - material: HOPPER - amount: 64 - Smelt_Gold_Ore: - name: Smelt Gold Ore - production_time: 3 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 3 + lore: Iron Sword Rank 3 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 3 + IRON_SWORD_RANK_4: + name: Iron Sword Forger Rank 4 + production_time: 360 inputs: - Gold Ore: - material: GOLD_ORE - amount: 32 - outputs: - Gold Ingot: - material: GOLD_INGOT - amount: 224 - Dye_Gray_Wool_Brown: - name: Dye Gray Wool Brown - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Cocoa: - material: INK_SACK - amount: 4 - durability: 3 + Iron: + material: IRON + amount: 32 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 3 + lore: Iron Sword Rank 3 outputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Iron_Pickaxe: - name: Forge Iron Pickaxe. - production_time: 15 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 4 + lore: Iron Sword Rank 4 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 4 + IRON_SWORD_RANK_5: + name: Iron Sword Forger Rank 5 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 15 - outputs: - Iron Pickaxe: - material: IRON_PICKAXE - amount: 15 - Dye_Black_Wool_Pink: - name: Dye Black Wool Pink - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Dye_Gray_Wool_Orange: - name: Dye Gray Wool Orange - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 + Iron: + material: IRON + amount: 32 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 4 + lore: Iron Sword Rank 4 outputs: - Orange Wool: - material: WOOL - amount: 64 - durability: 1 - Smelt_Cracked_Stone_Brick: - name: Smelt Cracked Stone Brick - production_time: 64 + Iron Sword: + material: IRON_SWORD + amount: 1 + display_name: Iron Sword Rank 5 + lore: Iron Sword Rank 5 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 5 + DIAMOND_SWORD_RANK_0: + name: Diamond Sword Forger Rank 0 + production_time: 360 inputs: - Stone Brick: - material: SMOOTH_BRICK - amount: 64 - Lapis Lazuli: - material: INK_SACK - amount: 32 - durability: 4 - Flint: - material: FLINT - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Iron Sword: + material: IRON_SWORD + amount: 2 + display_name: Iron Sword Rank 4 + lore: Iron Sword Rank 4 outputs: - Cracked Stone Brick: - material: SMOOTH_BRICK - amount: 64 - durability: 2 - Iron_XP_Bottle_0: - name: Brew XP Bottles - 1 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 0 + lore: Diamond Sword Rank 0 + DIAMOND_SWORD_RANK_1: + name: Diamond Sword Forger Rank 1 + production_time: 360 inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 24 - Carrot: - material: CARROT_ITEM - amount: 256 - Cactus: - material: CACTUS - amount: 256 - Bread: - material: BREAD - amount: 256 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 24 - Iron_XP_Bottle_3: - name: Brew XP Bottles - 4 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 42 - Nether Wart: - material: NETHER_STALK - amount: 256 - Melon Block: - material: MELON_BLOCK - amount: 64 - Sugar Cane: - material: SUGAR_CANE - amount: 64 - Cookie: - material: COOKIE - amount: 512 - Baked Potato: - material: BAKED_POTATO - amount: 64 - Grilled Pork: - material: GRILLED_PORK - amount: 64 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 42 - Iron_XP_Bottle_2: - name: Brew XP Bottles - 3 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 42 - Carrot: - material: CARROT_ITEM - amount: 128 - Cocoa: - material: INK_SACK - amount: 64 - durability: 3 - Pumpkin: - material: PUMPKIN - amount: 64 - Cactus: - material: CACTUS - amount: 64 - Bread: - material: BREAD - amount: 64 - Cooked Beef: - material: COOKED_BEEF - amount: 32 + Diamond: + material: DIAMOND + amount: 32 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 0 + lore: Diamond Sword Rank 0 outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 42 - Diamond_Leggings: - name: Forge Diamond Leggings. - production_time: 35 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 1 + lore: Diamond Sword Rank 1 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 1 + DIAMOND_SWORD_RANK_2: + name: Diamond Sword Forger Rank 2 + production_time: 360 inputs: Diamond: - material: DIAMOND - amount: 35 - outputs: - Diamond Leggings: - material: DIAMOND_LEGGINGS - amount: 15 - Dye_Gray_Wool_Red: - name: Dye Gray Wool Red - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 - outputs: - Red Wool: - material: WOOL - amount: 64 - durability: 14 - Dye_Pink_Wool_Light_Gray: - name: Dye Pink Wool Light Gray - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 + material: DIAMOND + amount: 32 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 1 + lore: Diamond Sword Rank 1 outputs: - Light Gray Wool: - material: WOOL - amount: 64 - durability: 8 - Iron_Sword: - name: Forge Iron Sword. - production_time: 10 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 2 + lore: Diamond Sword Rank 2 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 2 + DIAMOND_SWORD_RANK_3: + name: Diamond Sword Forger Rank 3 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 10 + Diamond: + material: DIAMOND + amount: 32 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 2 + lore: Diamond Sword Rank 2 outputs: - Iron Sword: - material: IRON_SWORD - amount: 15 - Dye_Gray_Wool_Purple: - name: Dye Gray Wool Purple - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Wool: - material: WOOL - amount: 64 - durability: 10 - Dye_Black_Wool_Green: - name: Dye Black Wool Green - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 3 + lore: Diamond Sword Rank 3 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 3 + DIAMOND_SWORD_RANK_4: + name: Diamond Sword Forger Rank 4 + production_time: 360 + inputs: + Diamond: + material: DIAMOND + amount: 32 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 3 + lore: Diamond Sword Rank 3 outputs: - Green Wool: - material: WOOL - amount: 64 - durability: 13 - Dye_Brown_Wool_Red: - name: Dye Brown Wool Red - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 4 + lore: Diamond Sword Rank 4 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 4 + DIAMOND_SWORD_RANK_5: + name: Diamond Sword Forger Rank 5 + production_time: 360 + inputs: + Diamond: + material: DIAMOND + amount: 32 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 4 + lore: Diamond Sword Rank 4 outputs: - Red Wool: - material: WOOL - amount: 64 - durability: 14 - Dye_Pink_Wool_Light_Blue: - name: Dye Pink Wool Light Blue - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 + Diamond Sword: + material: DIAMOND_SWORD + amount: 1 + display_name: Diamond Sword Rank 5 + lore: Diamond Sword Rank 5 + enchantments: + Sharpness: + type: DAMAGE_ALL + level: 5 + OBSIDIAN_GENERATOR: + name: Obsidian Generator + production_time: 300 + inputs: + Diamond Pickaxe: + material: DIAMOND_PICKAXE + amount: 1 outputs: - Light Blue Wool: - material: WOOL - amount: 64 - durability: 3 - Gold_Hoe: - name: Forge Gold Hoe. - production_time: 10 + Obsidian: + material: OBSIDIAN + amount: 3200 + STONE_PICKAXE_RANK_0: + name: Stone Pickaxe Forger Rank 0 + production_time: 360 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 10 + Stone: + material: STONE + amount: 32 outputs: - Gold Hoe: - material: GOLD_HOE - amount: 30 + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 0 + lore: Stone Pickaxe Rank 0 + STONE_PICKAXE_RANK_1: + name: Stone Pickaxe Forger Rank 1 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 0 + lore: Stone Pickaxe Rank 0 + outputs: + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 1 + lore: Stone Pickaxe Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + STONE_PICKAXE_RANK_2: + name: Stone Pickaxe Forger Rank 2 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 1 + lore: Stone Pickaxe Rank 1 + outputs: + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 2 + lore: Stone Pickaxe Rank 2 enchantments: - Unbreaking 3: + Efficiency: + type: DIG_SPEED + level: 2 + Unbreaking: type: DURABILITY + level: 1 + STONE_PICKAXE_RANK_3: + name: Stone Pickaxe Forger Rank 3 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 2 + lore: Stone Pickaxe Rank 2 + outputs: + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 3 + lore: Stone Pickaxe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED level: 3 - Gold_Sword: - name: Forge Gold Sword. - production_time: 10 + Unbreaking: + type: DURABILITY + level: 2 + STONE_PICKAXE_RANK_4: + name: Stone Pickaxe Forger Rank 4 + production_time: 360 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 10 - outputs: - Gold Sword: - material: GOLD_SWORD - amount: 15 + Stone: + material: STONE + amount: 32 + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 3 + lore: Stone Pickaxe Rank 3 + outputs: + Stone Pickaxe: + material: STONE_PICKAXE + amount: 1 + display_name: Stone Pickaxe Rank 4 + lore: Stone Pickaxe Rank 4 enchantments: - Unbreaking 3: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: type: DURABILITY level: 3 - Bane of the Anthropods 1: - type: DAMAGE_ARTHROPODS + STONE_AXE_RANK_0: + name: Stone Axe Forger Rank 0 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + outputs: + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 0 + lore: Stone Axe Rank 0 + STONE_AXE_RANK_1: + name: Stone Axe Forger Rank 1 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 0 + lore: Stone Axe Rank 0 + outputs: + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 1 + lore: Stone Axe Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED level: 1 - probability: 0.4 - Bane of the Anthropods 2: - type: DAMAGE_ARTHROPODS + STONE_AXE_RANK_2: + name: Stone Axe Forger Rank 2 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 1 + lore: Stone Axe Rank 1 + outputs: + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 2 + lore: Stone Axe Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED level: 2 - probability: 0.3 - Bane of the Anthropods 3: - type: DAMAGE_ARTHROPODS - level: 3 - probability: 0.2 - Bane of the Anthropods 4: - type: DAMAGE_ARTHROPODS - level: 4 - probability: 0.1 - Bane of the Anthropods 5: - type: DAMAGE_ARTHROPODS - level: 5 - probability: 0.3 - Smite 1: - type: DAMAGE_UNDEAD + Unbreaking: + type: DURABILITY level: 1 - probability: 0.4 - Smite 2: - type: DAMAGE_UNDEAD - level: 2 - probability: 0.3 - Smite 3: - type: DAMAGE_UNDEAD + STONE_AXE_RANK_3: + name: Stone Axe Forger Rank 3 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 2 + lore: Stone Axe Rank 2 + outputs: + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 3 + lore: Stone Axe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED level: 3 - probability: 0.2 - Smite 4: - type: DAMAGE_UNDEAD - level: 4 - probability: 0.1 - Smite 5: - type: DAMAGE_UNDEAD - level: 5 - probability: 0.05 - Looting 1: - type: LOOT_BONUS_MOBS - level: 1 - probability: 0.5 - Looting 2: - type: LOOT_BONUS_MOBS + Unbreaking: + type: DURABILITY level: 2 - probability: 0.4 - Looting 3: - type: LOOT_BONUS_MOBS - level: 3 - probability: 0.3 - Smelt_Chiseled_Stone_Brick: - name: Smelt Chiseled Stone Brick - production_time: 64 + STONE_AXE_RANK_4: + name: Stone Axe Forger Rank 4 + production_time: 360 inputs: - Stone Brick: - material: SMOOTH_BRICK - amount: 64 - Lapis Lazuli: - material: INK_SACK - amount: 32 - durability: 4 - Gravel: - material: GRAVEL - amount: 64 - outputs: - Chiseled Stone Brick: - material: SMOOTH_BRICK - amount: 64 - durability: 3 - Diamond_Pickaxe: - name: Forge Diamond Pickaxe. - production_time: 15 + Stone: + material: STONE + amount: 32 + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 3 + lore: Stone Axe Rank 3 + outputs: + Stone Axe: + material: STONE_AXE + amount: 1 + display_name: Stone Axe Rank 4 + lore: Stone Axe Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + STONE_SHOVEL_RANK_0: + name: Stone Shovel Forger Rank 0 + production_time: 360 inputs: - Diamond: - material: DIAMOND - amount: 15 + Stone: + material: STONE + amount: 32 outputs: - Diamond Pickaxe: - material: DIAMOND_PICKAXE - amount: 15 - Smelt_Mossy_Stone_Brick: - name: Smelt Mossy Stone Brick - production_time: 64 + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 0 + lore: Stone Shovel Rank 0 + STONE_SHOVEL_RANK_1: + name: Stone Shovel Forger Rank 1 + production_time: 360 inputs: - Stone Brick: - material: SMOOTH_BRICK - amount: 64 - Lapis Lazuli: - material: INK_SACK - amount: 32 - durability: 4 - Vine: - material: VINE - amount: 64 - outputs: - Mossy Stone Brick: - material: SMOOTH_BRICK - amount: 64 - durability: 1 - Dye_White_Wool_Magenta: - name: Dye White Wool Magenta - inputs: - White Wool: - material: WOOL - amount: 64 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 - outputs: - Magenta Wool: - material: WOOL - amount: 64 - durability: 2 - Iron_Hoe: - name: Forge Iron Hoe. - production_time: 10 + Stone: + material: STONE + amount: 32 + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 0 + lore: Stone Shovel Rank 0 + outputs: + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 1 + lore: Stone Shovel Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + STONE_SHOVEL_RANK_2: + name: Stone Shovel Forger Rank 2 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 10 - outputs: - Iron Hoe: - material: IRON_HOE - amount: 30 - Wood_XP_Bottle_1: - name: Brew XP Bottles - 2 - inputs: - Glass Bottle: - material: GLASS_BOTTLE - amount: 10 - Nether Wart: - material: NETHER_STALK - amount: 1280 - outputs: - Exp Bottle: - material: EXP_BOTTLE - amount: 10 - Dye_Pink_Wool_Gray: - name: Dye Pink Wool Gray - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 - outputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Dye_Pink_Wool_Red: - name: Dye Pink Wool Red - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 - outputs: - Red Wool: - material: WOOL - amount: 64 - durability: 14 - Dye_Black_Wool_Purple: - name: Dye Black Wool Purple - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Wool: - material: WOOL - amount: 64 - durability: 10 - Dye_Gray_Wool_Light_Blue: - name: Dye Gray Wool Light Blue - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Wool: - material: WOOL - amount: 64 - durability: 3 - Smelt_Coal: - name: Burn Coal - production_time: 24 + Stone: + material: STONE + amount: 32 + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 1 + lore: Stone Shovel Rank 1 + outputs: + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 2 + lore: Stone Shovel Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + STONE_SHOVEL_RANK_3: + name: Stone Shovel Forger Rank 3 + production_time: 360 inputs: - Coal: - material: COAL - amount: 256 - outputs: - Charcoal: - material: COAL - amount: 512 - durability: 1 - Gold_Axe: - name: Forge Gold Axe. - production_time: 15 + Stone: + material: STONE + amount: 32 + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 2 + lore: Stone Shovel Rank 2 + outputs: + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 3 + lore: Stone Shovel Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + STONE_SHOVEL_RANK_4: + name: Stone Shovel Forger Rank 4 + production_time: 360 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 15 - outputs: - Gold Axe: - material: GOLD_AXE - amount: 30 + Stone: + material: STONE + amount: 32 + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 3 + lore: Stone Shovel Rank 3 + outputs: + Stone Shovel: + material: STONE_SHOVEL + amount: 1 + display_name: Stone Shovel Rank 4 + lore: Stone Shovel Rank 4 enchantments: - Unbreaking 3: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: type: DURABILITY level: 3 - Silk Touch 1: - type: SILK_TOUCH - level: 1 - probability: 0.1 - Efficiency 1: + STONE_HOE_RANK_0: + name: Stone Hoe Forger Rank 0 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + outputs: + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 0 + lore: Stone Hoe Rank 0 + STONE_HOE_RANK_1: + name: Stone Hoe Forger Rank 1 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 0 + lore: Stone Hoe Rank 0 + outputs: + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 1 + lore: Stone Hoe Rank 1 + enchantments: + Efficiency: type: DIG_SPEED level: 1 - probability: 0.3 - Efficiency 2: + STONE_HOE_RANK_2: + name: Stone Hoe Forger Rank 2 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 1 + lore: Stone Hoe Rank 1 + outputs: + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 2 + lore: Stone Hoe Rank 2 + enchantments: + Efficiency: type: DIG_SPEED level: 2 - probability: 0.2 - Efficiency 3: + Unbreaking: + type: DURABILITY + level: 1 + STONE_HOE_RANK_3: + name: Stone Hoe Forger Rank 3 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 2 + lore: Stone Hoe Rank 2 + outputs: + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 3 + lore: Stone Hoe Rank 3 + enchantments: + Efficiency: type: DIG_SPEED level: 3 - probability: 0.1 - Efficiency 4: + Unbreaking: + type: DURABILITY + level: 2 + STONE_HOE_RANK_4: + name: Stone Hoe Forger Rank 4 + production_time: 360 + inputs: + Stone: + material: STONE + amount: 32 + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 3 + lore: Stone Hoe Rank 3 + outputs: + Stone Hoe: + material: STONE_HOE + amount: 1 + display_name: Stone Hoe Rank 4 + lore: Stone Hoe Rank 4 + enchantments: + Efficiency: type: DIG_SPEED level: 4 - probability: 0.05 - Efficiency 5: + Unbreaking: + type: DURABILITY + level: 3 + IRON_PICKAXE_RANK_0: + name: Iron Pickaxe Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Stone Pickaxe: + material: STONE_PICKAXE + amount: 2 + display_name: Stone Pickaxe Rank 4 + lore: Stone Pickaxe Rank 4 + outputs: + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 0 + lore: Iron Pickaxe Rank 0 + IRON_PICKAXE_RANK_1: + name: Iron Pickaxe Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 0 + lore: Iron Pickaxe Rank 0 + outputs: + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 1 + lore: Iron Pickaxe Rank 1 + enchantments: + Efficiency: type: DIG_SPEED - level: 5 - probability: 0.01 - Bane of the Anthropods 1: - type: DAMAGE_ARTHROPODS level: 1 - probability: 0.4 - Bane of the Anthropods 2: - type: DAMAGE_ARTHROPODS + IRON_PICKAXE_RANK_2: + name: Iron Pickaxe Forger Rank 2 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 1 + lore: Iron Pickaxe Rank 1 + outputs: + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 2 + lore: Iron Pickaxe Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED level: 2 - probability: 0.3 - Bane of the Anthropods 3: - type: DAMAGE_ARTHROPODS - level: 3 - probability: 0.2 - Bane of the Anthropods 4: - type: DAMAGE_ARTHROPODS - level: 4 - probability: 0.1 - Bane of the Anthropods 5: - type: DAMAGE_ARTHROPODS - level: 5 - probability: 0.3 - Smite 1: - type: DAMAGE_UNDEAD + Unbreaking: + type: DURABILITY level: 1 - probability: 0.4 - Smite 2: - type: DAMAGE_UNDEAD - level: 2 - probability: 0.3 - Smite 3: - type: DAMAGE_UNDEAD + IRON_PICKAXE_RANK_3: + name: Iron Pickaxe Forger Rank 3 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 2 + lore: Iron Pickaxe Rank 2 + outputs: + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 3 + lore: Iron Pickaxe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED level: 3 - probability: 0.2 - Smite 4: - type: DAMAGE_UNDEAD - level: 4 - probability: 0.1 - Smite 5: - type: DAMAGE_UNDEAD - level: 5 - probability: 0.05 - Looting 1: - type: LOOT_BONUS_MOBS - level: 1 - probability: 0.5 - Looting 2: - type: LOOT_BONUS_MOBS + Unbreaking: + type: DURABILITY level: 2 - probability: 0.4 - Looting 3: - type: LOOT_BONUS_MOBS - level: 3 - probability: 0.3 - Cooked_Fish: - name: Grill Raw Fish - production_time: 6 - inputs: - Raw Fish: - material: RAW_FISH - amount: 64 - outputs: - Cooked Fish: - material: COOKED_FISH - amount: 128 - Dye_Pink_Wool_Black: - name: Dye Pink Wool Black - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Ink Sack: - material: INK_SACK - amount: 4 - outputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Diamond_Spade: - name: Forge Diamond Spade. - production_time: 5 + IRON_PICKAXE_RANK_4: + name: Iron Pickaxe Forger Rank 4 + production_time: 360 inputs: - Diamond: - material: DIAMOND - amount: 5 + Iron: + material: IRON + amount: 32 + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 3 + lore: Iron Pickaxe Rank 3 outputs: - Diamond Spade: - material: DIAMOND_SPADE - amount: 15 - Dye_Pink_Wool_Yellow: - name: Dye Pink Wool Yellow - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Wool: - material: WOOL - amount: 64 - durability: 4 - Smelt_Iron_Ore: - name: Smelt Iron Ore - production_time: 12 - inputs: - Iron Ore: - material: IRON_ORE - amount: 128 - outputs: - Iron Ingot: - material: IRON_INGOT - amount: 224 - Produce_Powered_Rail: - name: Produce Powered Rails - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 72 - Redstone: - material: REDSTONE - amount: 8 - Stick: - material: STICK - amount: 8 + Iron Pickaxe: + material: IRON_PICKAXE + amount: 1 + display_name: Iron Pickaxe Rank 4 + lore: Iron Pickaxe Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + IRON_AXE_RANK_0: + name: Iron Axe Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Stone Axe: + material: STONE_AXE + amount: 2 + display_name: Stone Axe Rank 4 + lore: Stone Axe Rank 4 outputs: - Powered Rail: - material: POWERED_RAIL - amount: 128 - Produce_Detector_Rail: - name: Produce Detector Rails - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 18 - Redstone: - material: REDSTONE - amount: 2 + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 0 + lore: Iron Axe Rank 0 + IRON_AXE_RANK_1: + name: Iron Axe Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 0 + lore: Iron Axe Rank 0 outputs: - Detector Rail: - material: DETECTOR_RAIL - amount: 32 - Produce_Activator_Rail: - name: Produce Activator Rails + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 1 + lore: Iron Axe Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + IRON_AXE_RANK_2: + name: Iron Axe Forger Rank 2 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 18 - Redstone: - material: REDSTONE - amount: 2 - Stick: - material: STICK - amount: 8 + Iron: + material: IRON + amount: 32 + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 1 + lore: Iron Axe Rank 1 outputs: - Activator Rail: - material: ACTIVATOR_RAIL - amount: 32 - Produce_Minecarts: - name: Produce Minecarts - production_time: 16 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 64 - outputs: - Minecart: - material: MINECART - amount: 27 - Gold_Helmet: - name: Forge Gold Helmet. - production_time: 25 - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 25 - outputs: - Gold Helmet: - material: GOLD_HELMET - amount: 15 - durability: -218 + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 2 + lore: Iron Axe Rank 2 enchantments: - Unbreaking 3: - type: DURABILITY - level: 3 - Respiration 1: - type: OXYGEN - level: 1 - probability: 0.5 - Respiration 2: - type: OXYGEN - level: 2 - probability: 0.4 - Respiration 3: - type: OXYGEN - level: 3 - probability: 0.3 - Blast Protection 1: - type: PROTECTION_EXPLOSIONS - level: 1 - probability: 0.5 - Blast Protection 2: - type: PROTECTION_EXPLOSIONS + Efficiency: + type: DIG_SPEED level: 2 - probability: 0.4 - Blast Protection 3: - type: PROTECTION_EXPLOSIONS - level: 3 - probability: 0.3 - Blast Protection 4: - type: PROTECTION_EXPLOSIONS - level: 4 - probability: 0.4 - Fire Protection 1: - type: PROTECTION_FIRE + Unbreaking: + type: DURABILITY level: 1 - probability: 0.5 - Fire Protection 2: - type: PROTECTION_FIRE - level: 2 - probability: 0.4 - Fire Protection 3: - type: PROTECTION_FIRE + IRON_AXE_RANK_3: + name: Iron Axe Forger Rank 3 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 2 + lore: Iron Axe Rank 2 + outputs: + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 3 + lore: Iron Axe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED level: 3 - probability: 0.3 - Fire Protection 4: - type: PROTECTION_FIRE - level: 4 - probability: 0.4 - Projectile Protection 1: - type: PROTECTION_PROJECTILE - level: 1 - probability: 0.5 - Projectile Protection 2: - type: PROTECTION_PROJECTILE + Unbreaking: + type: DURABILITY level: 2 - probability: 0.4 - Projectile Protection 3: - type: PROTECTION_PROJECTILE - level: 3 - probability: 0.3 - Projectile Protection 4: - type: PROTECTION_PROJECTILE - level: 4 - probability: 0.4 - Dye_Brown_Wool_Black: - name: Dye Brown Wool Black - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Ink Sack: - material: INK_SACK - amount: 4 + IRON_AXE_RANK_4: + name: Iron Axe Forger Rank 4 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 3 + lore: Iron Axe Rank 3 outputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Dye_Brown_Wool_Lime: - name: Dye Brown Wool Lime - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 - outputs: - Lime Wool: - material: WOOL - amount: 64 - durability: 5 - Gold_Boots: - name: Forge Gold Boots. - production_time: 20 - inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 20 - outputs: - Gold Boots: - material: GOLD_BOOTS - amount: 15 - durability: -218 + Iron Axe: + material: IRON_AXE + amount: 1 + display_name: Iron Axe Rank 4 + lore: Iron Axe Rank 4 enchantments: - Unbreaking 3: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: type: DURABILITY level: 3 - Blast Protection 1: - type: PROTECTION_EXPLOSIONS + IRON_SHOVEL_RANK_0: + name: Iron Shovel Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Stone Shovel: + material: STONE_SHOVEL + amount: 2 + display_name: Stone Shovel Rank 4 + lore: Stone Shovel Rank 4 + outputs: + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 0 + lore: Iron Shovel Rank 0 + IRON_SHOVEL_RANK_1: + name: Iron Shovel Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 0 + lore: Iron Shovel Rank 0 + outputs: + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 1 + lore: Iron Shovel Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED level: 1 - probability: 0.5 - Blast Protection 2: - type: PROTECTION_EXPLOSIONS + IRON_SHOVEL_RANK_2: + name: Iron Shovel Forger Rank 2 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 1 + lore: Iron Shovel Rank 1 + outputs: + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 2 + lore: Iron Shovel Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED level: 2 - probability: 0.4 - Blast Protection 3: - type: PROTECTION_EXPLOSIONS - level: 3 - probability: 0.3 - Blast Protection 4: - type: PROTECTION_EXPLOSIONS - level: 4 - probability: 0.4 - Feather Falling 1: - type: PROTECTION_FALL + Unbreaking: + type: DURABILITY level: 1 - probability: 0.5 - Feather Falling 2: - type: PROTECTION_FALL - level: 2 - probability: 0.4 - Feather Falling 3: - type: PROTECTION_FALL + IRON_SHOVEL_RANK_3: + name: Iron Shovel Forger Rank 3 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 2 + lore: Iron Shovel Rank 2 + outputs: + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 3 + lore: Iron Shovel Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED level: 3 - probability: 0.3 - Feather Falling 4: - type: PROTECTION_FALL - level: 4 - probability: 0.4 - Fire Protection 1: - type: PROTECTION_FIRE - level: 1 - probability: 0.5 - Fire Protection 2: - type: PROTECTION_FIRE + Unbreaking: + type: DURABILITY level: 2 - probability: 0.4 - Fire Protection 3: - type: PROTECTION_FIRE - level: 3 - probability: 0.3 - Fire Protection 4: - type: PROTECTION_FIRE + IRON_SHOVEL_RANK_4: + name: Iron Shovel Forger Rank 4 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 3 + lore: Iron Shovel Rank 3 + outputs: + Iron Shovel: + material: IRON_SHOVEL + amount: 1 + display_name: Iron Shovel Rank 4 + lore: Iron Shovel Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED level: 4 - probability: 0.4 - Projectile Protection 1: - type: PROTECTION_PROJECTILE - level: 1 - probability: 0.5 - Projectile Protection 2: - type: PROTECTION_PROJECTILE - level: 2 - probability: 0.4 - Projectile Protection 3: - type: PROTECTION_PROJECTILE + Unbreaking: + type: DURABILITY level: 3 - probability: 0.3 - Projectile Protection 4: - type: PROTECTION_PROJECTILE - level: 4 - probability: 0.4 - Dye_Gray_Wool_Yellow: - name: Dye Gray Wool Yellow - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Wool: - material: WOOL - amount: 64 - durability: 4 - Dye_Pink_Wool_Lime: - name: Dye Pink Wool Lime - inputs: - Pink Wool: - material: WOOL - amount: 64 - durability: 6 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 - outputs: - Lime Wool: - material: WOOL - amount: 64 - durability: 5 - Dye_Gray_Wool_Magenta: - name: Dye Gray Wool Magenta - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 + IRON_HOE_RANK_0: + name: Iron Hoe Forger Rank 0 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Stone Hoe: + material: STONE_HOE + amount: 2 + display_name: Stone Hoe Rank 4 + lore: Stone Hoe Rank 4 outputs: - Magenta Wool: - material: WOOL - amount: 64 - durability: 2 - Dye_Brown_Wool_Blue: - name: Dye Brown Wool Blue - inputs: - Brown Wool: - material: WOOL - amount: 64 - durability: 12 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Wool: - material: WOOL - amount: 64 - durability: 11 - Dye_Black_Wool_Lime: - name: Dye Black Wool Lime - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 0 + lore: Iron Hoe Rank 0 + IRON_HOE_RANK_1: + name: Iron Hoe Forger Rank 1 + production_time: 360 + inputs: + Iron: + material: IRON + amount: 32 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 0 + lore: Iron Hoe Rank 0 outputs: - Lime Wool: - material: WOOL - amount: 64 - durability: 5 - Smelt_Stone: - name: Smelt Stone - production_time: 80 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 1 + lore: Iron Hoe Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + IRON_HOE_RANK_2: + name: Iron Hoe Forger Rank 2 + production_time: 360 inputs: - Cobblestone: - material: COBBLESTONE - amount: 640 - outputs: - Stone: - material: STONE - amount: 854 - Grilled_Pork: - name: Grill Pork - production_time: 6 - inputs: - Pork: - material: PORK - amount: 64 - outputs: - Grilled Pork: - material: GRILLED_PORK - amount: 128 - Dye_Black_Wool_Light_Blue: - name: Dye Black Wool Light Blue - inputs: - Black Wool: - material: WOOL - amount: 64 - durability: 15 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Wool: - material: WOOL - amount: 64 - durability: 3 - Dye_Gray_Wool_White: - name: Dye Gray Wool White - inputs: - Gray Wool: - material: WOOL - amount: 64 - durability: 7 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 + Iron: + material: IRON + amount: 32 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 1 + lore: Iron Hoe Rank 1 outputs: - White Wool: - material: WOOL - amount: 64 - Diamond_Axe: - name: Forge Diamond Axe. - production_time: 15 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 2 + lore: Iron Hoe Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + IRON_HOE_RANK_3: + name: Iron Hoe Forger Rank 3 + production_time: 360 inputs: - Diamond: - material: DIAMOND - amount: 15 + Iron: + material: IRON + amount: 32 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 2 + lore: Iron Hoe Rank 2 outputs: - Diamond Axe: - material: DIAMOND_AXE - amount: 30 - Smelt_Oak_Wood: - name: Burn Oak Wood - production_time: 24 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 3 + lore: Iron Hoe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + IRON_HOE_RANK_4: + name: Iron Hoe Forger Rank 4 + production_time: 360 inputs: - Oak Wood: - material: LOG - amount: 256 + Iron: + material: IRON + amount: 32 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 3 + lore: Iron Hoe Rank 3 outputs: - Charcoal: - material: COAL - amount: 512 - durability: 1 - Produce_Saddle: - name: Produce Saddles - production_time: 20 - inputs: - Diamond: - material: DIAMOND - amount: 16 - Leather: - material: LEATHER - amount: 64 - White Wool: - material: WOOL - amount: 64 - outputs: - Saddle: - material: SADDLE - amount: 8 - Produce_Diamond_Horse_Armor: - name: Produce Diamond Horse Armor - production_time: 20 + Iron Hoe: + material: IRON_HOE + amount: 1 + display_name: Iron Hoe Rank 4 + lore: Iron Hoe Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_PICKAXE_RANK_0: + name: Diamond Pickaxe Forger Rank 0 + production_time: 360 inputs: Diamond: - material: DIAMOND - amount: 64 + material: DIAMOND + amount: 32 + Iron Pickaxe: + material: IRON_PICKAXE + amount: 2 + display_name: Iron Pickaxe Rank 4 + lore: Iron Pickaxe Rank 4 outputs: - Diamond Horse Armor: - material: DIAMOND_BARDING + Diamond Pickaxe: + material: DIAMOND_PICKAXE amount: 1 - Produce_Gold_Horse_Armor: - name: Produce Gold Horse Armor - production_time: 20 + display_name: Diamond Pickaxe Rank 0 + lore: Diamond Pickaxe Rank 0 + DIAMOND_PICKAXE_RANK_1: + name: Diamond Pickaxe Forger Rank 1 + production_time: 360 inputs: - Gold Ingot: - material: GOLD_INGOT - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Pickaxe: + material: DIAMOND_PICKAXE + amount: 1 + display_name: Diamond Pickaxe Rank 0 + lore: Diamond Pickaxe Rank 0 outputs: - Gold Horse Armor: - material: GOLD_BARDING + Diamond Pickaxe: + material: DIAMOND_PICKAXE amount: 1 - Produce_Iron_Horse_Armor: - name: Produce Iron Horse Armor - production_time: 20 + display_name: Diamond Pickaxe Rank 1 + lore: Diamond Pickaxe Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + DIAMOND_PICKAXE_RANK_2: + name: Diamond Pickaxe Forger Rank 2 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Pickaxe: + material: DIAMOND_PICKAXE + amount: 1 + display_name: Diamond Pickaxe Rank 1 + lore: Diamond Pickaxe Rank 1 outputs: - Iron Horse Armor: - material: IRON_BARDING + Diamond Pickaxe: + material: DIAMOND_PICKAXE amount: 1 - Produce_Leads: - name: Produce Leads - inputs: - Slime_Ball: - material: SLIME_BALL - amount: 4 - String: - material: STRING - amount: 16 - outputs: - Lead: - material: LEASH - amount: 8 - Craft_Fences: - name: Craft Fences - production_time: 16 + display_name: Diamond Pickaxe Rank 2 + lore: Diamond Pickaxe Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_PICKAXE_RANK_3: + name: Diamond Pickaxe Forger Rank 3 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 12 + Diamond: + material: DIAMOND + amount: 32 + Diamond Pickaxe: + material: DIAMOND_PICKAXE + amount: 1 + display_name: Diamond Pickaxe Rank 2 + lore: Diamond Pickaxe Rank 2 outputs: - Fence: - material: FENCE - amount: 256 - Craft_Signs: - name: Craft Signs - production_time: 16 + Diamond Pickaxe: + material: DIAMOND_PICKAXE + amount: 1 + display_name: Diamond Pickaxe Rank 3 + lore: Diamond Pickaxe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_PICKAXE_RANK_4: + name: Diamond Pickaxe Forger Rank 4 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 8 + Diamond: + material: DIAMOND + amount: 32 + Diamond Pickaxe: + material: DIAMOND_PICKAXE + amount: 1 + display_name: Diamond Pickaxe Rank 3 + lore: Diamond Pickaxe Rank 3 outputs: - Sign: - material: SIGN - amount: 64 - Craft_Boats: - name: Craft Boats - production_time: 16 + Diamond Pickaxe: + material: DIAMOND_PICKAXE + amount: 1 + display_name: Diamond Pickaxe Rank 4 + lore: Diamond Pickaxe Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_AXE_RANK_0: + name: Diamond Axe Forger Rank 0 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 8 + Diamond: + material: DIAMOND + amount: 32 + Iron Axe: + material: IRON_AXE + amount: 2 + display_name: Iron Axe Rank 4 + lore: Iron Axe Rank 4 outputs: - Boat: - material: BOAT - amount: 27 - Craft_Ladders: - name: Craft Ladders - production_time: 16 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 0 + lore: Diamond Axe Rank 0 + DIAMOND_AXE_RANK_1: + name: Diamond Axe Forger Rank 1 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 8 + Diamond: + material: DIAMOND + amount: 32 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 0 + lore: Diamond Axe Rank 0 outputs: - Ladder: - material: LADDER - amount: 256 - Craft_Trap_Doors: - name: Craft Trap Doors - production_time: 16 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 1 + lore: Diamond Axe Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + DIAMOND_AXE_RANK_2: + name: Diamond Axe Forger Rank 2 + production_time: 360 inputs: - Chest: - material: CHEST - amount: 48 + Diamond: + material: DIAMOND + amount: 32 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 1 + lore: Diamond Axe Rank 1 outputs: - Trap Door: - material: TRAP_DOOR - amount: 256 - Craft_Item_Frames: - name: Craft Item Frames - production_time: 32 - inputs: - Chest: - material: CHEST - amount: 8 - Leather: - material: LEATHER - amount: 48 - outputs: - Item Frames: - material: ITEM_FRAMES - amount: 64 - Craft_Bookshelfs: - name: Craft Bookshelfs - production_time: 32 - inputs: - Chest: - material: CHEST - amount: 8 - Leather: - material: LEATHER - amount: 48 - Paper: - material: STRING - amount: 192 - outputs: - Bookshelf: - material: BOOKSHELF - amount: 64 - Forge_Shears: - name: Forge Shears - production_time: 8 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 18 - outputs: - Shears: - material: SHEARS - amount: 18 - Forge_Anvils: - name: Forge Anvils - production_time: 64 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 2 + lore: Diamond Axe Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_AXE_RANK_3: + name: Diamond Axe Forger Rank 3 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 256 + Diamond: + material: DIAMOND + amount: 32 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 2 + lore: Diamond Axe Rank 2 outputs: - Anvil: - material: ANVIL - amount: 16 - Forge_Tripwire_Hooks: - name: Forge Tripwire Hooks - production_time: 16 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 3 + lore: Diamond Axe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_AXE_RANK_4: + name: Diamond Axe Forger Rank 4 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 16 + Diamond: + material: DIAMOND + amount: 32 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 3 + lore: Diamond Axe Rank 3 outputs: - Tripwire Hook: - material: TRIPWIRE_HOOK - amount: 64 - Forge_Iron_Bars: - name: Forge Iron Bars - production_time: 32 + Diamond Axe: + material: DIAMOND_AXE + amount: 1 + display_name: Diamond Axe Rank 4 + lore: Diamond Axe Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_SHOVEL_RANK_0: + name: Diamond Shovel Forger Rank 0 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 24 - outputs: - Iron Bars: - material: IRON_FENCE - amount: 256 - Forge_Buckets: - name: Forge Buckets - production_time: 32 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 96 - outputs: - Bucket: - material: BUCKET - amount: 64 - Forge_Iron_Doors: - name: Forge Iron Doors - production_time: 16 + Diamond: + material: DIAMOND + amount: 32 + Iron Shovel: + material: IRON_SHOVEL + amount: 2 + display_name: Iron Shovel Rank 4 + lore: Iron Shovel Rank 4 + outputs: + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 0 + lore: Diamond Shovel Rank 0 + DIAMOND_SHOVEL_RANK_1: + name: Diamond Shovel Forger Rank 1 + production_time: 360 inputs: - Iron Ingot: - material: IRON_INGOT - amount: 54 - outputs: - Iron Door: - material: IRON_DOOR - amount: 18 - Forge_Flint_And_Steel: - name: Forge Flint and Steel - production_time: 8 - inputs: - Iron Ingot: - material: IRON_INGOT - amount: 9 - outputs: - Flint and Steel: - material: FLINT_AND_STEEL - amount: 18 - Dye_White_Stained_Glass: - name: Dye White Stained Glass - inputs: - White Stained Glass: - material: STAINED_GLASS - amount: 64 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 - outputs: - White Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 0 - Dye_Orange_Stained_Glass: - name: Dye Orange Stained Glass - inputs: - Orange Stained Glass: - material: STAINED_GLASS - amount: 64 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 1 - Dye_Magenta_Stained_Glass: - name: Dye Magenta Stained Glass - inputs: - Magenta Stained Glass: - material: STAINED_GLASS - amount: 64 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 - outputs: - Magenta Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 2 - Dye_Light_Blue_Stained_Glass: - name: Dye Light Blue Stained Glass - inputs: - Light Blue Stained Glass: - material: STAINED_GLASS - amount: 64 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 3 - Dye_Yellow_Stained_Glass: - name: Dye Yellow Stained Glass - inputs: - Yellow Stained Glass: - material: STAINED_GLASS - amount: 64 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 4 - Dye_Lime_Stained_Glass: - name: Dye Lime Stained Glass - inputs: - Lime Stained Glass: - material: STAINED_GLASS - amount: 64 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 - outputs: - Lime Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 5 - Dye_Pink_Stained_Glass: - name: Dye Pink Stained Glass - inputs: - Pink Stained Glass: - material: STAINED_GLASS - amount: 64 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 6 - Dye_Gray_Stained_Glass: - name: Dye Gray Stained Glass - inputs: - Gray Stained Glass: - material: STAINED_GLASS - amount: 64 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 - outputs: - Gray Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 7 - Dye_Light_Gray_Stained_Glass: - name: Dye Light Gray Stained Glass - inputs: - Light Gray Stained Glass: - material: STAINED_GLASS - amount: 64 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 - outputs: - Light Gray Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 8 - Dye_Cyan_Stained_Glass: - name: Dye Cyan Stained Glass - inputs: - Cyan Stained Glass: - material: STAINED_GLASS - amount: 64 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 9 - Dye_Purple_Stained_Glass: - name: Dye Purple Stained Glass - inputs: - Purple Stained Glass: - material: STAINED_GLASS - amount: 64 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 10 - Dye_Blue_Stained_Glass: - name: Dye Blue Stained Glass - inputs: - Blue Stained Glass: - material: STAINED_GLASS - amount: 64 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 11 - Dye_Brown_Stained_Glass: - name: Dye Brown Stained Glass - inputs: - Brown Stained Glass: - material: STAINED_GLASS - amount: 64 - Coco Beans: - material: INK_SACK - amount: 4 - durability: 3 - outputs: - Brown Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 12 - Dye_Green_Stained_Glass: - name: Dye Green Stained Glass - inputs: - Green Stained Glass: - material: STAINED_GLASS - amount: 64 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 - outputs: - Green Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 13 - Dye_Red_Stained_Glass: - name: Dye Red Stained Glass - inputs: - Red Stained Glass: - material: STAINED_GLASS - amount: 64 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 - outputs: - Red Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 14 - Dye_Black_Stained_Glass: - name: Dye Black Stained Glass - inputs: - Black Stained Glass: - material: STAINED_GLASS - amount: 64 - Ink Sack: - material: INK_SACK - amount: 4 - durability: 0 - outputs: - Black Stained Glass: - material: STAINED_GLASS - amount: 64 - durability: 15 - Dye_White_Stained_Glass_Pane: - name: Dye White Stained Glass Pane - inputs: - White Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 - outputs: - White Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 0 - Dye_Orange_Stained_Glass_Pane: - name: Dye Orange Stained Glass Pane - inputs: - Orange Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 1 - Dye_Magenta_Stained_Glass_Pane: - name: Dye Magenta Stained Glass Pane - inputs: - Magenta Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 - outputs: - Magenta Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 2 - Dye_Light_Blue_Stained_Glass_Pane: - name: Dye Light Blue Stained Glass Pane - inputs: - Light Blue Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 3 - Dye_Yellow_Stained_Glass_Pane: - name: Dye Yellow Stained Glass Pane - inputs: - Yellow Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 4 - Dye_Lime_Stained_Glass_Pane: - name: Dye Lime Stained Glass Pane - inputs: - Lime Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 - outputs: - Lime Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 5 - Dye_Pink_Stained_Glass_Pane: - name: Dye Pink Stained Glass Pane - inputs: - Pink Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 6 - Dye_Gray_Stained_Glass_Pane: - name: Dye Gray Stained Glass Pane - inputs: - Gray Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 - outputs: - Gray Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 7 - Dye_Light_Gray_Stained_Glass_Pane: - name: Dye Light Gray Stained Glass Pane - inputs: - Light Gray Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 - outputs: - Light Gray Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 8 - Dye_Cyan_Stained_Glass_Pane: - name: Dye Cyan Stained Glass Pane - inputs: - Cyan Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 9 - Dye_Purple_Stained_Glass_Pane: - name: Dye Purple Stained Glass Pane - inputs: - Purple Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 10 - Dye_Blue_Stained_Glass_Pane: - name: Dye Blue Stained Glass Pane - inputs: - Blue Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 11 - Dye_Brown_Stained_Glass_Pane: - name: Dye Brown Stained Glass Pane - inputs: - Brown Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Coco Beans: - material: INK_SACK - amount: 4 - durability: 3 - outputs: - Brown Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 12 - Dye_Green_Stained_Glass_Pane: - name: Dye Green Stained Glass Pane - inputs: - Green Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 - outputs: - Green Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 13 - Dye_Red_Stained_Glass_Pane: - name: Dye Red Stained Glass Pane - inputs: - Red Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 - outputs: - Red Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - durability: 14 - Dye_Black_Stained_Glass_Pane: - name: Dye Black Stained Glass Pane - inputs: - Black Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Ink Sack: - material: INK_SACK - amount: 4 - durability: 0 - outputs: - Black Stained Glass Pane: - material: STAINED_GLASS_PANE - amount: 64 - Dye_White_Stained_Clay: - name: Dye White Stained Clay - inputs: - White Stained Clay: - material: HARD_CLAY - amount: 64 - Bone Meal: - material: INK_SACK - amount: 4 - durability: 15 - outputs: - White Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 0 - Dye_Orange_Stained_Clay: - name: Dye Orange Stained Clay - inputs: - Orange Stained Clay: - material: HARD_CLAY - amount: 64 - Orange Dye: - material: INK_SACK - amount: 4 - durability: 14 - outputs: - Orange Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 1 - Dye_Magenta_Stained_Clay: - name: Dye Magenta Stained Clay - inputs: - Magenta Stained Clay: - material: HARD_CLAY - amount: 64 - Magenta Dye: - material: INK_SACK - amount: 4 - durability: 13 - outputs: - Magenta Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 2 - Dye_Light_Blue_Stained_Clay: - name: Dye Light Blue Stained Clay - inputs: - Light Blue Stained Clay: - material: HARD_CLAY - amount: 64 - Light Blue Dye: - material: INK_SACK - amount: 4 - durability: 12 - outputs: - Light Blue Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 3 - Dye_Yellow_Stained_Clay: - name: Dye Yellow Stained Clay - inputs: - Yellow Stained Clay: - material: HARD_CLAY - amount: 64 - Dandelion Yellow: - material: INK_SACK - amount: 4 - durability: 11 - outputs: - Yellow Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 4 - Dye_Lime_Stained_Clay: - name: Dye Lime Stained Clay - inputs: - Lime Stained Clay: - material: HARD_CLAY - amount: 64 - Lime Dye: - material: INK_SACK - amount: 4 - durability: 10 - outputs: - Lime Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 5 - Dye_Pink_Stained_Clay: - name: Dye Pink Stained Clay - inputs: - Pink Stained Clay: - material: HARD_CLAY - amount: 64 - Pink Dye: - material: INK_SACK - amount: 4 - durability: 9 - outputs: - Pink Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 6 - Dye_Gray_Stained_Clay: - name: Dye Gray Stained Clay - inputs: - Gray Stained Clay: - material: HARD_CLAY - amount: 64 - Gray Dye: - material: INK_SACK - amount: 4 - durability: 8 - outputs: - Gray Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 7 - Dye_Light_Gray_Stained_Clay: - name: Dye Light Gray Stained Clay - inputs: - Light Gray Stained Clay: - material: HARD_CLAY - amount: 64 - Light Gray Dye: - material: INK_SACK - amount: 4 - durability: 7 - outputs: - Light Gray Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 8 - Dye_Cyan_Stained_Clay: - name: Dye Cyan Stained Clay - inputs: - Cyan Stained Clay: - material: HARD_CLAY - amount: 64 - Cyan Dye: - material: INK_SACK - amount: 4 - durability: 6 - outputs: - Cyan Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 9 - Dye_Purple_Stained_Clay: - name: Dye Purple Stained Clay - inputs: - Purple Stained Clay: - material: HARD_CLAY - amount: 64 - Purple Dye: - material: INK_SACK - amount: 4 - durability: 5 - outputs: - Purple Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 10 - Dye_Blue_Stained_Clay: - name: Dye Blue Stained Clay - inputs: - Blue Stained Clay: - material: HARD_CLAY - amount: 64 - Lapis Lazuli: - material: INK_SACK - amount: 4 - durability: 4 - outputs: - Blue Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 11 - Dye_Brown_Stained_Clay: - name: Dye Brown Stained Clay - inputs: - Brown Stained Clay: - material: HARD_CLAY - amount: 64 - Coco Beans: - material: INK_SACK - amount: 4 - durability: 3 - outputs: - Brown Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 12 - Dye_Green_Stained_Clay: - name: Dye Green Stained Clay - inputs: - Green Stained Clay: - material: HARD_CLAY - amount: 64 - Cactus Green: - material: INK_SACK - amount: 4 - durability: 2 - outputs: - Green Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 13 - Dye_Red_Stained_Clay: - name: Dye Red Stained Clay - inputs: - Red Stained Clay: - material: HARD_CLAY - amount: 64 - Rose Red: - material: INK_SACK - amount: 4 - durability: 1 - outputs: - Red Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 14 - Dye_Black_Stained_Clay: - name: Dye Black Stained Clay - inputs: - Black Stained Clay: - material: HARD_CLAY - amount: 64 - Ink Sack: - material: INK_SACK - amount: 4 - durability: 0 - outputs: - Black Stained Clay: - material: HARD_CLAY - amount: 64 - durability: 15 - durability: 15 - Mutate_Spruce_Saplings: - name: Mutate Spruce Saplings - production_time: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 0 + lore: Diamond Shovel Rank 0 + outputs: + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 1 + lore: Diamond Shovel Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + DIAMOND_SHOVEL_RANK_2: + name: Diamond Shovel Forger Rank 2 + production_time: 360 inputs: - Oak Sapling: - material: SAPLING - amount: 64 - outputs: - Spruce Sapling: - material: SAPLING - amount: 64 - durability: 1 - Mutate_Birch_Saplings: - name: Mutate Birch Saplings - production_time: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 1 + lore: Diamond Shovel Rank 1 + outputs: + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 2 + lore: Diamond Shovel Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_SHOVEL_RANK_3: + name: Diamond Shovel Forger Rank 3 + production_time: 360 inputs: - Oak Sapling: - material: SAPLING - amount: 64 - outputs: - Spruce Sapling: - material: SAPLING - amount: 64 - durability: 2 - Mutate_Jungle_Saplings: - name: Mutate Jungle Saplings - production_time: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 2 + lore: Diamond Shovel Rank 2 + outputs: + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 3 + lore: Diamond Shovel Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_SHOVEL_RANK_4: + name: Diamond Shovel Forger Rank 4 + production_time: 360 inputs: - Oak Sapling: - material: SAPLING - amount: 64 - outputs: - Spruce Sapling: - material: SAPLING - amount: 64 - durability: 3 - Mutate_Acacia_Saplings: - name: Mutate Acacia Saplings - production_time: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 3 + lore: Diamond Shovel Rank 3 + outputs: + Diamond Shovel: + material: DIAMOND_SHOVEL + amount: 1 + display_name: Diamond Shovel Rank 4 + lore: Diamond Shovel Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: + type: DURABILITY + level: 3 + DIAMOND_HOE_RANK_0: + name: Diamond Hoe Forger Rank 0 + production_time: 360 inputs: - Oak Sapling: - material: SAPLING - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Iron Hoe: + material: IRON_HOE + amount: 2 + display_name: Iron Hoe Rank 4 + lore: Iron Hoe Rank 4 outputs: - Spruce Sapling: - material: SAPLING - amount: 64 - durability: 4 - Mutate_Dark_Oak_Saplings: - name: Mutate Dark Oak Saplings - production_time: 64 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 0 + lore: Diamond Hoe Rank 0 + DIAMOND_HOE_RANK_1: + name: Diamond Hoe Forger Rank 1 + production_time: 360 inputs: - Oak Sapling: - material: SAPLING - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 0 + lore: Diamond Hoe Rank 0 outputs: - Spruce Sapling: - material: SAPLING - amount: 64 - durability: 5 - Mutate_Grassless_Dirt: - name: Mutate Grassless Dirt - production_time: 16 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 1 + lore: Diamond Hoe Rank 1 + enchantments: + Efficiency: + type: DIG_SPEED + level: 1 + DIAMOND_HOE_RANK_2: + name: Diamond Hoe Forger Rank 2 + production_time: 360 inputs: - Grass: - material: GRASS - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 1 + lore: Diamond Hoe Rank 1 outputs: - Grassless Dirt: - material: DIRT - amount: 64 - durability: 1 - Mutate_Podzol: - name: Mutate Podzol - production_time: 16 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 2 + lore: Diamond Hoe Rank 2 + enchantments: + Efficiency: + type: DIG_SPEED + level: 2 + Unbreaking: + type: DURABILITY + level: 1 + DIAMOND_HOE_RANK_3: + name: Diamond Hoe Forger Rank 3 + production_time: 360 inputs: - Grass: - material: GRASS - amount: 64 + Diamond: + material: DIAMOND + amount: 32 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 2 + lore: Diamond Hoe Rank 2 outputs: - Podzol: - material: DIRT - amount: 64 - durability: 2 - Compact_Ice: - name: Compact Ice - production_time: 32 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 3 + lore: Diamond Hoe Rank 3 + enchantments: + Efficiency: + type: DIG_SPEED + level: 3 + Unbreaking: + type: DURABILITY + level: 2 + DIAMOND_HOE_RANK_4: + name: Diamond Hoe Forger Rank 4 + production_time: 360 inputs: - Ice: - material: ICE - amount: 576 + Diamond: + material: DIAMOND + amount: 32 + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 3 + lore: Diamond Hoe Rank 3 outputs: - Packed_Ice: - material: PACKED_ICE - amount: 576 - + Diamond Hoe: + material: DIAMOND_HOE + amount: 1 + display_name: Diamond Hoe Rank 4 + lore: Diamond Hoe Rank 4 + enchantments: + Efficiency: + type: DIG_SPEED + level: 4 + Unbreaking: + type: DURABILITY + level: 3 diff --git a/plugin.yml b/plugin.yml index 2f5e8694..aac4e6e3 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,4 +1,4 @@ name: FactoryMod main: com.github.igotyou.FactoryMod.FactoryModPlugin author: igotyou -version: 1.0 \ No newline at end of file +version: 1.1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..b35753c9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,53 @@ + + 4.0.0 + com.github.igotyou + FactoryMod + jar + 1.0-SNAPSHOT + FactoryMod + https://github.com/ttk2/FactoryMod + + + 1.7 + 1.7 + + + + ${basedir}/src + + + + ${basedir} + + *.yml + license.txt + + + + + + + + org.bukkit + bukkit + 1.7.2-R0.3 + provided + + + com.untamedears + Citadel + [2.5,) + provided + + + + + + bukkit-repo + http://repo.bukkit.org/content/groups/public/ + + + diff --git a/src/com/github/igotyou/FactoryMod/FactoryModPlugin.java b/src/com/github/igotyou/FactoryMod/FactoryModPlugin.java index 18b8c275..0f95fe05 100644 --- a/src/com/github/igotyou/FactoryMod/FactoryModPlugin.java +++ b/src/com/github/igotyou/FactoryMod/FactoryModPlugin.java @@ -1,362 +1,206 @@ package com.github.igotyou.FactoryMod; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.inventory.Recipe; -import org.bukkit.inventory.ItemStack; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.Location; +import org.bukkit.block.Chest; +import org.bukkit.block.Furnace; +import org.bukkit.inventory.Inventory; -import com.github.igotyou.FactoryMod.FactoryObject.FactoryType; import com.github.igotyou.FactoryMod.interfaces.Properties; -import com.github.igotyou.FactoryMod.listeners.FactoryModListener; -import com.github.igotyou.FactoryMod.listeners.RedstoneListener; -import com.github.igotyou.FactoryMod.managers.FactoryModManager; -import com.github.igotyou.FactoryMod.properties.PrintingPressProperties; -import com.github.igotyou.FactoryMod.properties.ProductionProperties; -import com.github.igotyou.FactoryMod.recipes.ProductionRecipe; -import com.github.igotyou.FactoryMod.recipes.ProbabilisticEnchantment; -import com.github.igotyou.FactoryMod.utility.ItemList; -import com.github.igotyou.FactoryMod.utility.NamedItemStack; -import org.bukkit.inventory.ShapedRecipe; -import org.bukkit.inventory.ShapelessRecipe; +import java.util.Date; - -public class FactoryModPlugin extends JavaPlugin +//original file: +/** + * MachineObject.java + * Purpose: Basic object base for machines to extend + * + * @author MrTwiggy + * @version 0.1 1/14/13 + */ +//edited version: +/** + * FactoryObject.java + * Purpose basic object base for factories to extend + * @author igotyou + * + */ +public class FactoryObject { - - FactoryModManager manager; - public static HashMap productionProperties; - public static HashMap productionRecipes; - public PrintingPressProperties printingPressProperties; - - public static final String VERSION = "v1.0"; //Current version of plugin - public static final String PLUGIN_NAME = "FactoryMod"; //Name of plugin - public static final String PLUGIN_PREFIX = PLUGIN_NAME + " " + VERSION + ": "; - public static final String PRODUCTION_SAVES_FILE = "productionSaves"; // The production saves file name - public static final int TICKS_PER_SECOND = 20; //The number of ticks per second - public static final String PRINTING_PRESSES_SAVE_FILE = "pressSaves"; - - public static int PRODUCER_UPDATE_CYCLE; - public static boolean PRODUCTION_ENEABLED; - public static int SAVE_CYCLE; - public static Material CENTRAL_BLOCK_MATERIAL; - public static boolean RETURN_BUILD_MATERIALS; - public static boolean CITADEL_ENABLED; - public static Material FACTORY_INTERACTION_MATERIAL; - public static boolean DESTRUCTIBLE_FACTORIES; - public static boolean DISABLE_EXPERIENCE; - public static long DISREPAIR_PERIOD; - public static long REPAIR_PERIOD; - public static boolean REDSTONE_START_ENABLED; - public static boolean LEVER_OUTPUT_ENABLED; - - public void onEnable() + //the diffrent factory types, NOTE: these are not the sub-factory types, these are the main types. + public enum FactoryType { - //load the config.yml - initConfig(); - //create the main manager - manager = new FactoryModManager(this); - //register the events(this should be moved...) - registerEvents(); + PRODUCTION, + PRINTING_PRESS } - public void onDisable() - { - //call the disable method, this will save the data etc. - manager.onDisable(); - } - public void registerEvents() - { - try - { - getServer().getPluginManager().registerEvents(new FactoryModListener(manager), this); - getServer().getPluginManager().registerEvents(new RedstoneListener(manager, manager.getProductionManager()), this); - } - catch(Exception e) - { - e.printStackTrace(); - } - } + protected Location factoryLocation; // Current location of factory center + protected Location factoryInventoryLocation; //Current location of factory inventory(normmaly a chest) + protected Location factoryPowerSourceLocation;//Current location of factory power source(normmaly a furnace) + protected boolean active; // Whether factory is currently active + protected Inventory factoryInventory; // The inventory of the factory + protected Inventory factoryPowerInventory;//The inventory of the power source. + protected FactoryType factoryType; // The type this factory is + protected String subFactoryType;//the SUBfactory type(the ones loaded from the config file) + protected Properties factoryProperties; // The properties of this factory type and tier + protected boolean upgraded; // Whether the tier has recently upgraded - public void initConfig() + /** + * Constructor + */ + public FactoryObject(Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource, + FactoryType factoryType, String subFactoryType) { - productionProperties = new HashMap(); - productionRecipes = new HashMap(); - FileConfiguration config = getConfig(); - if(getConfig().getDefaults().getBoolean("copy_defaults", true)) + this.factoryLocation = factoryLocation; + this.factoryInventoryLocation = factoryInventoryLocation; + this.factoryPowerSourceLocation = factoryPowerSource; + this.active = false; + this.factoryType = factoryType; + this.subFactoryType = subFactoryType; + this.upgraded = false; + if (this.isWhole()) { - saveResource("config.yml",true); + initializeInventory(); } - this.saveDefaultConfig(); - reloadConfig(); - config = getConfig(); - //how often should the managers save? - SAVE_CYCLE = config.getInt("general.save_cycle",15)*60*20; - //what's the material of the center block of factorys? - CENTRAL_BLOCK_MATERIAL = Material.getMaterial(config.getString("general.central_block")); - //Return the build materials upon destruction of factory. - RETURN_BUILD_MATERIALS = config.getBoolean("general.return_build_materials",false); - //is citadel enabled? - CITADEL_ENABLED = config.getBoolean("general.citadel_enabled",true); - //what's the tool that we use to interact with the factorys? - FACTORY_INTERACTION_MATERIAL = Material.getMaterial(config.getString("general.factory_interaction_material","STICK")); - //If factories are removed upon destruction of their blocks - DESTRUCTIBLE_FACTORIES=config.getBoolean("general.destructible_factories",false); - //Check if XP drops should be disabled - DISABLE_EXPERIENCE=config.getBoolean("general.disable_experience",false); - //How frequently factories are updated - PRODUCER_UPDATE_CYCLE = config.getInt("production_general.update_cycle",20); - //Period of days before a factory is removed after it falls into disrepair - DISREPAIR_PERIOD= config.getLong("general.disrepair_period",14)*24*60*60*1000; - //The length of time it takes a factory to go to 0% health - REPAIR_PERIOD = config.getLong("production_general.repair_period",28)*24*60*60*1000; - //Disable recipes which result in the following items - //Do we output the running state with a lever? - LEVER_OUTPUT_ENABLED = config.getBoolean("general.lever_output_enabled",true); - //Do we allow factories to be started with redstone? - REDSTONE_START_ENABLED = config.getBoolean("general.redstone_start_enabled",true); - int g = 0; - Iterator disabledRecipes=config.getStringList("crafting.disable").iterator(); - while(disabledRecipes.hasNext()) - { - ItemStack recipeItemStack = new ItemStack(Material.getMaterial(disabledRecipes.next())); - List tempList = getServer().getRecipesFor(recipeItemStack); - for (int itterator = 0; itterator < tempList.size(); itterator ++) - { - removeRecipe(tempList.get(itterator)); - g++; - } + updateProperties(); + } - } - //Enable the following recipes - ConfigurationSection configCraftingEnable=config.getConfigurationSection("crafting.enable"); - for (String recipeName:configCraftingEnable.getKeys(false)) - { - ConfigurationSection configSection=configCraftingEnable.getConfigurationSection(recipeName); - Recipe recipe; - List shape=configSection.getStringList("shape"); - NamedItemStack output=getItems(configSection.getConfigurationSection("output")).get(0); - if(shape.isEmpty()) - { - ShapelessRecipe shapelessRecipe=new ShapelessRecipe(output); - for (ItemStack input:getItems(configSection.getConfigurationSection("inputs"))) - { - shapelessRecipe.addIngredient(input.getAmount(),input.getType(),input.getDurability()); - } - recipe=shapelessRecipe; - } - else - { - ShapedRecipe shapedRecipe=new ShapedRecipe(output); - shapedRecipe.shape(shape.toArray(new String[shape.size()])); - for(String inputKey:configSection.getConfigurationSection("inputs").getKeys(false)) - { - ItemStack input=getItems(configSection.getConfigurationSection("inputs."+inputKey)).get(0); - shapedRecipe.setIngredient(inputKey.charAt(0),input.getType(),input.getDurability()); - } - recipe=shapedRecipe; - } - Bukkit.addRecipe(recipe); - } - - //Import recipes from config.yml - ConfigurationSection configProdRecipes=config.getConfigurationSection("production_recipes"); - //Temporary Storage array to store where recipes should point to each other - HashMap outputRecipes=new HashMap(); - Iterator recipeTitles=configProdRecipes.getKeys(false).iterator(); - while (recipeTitles.hasNext()) - { - //Section header in recipe file, also serves as unique identifier for the recipe - //All spaces are replaced with udnerscores so they don't disrupt saving format - //There should be a check for uniqueness of this identifier... - String title=recipeTitles.next(); - ConfigurationSection configSection=configProdRecipes.getConfigurationSection(title); - title=title.replaceAll(" ","_"); - //Display name of the recipe, Deafult of "Default Name" - String recipeName = configSection.getString("name","Default Name"); - //Production time of the recipe, default of 1 - int productionTime=configSection.getInt("production_time",2); - //Inputs of the recipe, empty of there are no inputs - ItemList inputs = getItems(configSection.getConfigurationSection("inputs")); - //Inputs of the recipe, empty of there are no inputs - ItemList upgrades = getItems(configSection.getConfigurationSection("upgrades")); - //Outputs of the recipe, empty of there are no inputs - ItemList outputs = getItems(configSection.getConfigurationSection("outputs")); - //Enchantments of the recipe, empty of there are no inputs - List enchantments=getEnchantments(configSection.getConfigurationSection("enchantments")); - //Whether this recipe can only be used once - boolean useOnce = configSection.getBoolean("use_once"); - ProductionRecipe recipe = new ProductionRecipe(title,recipeName,productionTime,inputs,upgrades,outputs,enchantments,useOnce,new ItemList()); - productionRecipes.put(title,recipe); - //Store the titles of the recipes that this should point to - ArrayList currentOutputRecipes=new ArrayList(); - currentOutputRecipes.addAll(configSection.getStringList("output_recipes")); - outputRecipes.put(recipe,currentOutputRecipes); - } - //Once ProductionRecipe objects have been created correctly insert different pointers - Iterator recipeIterator=outputRecipes.keySet().iterator(); - while (recipeIterator.hasNext()) - { - ProductionRecipe recipe=recipeIterator.next(); - Iterator outputIterator=outputRecipes.get(recipe).iterator(); - while(outputIterator.hasNext()) - { - recipe.addOutputRecipe(productionRecipes.get(outputIterator.next())); - } - } - - - //Import factories from config.yml - ConfigurationSection configProdFactories=config.getConfigurationSection("production_factories"); - Iterator factoryTitles=configProdFactories.getKeys(false).iterator(); - while(factoryTitles.hasNext()) + /** + * Constructor + */ + public FactoryObject(Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource, + boolean active, FactoryType factoryType, String subFactoryType) + { + this.factoryLocation = factoryLocation; + this.factoryInventoryLocation = factoryInventoryLocation; + this.factoryPowerSourceLocation = factoryPowerSource; + this.active = active; + this.factoryType = factoryType; + this.subFactoryType = subFactoryType; + this.upgraded = false; + if (this.isWhole()) { - String title=factoryTitles.next(); - ConfigurationSection configSection=configProdFactories.getConfigurationSection(title); - title=title.replaceAll(" ","_"); - String factoryName=configSection.getString("name","Default Name"); - //Uses overpowered getItems method for consistency, should always return a list of size=1 - //If no fuel is found, default to charcoal - ItemList fuel=getItems(configSection.getConfigurationSection("fuel")); - if(fuel.isEmpty()) - { - fuel=new ItemList(); - fuel.add(new NamedItemStack(Material.getMaterial("COAL"),1,(short)1,"Charcoal")); - } - int fuelTime=configSection.getInt("fuel_time",2); - ItemList inputs=getItems(configSection.getConfigurationSection("inputs")); - ItemList repairs=getItems(configSection.getConfigurationSection("repair_inputs")); - List factoryRecipes=new ArrayList(); - Iterator ouputRecipeIterator=configSection.getStringList("recipes").iterator(); - while (ouputRecipeIterator.hasNext()) - { - factoryRecipes.add(productionRecipes.get(ouputRecipeIterator.next())); - } - int repair=configSection.getInt("repair_multiple",0); - //Create repair recipe - productionRecipes.put(title+"REPAIR",new ProductionRecipe(title+"REPAIR","Repair Factory",1,repairs)); - factoryRecipes.add(productionRecipes.get(title+"REPAIR")); - ProductionProperties productionProperty = new ProductionProperties(inputs, factoryRecipes, fuel, fuelTime, factoryName, repair); - productionProperties.put(title, productionProperty); + initializeInventory(); } - - ConfigurationSection configPrintingPresses=config.getConfigurationSection("printing_presses"); - printingPressProperties = PrintingPressProperties.fromConfig(this, configPrintingPresses); + updateProperties(); } - private List getEnchantments(ConfigurationSection configEnchantments) + /** + * Constructor + */ + public FactoryObject(Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource, + boolean active, int tierLevel, FactoryType factoryType, Inventory factoryInventory, + String subFactoryType) { - List enchantments=new ArrayList(); - if(configEnchantments!=null) - { - Iterator names=configEnchantments.getKeys(false).iterator(); - while (names.hasNext()) - { - String name=names.next(); - ConfigurationSection configEnchantment=configEnchantments.getConfigurationSection(name); - String type=configEnchantment.getString("type"); - if (type!=null) - { - int level=configEnchantment.getInt("level",1); - double probability=configEnchantment.getDouble("probability",1.0); - ProbabilisticEnchantment enchantment=new ProbabilisticEnchantment(name,type,level,probability); - enchantments.add(enchantment); - } - } - } - return enchantments; + this.factoryLocation = factoryLocation; + this.factoryInventoryLocation = factoryInventoryLocation; + this.factoryPowerSourceLocation = factoryPowerSource; + this.active = active; + this.factoryType = factoryType; + this.subFactoryType = subFactoryType; + this.factoryInventory = factoryInventory; + updateProperties(); } - - public ItemList getItems(ConfigurationSection configItems) + + /** + * Initializes the inventory for this factory + */ + //Due to non-destructable factories this will not have been called on reconstructed factories + //however I am unable to find a use for this method in the current code, so it doesn't + //seem to be an issue right now, maybe the calls in the constructor should be gotten rid of + //all methods that get the inventory reinitialize the contents. + public void initializeInventory() { - ItemList items=new ItemList(); - if(configItems!=null) + switch(factoryType) { - for(String commonName:configItems.getKeys(false)) - { - - ConfigurationSection configItem= configItems.getConfigurationSection(commonName); - String materialName=configItem.getString("material"); - Material material = Material.getMaterial(materialName); - //only proceeds if an acceptable material name was provided - if(material!=null) - { - int amount=configItem.getInt("amount",1); - short durability=(short)configItem.getInt("durability",0); - String displayName=configItem.getString("display_name"); - String lore=configItem.getString("lore"); - items.add(createItemStack(material,amount,durability,displayName,lore,commonName)); - } - } + case PRODUCTION: + Chest chestBlock = (Chest)factoryInventoryLocation.getBlock().getState(); + factoryInventory = chestBlock.getInventory(); + Furnace furnaceBlock = (Furnace)factoryPowerSourceLocation.getBlock().getState(); + factoryPowerInventory = furnaceBlock.getInventory(); + break; + default: + break; } - return items; } - private NamedItemStack createItemStack(Material material,int stackSize,short durability,String name,String loreString,String commonName) + /** + * Updates the current properties for the factory. + */ + public void updateProperties() { - NamedItemStack namedItemStack= new NamedItemStack(material, stackSize, durability,commonName); - if(name!=null||loreString!=null) - { - ItemMeta meta=namedItemStack.getItemMeta(); - if (name!=null) - meta.setDisplayName(name); - if (loreString!=null) - { - List lore = new ArrayList(); - lore.add(loreString); - meta.setLore(lore); - } - namedItemStack.setItemMeta(meta); - } - return namedItemStack; - + factoryProperties = FactoryModPlugin.getProperties(factoryType, subFactoryType); } - private void removeRecipe(Recipe removalRecipe) + /** + * Returns the user-friendly name for this factory type + */ + public String factoryName() { - Iterator itterator = getServer().recipeIterator(); - while (itterator.hasNext()) + switch (factoryType) { - Recipe recipe = itterator.next(); - if (recipe.getResult().getType() == removalRecipe.getResult().getType()) - { - itterator.remove(); - } + case PRODUCTION: + return "Production"; + default: + return null; } } - public static Properties getProperties(FactoryType factoryType, String subFactoryType) + /** + * returns the factory Inventory(normally a chest), updates the inventory variable aswell. + */ + public Inventory getInventory() { - switch(factoryType) - { - case PRODUCTION: - return FactoryModPlugin.productionProperties.get(subFactoryType); - default: - return null; - } + Chest chestBlock = (Chest)factoryInventoryLocation.getBlock().getState(); + factoryInventory = chestBlock.getInventory(); + return factoryInventory; } - public static int getMaxTiers(FactoryType factoryType) + /** + * Returns the power Source inventory, updates it aswell. + */ + public Inventory getPowerSourceInventory() { - // TODO Auto-generated method stub - return 0; + Furnace furnaceBlock = (Furnace)factoryPowerSourceLocation.getBlock().getState(); + factoryPowerInventory = furnaceBlock.getInventory(); + return factoryPowerInventory; } - - public static void sendConsoleMessage(String message) + + /** + * Returns the sub-factory type of the factory. + */ + public String getSubFactoryType() { - Bukkit.getLogger().info(FactoryModPlugin.PLUGIN_PREFIX + message); + return subFactoryType; } - - public PrintingPressProperties getPrintingPressProperties() { - return printingPressProperties; + + + /** + * returns if the factory is on or not. + */ + public boolean getActive() + { + return active; + } + + /** + * returns true if all factory blocks are occupied with the correct blocks + */ + public boolean isWhole() + { + //Check if power source exists + if(factoryPowerSourceLocation.getBlock().getType().getId()== 61 || factoryPowerSourceLocation.getBlock().getType().getId()== 62) + { + //Check inventory location + if(factoryInventoryLocation.getBlock().getType().getId()== 54) + { + //Check Interaction block location + if(factoryLocation.getBlock().getType().getId()==FactoryModPlugin.CENTRAL_BLOCK_MATERIAL.getId()) + { + return true; + } + } + } + return false; } } diff --git a/src/com/github/igotyou/FactoryMod/FactoryObject.java b/src/com/github/igotyou/FactoryMod/FactoryObject.java index d55d102a..0f95fe05 100644 --- a/src/com/github/igotyou/FactoryMod/FactoryObject.java +++ b/src/com/github/igotyou/FactoryMod/FactoryObject.java @@ -203,4 +203,4 @@ public boolean isWhole() } return false; } -} \ No newline at end of file +} diff --git a/src/com/github/igotyou/FactoryMod/Factorys/BaseFactory.java b/src/com/github/igotyou/FactoryMod/Factorys/BaseFactory.java index 0d7e9a84..1f651a3f 100644 --- a/src/com/github/igotyou/FactoryMod/Factorys/BaseFactory.java +++ b/src/com/github/igotyou/FactoryMod/Factorys/BaseFactory.java @@ -441,7 +441,7 @@ public void destroy(Location destroyLocation) /* * Repairs the factory */ - private void repair(int amountRepaired) + protected void repair(int amountRepaired) { currentRepair-=amountRepaired; if(currentRepair<0) diff --git a/src/com/github/igotyou/FactoryMod/Factorys/NetherFactory.java b/src/com/github/igotyou/FactoryMod/Factorys/NetherFactory.java new file mode 100644 index 00000000..0ff2fe92 --- /dev/null +++ b/src/com/github/igotyou/FactoryMod/Factorys/NetherFactory.java @@ -0,0 +1,605 @@ +package com.github.igotyou.FactoryMod.Factorys; + +import static com.untamedears.citadel.Utility.getReinforcement; +import static com.untamedears.citadel.Utility.isReinforced; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import com.github.igotyou.FactoryMod.FactoryModPlugin; +import com.github.igotyou.FactoryMod.managers.NetherFactoryManager; +import com.github.igotyou.FactoryMod.properties.NetherFactoryProperties; +import com.github.igotyou.FactoryMod.utility.InteractionResponse; +import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult; +import com.github.igotyou.FactoryMod.utility.ItemList; +import com.github.igotyou.FactoryMod.utility.NamedItemStack; +import com.untamedears.citadel.entity.PlayerReinforcement; + +import java.util.ArrayList; +import java.util.List; + +public class NetherFactory extends BaseFactory +{ + + private NetherFactoryProperties netherFactoryProperties;//the properties of the production factory + private Location netherTeleportPlatform; + private Location overworldTeleportPlatform; + private NetherOperationMode mode; + private NetherFactoryManager netherManager; + public NetherOperationMode getMode() { + return mode; + } + + /** + * Constructor called when creating portal + */ + public NetherFactory (Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource, Location nTeleportPlatform, Location oTeleportPlatform, + NetherFactoryProperties netherFactoryProperties, NetherFactoryManager netherManager) + { + super(factoryLocation, factoryInventoryLocation, factoryPowerSource, FactoryType.NETHER_FACTORY, "Nether factory"); + this.netherTeleportPlatform = nTeleportPlatform; + this.overworldTeleportPlatform = oTeleportPlatform; + this.netherFactoryProperties = netherFactoryProperties; + this.mode = NetherOperationMode.REPAIR; + this.netherManager = netherManager; + } + + /** + * Constructor + */ + public NetherFactory (Location factoryLocation, Location factoryInventoryLocation, Location factoryPowerSource, Location nTeleportPlatform, Location oTeleportPlatform, + boolean active, double currentMaintenance, + long timeDisrepair, NetherOperationMode mode, NetherFactoryProperties netherFactoryProperties, + NetherFactoryManager netherManager) + { + super(factoryLocation, factoryInventoryLocation, factoryPowerSource, FactoryType.NETHER_FACTORY, active, "Nether factory", 0 , 0, currentMaintenance, timeDisrepair); + this.netherFactoryProperties = netherFactoryProperties; + this.netherTeleportPlatform = nTeleportPlatform; + this.overworldTeleportPlatform = oTeleportPlatform; + this.mode = mode; + this.netherManager = netherManager; + } + + @Override + public boolean isRepairing() { + return mode == NetherOperationMode.REPAIR; + } + + @Override + public void destroy(Location destroyLocation) + { + if (destroyLocation.equals(overworldTeleportPlatform) || destroyLocation.equals(netherTeleportPlatform)) + { + powerOff(); + } + else if (destroyLocation.equals(factoryLocation) || destroyLocation.equals(factoryInventoryLocation) || destroyLocation.equals(factoryPowerSourceLocation)) + { + powerOff(); + currentRepair=getMaxRepair(); + timeDisrepair=System.currentTimeMillis(); + } + } + + /** + * Returns either a success or error message. + * Called by the blockListener when a player left clicks the center block, with the InteractionMaterial + */ + @Override + public void update() + { + if (mode == NetherOperationMode.REPAIR) + { + //if factory is turned on + if (active) + { + //if the materials required to produce the current recipe are in the factory inventory + if (checkHasMaterials()) + { + //if the factory has been working for less than the required time for the recipe + if (currentProductionTimer < getProductionTime()) + { + //if the factory power source inventory has enough fuel for at least 1 energyCycle + if (isFuelAvailable()) + { + //if the time since fuel was last consumed is equal to how often fuel needs to be consumed + if (currentEnergyTimer == getEnergyTime()-1) + { + //remove one fuel. + getFuel().removeFrom(getPowerSourceInventory()); + //0 seconds since last fuel consumption + currentEnergyTimer = 0; + fuelConsumed(); + } + //if we don't need to consume fuel, just increment the energy timer + else + { + currentEnergyTimer++; + } + //increment the production timer + currentProductionTimer ++; + postUpdate(); + } + //if there is no fuel Available turn off the factory + else + { + powerOff(); + } + } + + //if the production timer has reached the recipes production time remove input from chest, and add output material + else if (currentProductionTimer >= getProductionTime()) + { + consumeInputs(); + produceOutputs(); + //Repairs the factory + repair(getRepairs().removeMaxFrom(getInventory(),(int)currentRepair)); + recipeFinished(); + + currentProductionTimer = 0; + powerOff(); + } + } + else + { + powerOff(); + } + } + } + else if (mode == NetherOperationMode.TELEPORT) + { + if(!isFuelAvailable()) + { + togglePower(); + } + } + } + + public List getTeleportationBlockResponse(Player player, Location clickedBlock) + { + List responses=new ArrayList(); + //does the player have acsess to the nether factory via ciatdel? + if ((!FactoryModPlugin.CITADEL_ENABLED || (FactoryModPlugin.CITADEL_ENABLED && !isReinforced(factoryLocation))) || + (((PlayerReinforcement) getReinforcement(factoryLocation)).isAccessible(player))) + { + if (mode == NetherOperationMode.TELEPORT) + { + if (active) + { + if (isFuelAvailable() || !netherFactoryProperties.getUseFuelOnTeleport()) + { + Location playerLocation = player.getLocation(); + if ( playerLocation.getBlockX() == clickedBlock.getBlockX() + && (playerLocation.getBlockY()-1) == clickedBlock.getBlockY() + && playerLocation.getBlockZ() == clickedBlock.getBlockZ()) + { + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Commencing teleportation...")); + if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.WORLD_NAME)) + { + if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT) + { + removeBlocksAboveTeleportPlatform(netherTeleportPlatform); + } + Location destination = new Location(netherTeleportPlatform.getWorld(), netherTeleportPlatform.getX(), netherTeleportPlatform.getY(), netherTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch()); + destination.add(0.5, 1.5, 0.5); + player.teleport(destination); + if (netherFactoryProperties.getUseFuelOnTeleport()) + { + getFuel().removeFrom(getPowerSourceInventory()); + } + } + else if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.NETHER_NAME)) + { + if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT) + { + removeBlocksAboveTeleportPlatform(overworldTeleportPlatform); + } + Location destination = new Location(overworldTeleportPlatform.getWorld(), overworldTeleportPlatform.getX(), overworldTeleportPlatform.getY(), overworldTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch()); + destination.add(0.5, 1.5, 0.5); + player.teleport(destination); + if (netherFactoryProperties.getUseFuelOnTeleport()) + { + getFuel().removeFrom(getPowerSourceInventory()); + } + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, you must stand on the teleportation block!")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is missing fuel! ("+getFuel().getMultiple(1).toString()+")")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is turned off!")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is not in teleport mode.")); + } + return responses; + } + else + { + //is the player potentialy holding a security note/ticket? + ItemStack itemInHand = player.getItemInHand(); + if (itemInHand.getType() == Material.PAPER) + { + if (isInTicketMode()) + { + int ticketCheck = checkTicket(itemInHand); + if (ticketCheck > 0) + { + if (mode == NetherOperationMode.TELEPORT) + { + if (active) + { + if (isFuelAvailable()) + { + Location playerLocation = player.getLocation(); + if ( playerLocation.getBlockX() == clickedBlock.getBlockX() + && (playerLocation.getBlockY()-1) == clickedBlock.getBlockY() + && playerLocation.getBlockZ() == clickedBlock.getBlockZ()) + { + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Commencing teleportation...")); + if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.WORLD_NAME)) + { + if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT) + { + removeBlocksAboveTeleportPlatform(netherTeleportPlatform); + } + Location destination = new Location(netherTeleportPlatform.getWorld(), netherTeleportPlatform.getX(), netherTeleportPlatform.getY(), netherTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch()); + destination.add(0.5, 1.5, 0.5); + player.teleport(destination); + if (ticketCheck == 2) + { + transferTicket(player, itemInHand); + } + if (netherFactoryProperties.getUseFuelOnTeleport()) + { + getFuel().removeFrom(getPowerSourceInventory()); + } + } + else if (clickedBlock.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.NETHER_NAME)) + { + if (FactoryModPlugin.REMOVE_BLOCK_ABOVE_TELEPORT_PLATFORM_ON_TELEPORT) + { + removeBlocksAboveTeleportPlatform(overworldTeleportPlatform); + } + Location destination = new Location(overworldTeleportPlatform.getWorld(), overworldTeleportPlatform.getX(), overworldTeleportPlatform.getY(), overworldTeleportPlatform.getZ(), playerLocation.getYaw(), playerLocation.getPitch()); + destination.add(0.5, 1.5, 0.5); + player.teleport(destination); + if (ticketCheck == 2) + { + transferTicket(player, itemInHand); + } + if (netherFactoryProperties.getUseFuelOnTeleport()) + { + getFuel().removeFrom(getPowerSourceInventory()); + } + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, you must stand on the teleportation block!")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is missing fuel! ("+getFuel().getMultiple(1).toString()+")")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is turned off!")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Can't teleport, factory is not in teleport mode.")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "Your ticket does not match any in the factory.")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "You don't have permission to use this factory.")); + } + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "You don't have permission to use this factory.")); + } + } + return responses; + } + + @Override + public List getCentralBlockResponse() + { + List responses=new ArrayList(); + //Is the factory off + if (!active) + { + //is the recipe is initiated + if (mode == null) + { + mode = NetherOperationMode.REPAIR; + } + else + { + mode = mode.getNext(); + } + + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "-----------------------------------------------------")); + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Switched mode to: " + mode.getDescription()+".")); + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Next mode is: "+mode.getNext().getDescription()+".")); + } + else + { + responses.add(new InteractionResponse(InteractionResult.FAILURE, "You can't change modes while the nether factory is on! Turn it off first.")); + } + return responses; + } + + @Override + public ItemList getFuel() { + return netherFactoryProperties.getFuel(); + } + + /** + * Returns the factory's properties + */ + public NetherFactoryProperties getProperties() + { + return netherFactoryProperties; + } + + @Override + public List getChestResponse() + { + List responses=new ArrayList(); + String status=active ? "On" : "Off"; + //Name: Status with XX% health. + int maxRepair = netherFactoryProperties.getRepair(); + boolean maintenanceActive = maxRepair!=0; + int health =(!maintenanceActive) ? 100 : (int) Math.round(100*(1-currentRepair/(maxRepair))); + responses.add(new InteractionResponse(InteractionResult.SUCCESS, netherFactoryProperties.getName()+": "+status+" with "+String.valueOf(health)+"% health.")); + //Current mode: mode description + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Current mode: " + mode.getDescription())); + //Overworld side teleport platform is at X: Y: Z: + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Overworld side teleport platform is:" + overworldTeleportPlatform.getBlockX() + " Y:" + overworldTeleportPlatform.getBlockY() + " Z:" + overworldTeleportPlatform.getBlockZ())); + //Nether side teleport platform is at X: Y: Z: + responses.add(new InteractionResponse(InteractionResult.SUCCESS, "Nether side teleport platform is:" + netherTeleportPlatform.getBlockX() + " Y:" + netherTeleportPlatform.getBlockY() + " Z:" + netherTeleportPlatform.getBlockZ())); + //[Will repair XX% of the factory] + if(!getRepairs().isEmpty()&&maintenanceActive) + { + int amountAvailable=getRepairs().amountAvailable(getInventory()); + int amountRepaired=amountAvailable>currentRepair ? (int) Math.ceil(currentRepair) : amountAvailable; + int percentRepaired=(int) (( (double) amountRepaired)/netherFactoryProperties.getRepair()*100); + responses.add(new InteractionResponse(InteractionResult.SUCCESS,"Will repair "+String.valueOf(percentRepaired)+"% of the factory with "+getRepairs().getMultiple(amountRepaired).toString()+".")); + } + return responses; + } + + protected void recipeFinished() { + } + + @Override + public ItemList getInputs() { + if(mode == NetherOperationMode.REPAIR) + { + return new ItemList(); + } + else + { + return new ItemList(); + } + } + + @Override + public ItemList getOutputs() { + return new ItemList(); + } + + @Override + public ItemList getRepairs() { + ItemList repairMaterials = new ItemList(); + switch(mode) { + case REPAIR: + repairMaterials.addAll(netherFactoryProperties.getRepairMaterials()); + repairMaterials = repairMaterials.getMultiple(netherManager.getScalingFactor(factoryLocation)); + break; + default: + break; + } + return repairMaterials; + } + + @Override + public double getEnergyTime() { + return netherFactoryProperties.getEnergyTime(); + } + + @Override + public double getProductionTime() { + switch(mode) { + case REPAIR: + return netherFactoryProperties.getRepairTime(); + default: + return 1; + } + } + + @Override + public int getMaxRepair() { + return netherFactoryProperties.getRepair(); + } + + public Location getNetherTeleportPlatform() + { + return netherTeleportPlatform; + } + + + public Location getOverworldTeleportPlatform() + { + return overworldTeleportPlatform; + } + + @Override + public boolean isWhole(boolean initCall) + { + //Check if power source exists + if(factoryPowerSourceLocation.getBlock().getType().getId()== 61 || factoryPowerSourceLocation.getBlock().getType().getId()== 62) + { + //Check inventory location + if(factoryInventoryLocation.getBlock().getType().getId()== 54) + { + //Check Interaction block location + if(factoryLocation.getBlock().getType()==FactoryModPlugin.CENTRAL_BLOCK_MATERIAL) + { + if (netherTeleportPlatform == null && overworldTeleportPlatform == null && initCall) + { + return true; + } + else + { + if (netherTeleportPlatform.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL) + { + if (overworldTeleportPlatform.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL) + { + return true; + } + } + } + } + } + } + return false; + } + + public boolean isInTicketMode() + { + for (ItemStack itemSlot : getInventory().getContents()) + { + if (itemSlot != null && itemSlot.getType() == Material.PAPER) + { + return true; + } + } + return false; + } + + public int checkTicket(ItemStack ticket) + { + int amount = 0; + for(ItemStack itemStack: getInventory().getContents()) + { + if (itemStack == null) + { + continue; + } + if (itemStack.isSimilar(ticket)) + { + amount = amount+itemStack.getAmount(); + } + } + if (amount == 1) + { + return 1; + } + else if (amount >= 2) + { + return 2; + } + else + { + return 0; + } + } + + public void removeBlocksAboveTeleportPlatform(Location teleportPlatform) + { + Location netherLocation1 = teleportPlatform.clone(); + netherLocation1.add(0, 1, 0); + Location netherLocation2 = teleportPlatform.clone(); + netherLocation2.add(0, 2, 0); + Location netherLocation3 = teleportPlatform.clone(); + netherLocation3.add(0, 3, 0); + netherLocation1.getBlock().setType(Material.AIR); + netherLocation1.getBlock().getState().update(true); + netherLocation2.getBlock().setType(Material.AIR); + netherLocation2.getBlock().getState().update(true); + netherLocation3.getBlock().setType(Material.AIR); + netherLocation3.getBlock().getState().update(true); + } + + public void regenerateTeleportBlock(Location location) + { + if (location.equals(overworldTeleportPlatform)) + { + netherTeleportPlatform.getBlock().setType(FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL); + netherTeleportPlatform.getBlock().getState().update(true); + } + else if(location.equals(netherTeleportPlatform)) + { + overworldTeleportPlatform.getBlock().setType(FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL); + overworldTeleportPlatform.getBlock().getState().update(true); + } + + } + + public void transferTicket(Player player, ItemStack ticket) + { + ItemStack clonedTicket = ticket.clone(); + clonedTicket.setAmount(1); + ticket.setAmount(ticket.getAmount()-1); + player.setItemInHand(ticket); + getInventory().addItem(clonedTicket); + } + + public enum NetherOperationMode { + REPAIR(0, "Repair"), + TELEPORT(1, "Teleport"); + + private static final int MAX_ID = 2; + private int id; + private String description; + + private NetherOperationMode(int id, String description) { + this.id = id; + this.description = description; + } + + public String getDescription() { + return description; + } + + public static NetherOperationMode byId(int id) { + for (NetherOperationMode mode : NetherOperationMode.values()) { + if (mode.getId() == id) + return mode; + } + return null; + } + + public int getId() { + return id; + } + + public NetherOperationMode getNext() { + int nextId = (getId() + 1) % MAX_ID; + return NetherOperationMode.byId(nextId); + } + } +} \ No newline at end of file diff --git a/src/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java b/src/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java index 20d0b4e8..c46b8d7a 100644 --- a/src/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java +++ b/src/com/github/igotyou/FactoryMod/listeners/FactoryModListener.java @@ -18,6 +18,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import com.github.igotyou.FactoryMod.FactoryModPlugin; +import com.github.igotyou.FactoryMod.Factorys.NetherFactory; import com.github.igotyou.FactoryMod.Factorys.PrintingPress; import com.github.igotyou.FactoryMod.Factorys.ProductionFactory; import com.github.igotyou.FactoryMod.interfaces.Factory; @@ -27,6 +28,7 @@ import com.github.igotyou.FactoryMod.utility.InteractionResponse; import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult; import com.untamedears.citadel.entity.PlayerReinforcement; + import org.bukkit.event.entity.ExpBottleEvent; import org.bukkit.event.player.PlayerExpChangeEvent; @@ -247,6 +249,49 @@ else if (clicked.getType() == Material.CHEST) } } + else if (clicked.getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL) + { + if (factoryMan.factoryExistsAt(clicked.getLocation())) + { + if(factoryMan.getFactory(clicked.getLocation()).getClass() == NetherFactory.class) + { + NetherFactory netherFactory = (NetherFactory) factoryMan.getFactory(clicked.getLocation()); + if (FactoryModPlugin.REGENERATE_TELEPORT_BLOCK_ON_TELEPORT) + { + netherFactory.regenerateTeleportBlock(clicked.getLocation()); + } + if(factoryMan.factoryWholeAt(clicked.getLocation())) + { + //toggle the recipe, and print the returned message. + InteractionResponse.messagePlayerResults(player, netherFactory.getTeleportationBlockResponse(player, clicked.getLocation())); + e.setCancelled(true); + } + } + } + } + } + else if (player.getItemInHand().getType() == Material.PAPER) + { + if (clicked.getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL) + { + if (factoryMan.factoryExistsAt(clicked.getLocation())) + { + if(factoryMan.getFactory(clicked.getLocation()).getClass() == NetherFactory.class) + { + NetherFactory netherFactory = (NetherFactory) factoryMan.getFactory(clicked.getLocation()); + if (FactoryModPlugin.REGENERATE_TELEPORT_BLOCK_ON_TELEPORT) + { + netherFactory.regenerateTeleportBlock(clicked.getLocation()); + } + if(factoryMan.factoryWholeAt(clicked.getLocation())) + { + //toggle the recipe, and print the returned message. + InteractionResponse.messagePlayerResults(player, netherFactory.getTeleportationBlockResponse(player, clicked.getLocation())); + e.setCancelled(true); + } + } + } + } } } /* Section commented out since there exists range of bugs that circumvent diff --git a/src/com/github/igotyou/FactoryMod/listeners/NoteStackListener.java b/src/com/github/igotyou/FactoryMod/listeners/NoteStackListener.java new file mode 100644 index 00000000..3333f81b --- /dev/null +++ b/src/com/github/igotyou/FactoryMod/listeners/NoteStackListener.java @@ -0,0 +1,194 @@ +package com.github.igotyou.FactoryMod.listeners; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.inventory.PrepareItemCraftEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.ShapelessRecipe; +import org.bukkit.inventory.meta.ItemMeta; + +import sun.misc.Regexp; + +import com.github.igotyou.FactoryMod.FactoryModPlugin; + +public class NoteStackListener implements Listener { + private FactoryModPlugin plugin; + private static final Pattern stackableRegexp = Pattern.compile("^(ยง2.*?)( \\(x([1-9][0-9]*)\\))?$"); + private static final Pattern nameRegexp = Pattern.compile("^(.*?)( ยง2x([1-9][0-9]*))?$"); + private static final int SCALE_FACTOR = 4; + private static final int MAX_SCALE = 64; + + public NoteStackListener(FactoryModPlugin plugin) { + this.plugin = plugin; + } + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void playerInteractionEvent(PlayerInteractEvent e) + { + Block clicked = e.getClickedBlock(); + Player player = e.getPlayer(); + + ItemStack item = player.getItemInHand(); + if (item == null) return; + if (!item.getType().equals(Material.PAPER)) return; + + //if the player left clicked a block + if (e.getAction().equals(Action.LEFT_CLICK_BLOCK)) + { + if (clicked.getType().equals(Material.ENCHANTMENT_TABLE)) { + // Break notes + int multiplier = getMultiplier(player.getItemInHand()); + if (multiplier >= SCALE_FACTOR) { + int count = item.getAmount() * SCALE_FACTOR; + int newMultiplier = multiplier / SCALE_FACTOR; + player.setItemInHand(new ItemStack(Material.AIR)); + ItemStack newMultipleStack = setMultiplier(item, newMultiplier); + + while (count > 0) { + ItemStack toAdd = new ItemStack(newMultipleStack); + if (count > 64) { + toAdd.setAmount(64); + } else { + toAdd.setAmount(count); + } + // Try to add to hand first when breaking over 64 + if (count > 64 && player.getItemInHand() == null || player.getItemInHand().getType().equals(Material.AIR)) { + player.setItemInHand(toAdd); + } else { + Map overflow = player.getInventory().addItem(toAdd); + if (overflow != null && overflow.size() > 0) { + for (ItemStack spill : overflow.values()) { + player.getWorld().dropItem(player.getLocation(), spill); + } + } + } + count = count - 64; + } + + player.updateInventory(); + } + } + } else if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { + if (clicked.getType().equals(Material.ENCHANTMENT_TABLE)) { + // Combine notes + int multiplier = getMultiplier(item); + if (multiplier > 0 && item.getAmount() >= SCALE_FACTOR) { + int count = item.getAmount() / SCALE_FACTOR; + int residual = item.getAmount() - count * SCALE_FACTOR; + int newMultiplier = multiplier * SCALE_FACTOR; + if (newMultiplier > MAX_SCALE) { + return; + } + if (residual > 0) { + ItemStack singleRemainder = new ItemStack(item); + singleRemainder.setAmount(residual); + player.setItemInHand(singleRemainder); + } else { + player.setItemInHand(new ItemStack(Material.AIR)); + } + ItemStack newMultipleStack = setMultiplier(item, newMultiplier); + + while (count > 0) { + ItemStack toAdd = new ItemStack(newMultipleStack); + if (count > 64) { + toAdd.setAmount(64); + } else { + toAdd.setAmount(count); + } + // Try to add to hand first + Map overflow = player.getInventory().addItem(toAdd); + if (overflow != null && overflow.size() > 0) { + for (ItemStack spill : overflow.values()) { + player.getWorld().dropItem(player.getLocation(), spill); + } + } + count = count - 64; + } + + e.setCancelled(true); + player.updateInventory(); + } + } + } + } + + private int getMultiplier(ItemStack item) { + List lore = item.getItemMeta().getLore(); + if (item.getType().equals(Material.PAPER)) { + if (lore != null && lore.size() > 0) { + String lastLore = lore.get(lore.size() - 1); + Matcher matcher = stackableRegexp.matcher(lastLore); + if (matcher.find()) { + String digits = matcher.group(3); + if (digits != null) { + return Integer.parseInt(digits); + } else { + return 1; + } + } + return 0; + } else { + return 0; + } + } else { + return 0; + } + } + + private ItemStack setMultiplier(ItemStack item, int multiplier) { + String name = item.getItemMeta().getDisplayName(); + List lore = item.getItemMeta().getLore(); + if (item.getType().equals(Material.PAPER)) { + if (name != null) { + Matcher matcher = nameRegexp.matcher(name); + if (matcher.find()) { + String newName; + if (multiplier == 1) { + newName = matcher.group(1); + } else { + newName = matcher.group(1) + " ยง2x" + Integer.toString(multiplier); + } + + ItemMeta newMeta = item.getItemMeta().clone(); + newMeta.setDisplayName(newName); + item = new ItemStack(item); + item.setItemMeta(newMeta); + } + } + + if (lore != null && lore.size() > 0) { + String lastLore = lore.get(lore.size() - 1); + Matcher matcher = stackableRegexp.matcher(lastLore); + List newLore = new ArrayList(); + if (matcher.find()) { + for (int i = 0; i < lore.size() - 1; i++) { + newLore.add(lore.get(i)); + } + if (multiplier == 1) { + newLore.add(matcher.group(1)); + } else { + newLore.add(matcher.group(1) + " (x" + Integer.toString(multiplier) + ")"); + } + + ItemMeta newMeta = item.getItemMeta().clone(); + newMeta.setLore(newLore); + item = new ItemStack(item); + item.setItemMeta(newMeta); + } + } + } + return item; + } +} diff --git a/src/com/github/igotyou/FactoryMod/managers/FactoryModManager.java b/src/com/github/igotyou/FactoryMod/managers/FactoryModManager.java index 2e327ece..ceff2ab7 100644 --- a/src/com/github/igotyou/FactoryMod/managers/FactoryModManager.java +++ b/src/com/github/igotyou/FactoryMod/managers/FactoryModManager.java @@ -64,6 +64,7 @@ private void initializeManagers() //if (FactoryModPlugin.PRODUCTION_ENEABLED) //{ initializeProductionManager(); + initializeNetherFactoryManager(); initializePrintingPressManager(); //} } @@ -88,6 +89,13 @@ private void initializePrintingPressManager() managers.add(printingMan); } + private void initializeNetherFactoryManager() + { + NetherFactoryManager netherMan = new NetherFactoryManager(plugin); + + managers.add(netherMan); + } + /** * When plugin disabled, this is called. */ diff --git a/src/com/github/igotyou/FactoryMod/managers/NetherFactoryManager.java b/src/com/github/igotyou/FactoryMod/managers/NetherFactoryManager.java new file mode 100644 index 00000000..dd4a3765 --- /dev/null +++ b/src/com/github/igotyou/FactoryMod/managers/NetherFactoryManager.java @@ -0,0 +1,407 @@ +package com.github.igotyou.FactoryMod.managers; + +import static com.untamedears.citadel.Utility.isReinforced; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.block.Chest; +import org.bukkit.inventory.Inventory; + +import com.github.igotyou.FactoryMod.FactoryModPlugin; +import com.github.igotyou.FactoryMod.Factorys.NetherFactory; +import com.github.igotyou.FactoryMod.Factorys.NetherFactory.NetherOperationMode; +import com.github.igotyou.FactoryMod.interfaces.Factory; +import com.github.igotyou.FactoryMod.interfaces.Manager; +import com.github.igotyou.FactoryMod.properties.NetherFactoryProperties; +import com.github.igotyou.FactoryMod.utility.InteractionResponse; +import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult; +import com.github.igotyou.FactoryMod.utility.ItemList; +import com.github.igotyou.FactoryMod.utility.NamedItemStack; + +import java.util.Iterator; + +//original file: +/** +* Manager.java +* Purpose: Interface for Manager objects for basic manager functionality +* +* @author MrTwiggy +* @version 0.1 1/08/13 +*/ +//edited version: +/** +* Manager.java +* Purpose: Interface for Manager objects for basic manager functionality +* @author igotyou +* +*/ + +public class NetherFactoryManager implements Manager +{ + private FactoryModPlugin plugin; + private List netherFactorys; + private long repairTime; + + public NetherFactoryManager(FactoryModPlugin plugin) + { + this.plugin = plugin; + netherFactorys = new ArrayList(); + //Set maintenance clock to 0 + updateFactorys(); + } + + public void save(File file) throws IOException + { + //Takes difference between last repair update and current one and scales repair accordingly + updateRepair(System.currentTimeMillis()-repairTime); + repairTime=System.currentTimeMillis(); + FileOutputStream fileOutputStream = new FileOutputStream(file); + ObjectOutputStream oos = new ObjectOutputStream(fileOutputStream); + int version = 1; + oos.writeInt(version); + oos.writeInt(netherFactorys.size()); + for (NetherFactory factory : netherFactorys) + { + Location centerlocation = factory.getCenterLocation(); + Location inventoryLocation = factory.getInventoryLocation(); + Location powerLocation = factory.getPowerSourceLocation(); + Location netherTeleportPlatformLocation = factory.getNetherTeleportPlatform(); + Location overworldTeleportPlatformLocation = factory.getOverworldTeleportPlatform(); + + oos.writeUTF(centerlocation.getWorld().getName()); + + oos.writeInt(centerlocation.getBlockX()); + oos.writeInt(centerlocation.getBlockY()); + oos.writeInt(centerlocation.getBlockZ()); + + oos.writeInt(inventoryLocation.getBlockX()); + oos.writeInt(inventoryLocation.getBlockY()); + oos.writeInt(inventoryLocation.getBlockZ()); + + oos.writeInt(powerLocation.getBlockX()); + oos.writeInt(powerLocation.getBlockY()); + oos.writeInt(powerLocation.getBlockZ()); + + oos.writeInt(overworldTeleportPlatformLocation.getBlockX()); + oos.writeInt(overworldTeleportPlatformLocation.getBlockY()); + oos.writeInt(overworldTeleportPlatformLocation.getBlockZ()); + + oos.writeUTF(netherTeleportPlatformLocation.getWorld().getName()); + oos.writeInt(netherTeleportPlatformLocation.getBlockX()); + oos.writeInt(netherTeleportPlatformLocation.getBlockY()); + oos.writeInt(netherTeleportPlatformLocation.getBlockZ()); + + oos.writeBoolean(factory.getActive()); + oos.writeInt(factory.getMode().getId()); + oos.writeDouble(factory.getCurrentRepair()); + oos.writeLong(factory.getTimeDisrepair()); + + } + oos.flush(); + fileOutputStream.close(); + } + + public void load(File file) throws IOException + { + try { + repairTime=System.currentTimeMillis(); + FileInputStream fileInputStream = new FileInputStream(file); + ObjectInputStream ois = new ObjectInputStream(fileInputStream); + int version = ois.readInt(); + assert(version == 1); + int count = ois.readInt(); + int i = 0; + for (i = 0; i < count; i++) + { + String worldName = ois.readUTF(); + World world = plugin.getServer().getWorld(worldName); + + Location centerLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt()); + Location inventoryLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt()); + Location powerLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt()); + Location overworldTeleportPlatformLocation = new Location(world, ois.readInt(), ois.readInt(), ois.readInt()); + + String worldName2 = ois.readUTF(); + World world2 = plugin.getServer().getWorld(worldName2); + + Location netherTeleportPlatformLocation = new Location(world2, ois.readInt(), ois.readInt(), ois.readInt()); + + boolean active = ois.readBoolean(); + NetherOperationMode mode = NetherFactory.NetherOperationMode.byId(ois.readInt()); + double currentRepair = ois.readDouble(); + long timeDisrepair = ois.readLong(); + + NetherFactory factory = new NetherFactory(centerLocation, inventoryLocation, powerLocation, netherTeleportPlatformLocation, overworldTeleportPlatformLocation, + active, currentRepair, timeDisrepair, + mode, + plugin.getNetherFactoryProperties(), this); + addFactory(factory); + } + fileInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void updateFactorys() + { + plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() + { + @Override + public void run() + { + for (NetherFactory factory: netherFactorys) + { + factory.update(); + } + } + }, 0L, FactoryModPlugin.PRODUCER_UPDATE_CYCLE); + } + + public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerSourceLocation) + { + NetherFactoryProperties netherFactoryProperties = plugin.getNetherFactoryProperties(); + Block inventoryBlock = inventoryLocation.getBlock(); + Chest chest = (Chest) inventoryBlock.getState(); + Inventory chestInventory = chest.getInventory(); + ItemList constructionMaterials = netherFactoryProperties.getConstructionMaterials(); + if(constructionMaterials.oneIn(chestInventory)) + { + if (factoryLocation.getWorld().getName().equalsIgnoreCase(FactoryModPlugin.WORLD_NAME)) + { + if (factoryLocation.getBlock().getType().equals(FactoryModPlugin.CENTRAL_BLOCK_MATERIAL)) + { + if (!factoryExistsAt(factoryLocation)) + { + double scalingFactor = getScalingFactor(factoryLocation); + if (scalingFactor < 10000) + { + constructionMaterials = constructionMaterials.getMultiple(scalingFactor); + boolean hasMaterials = constructionMaterials.allIn(chestInventory); + if (hasMaterials) + { + boolean markerFound = false; + Location markerLocation = factoryLocation.clone(); + int blockY = markerLocation.getBlockY(); + for (int centerY = blockY-plugin.NETHER_MARKER_MAX_DISTANCE; centerY <= blockY+plugin.NETHER_MARKER_MAX_DISTANCE && !markerFound; centerY++) + { + markerLocation.setY(centerY); + Location oneUp = markerLocation.clone(); + oneUp.setY(centerY+1); + if (markerLocation.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_MARKER_MATERIAL && oneUp.getBlock().getType() == FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL) + { + markerFound = true; + } + } + if (markerFound) + { + int nether_scale = FactoryModPlugin.NETHER_SCALE; + boolean locationOk = false; + int startX = Math.round(factoryLocation.getBlockX()/nether_scale); + int startY = factoryLocation.getBlockY(); + int startZ = Math.round(factoryLocation.getBlockZ()/nether_scale); + Location netherLocation = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY,startZ); + Location netherLocation1 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY+1,startZ); + Location netherLocation2 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY+2,startZ); + Location netherLocation3 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), startX,startY+3,startZ); + if (FactoryModPlugin.CITADEL_ENABLED && (isReinforced(netherLocation) || isReinforced(netherLocation1) || isReinforced(netherLocation2) || isReinforced(netherLocation3))) + { + for(int scanX = startX-1; scanX <= startX+1 && !locationOk; scanX++) + { + + for(int scanZ = startZ-1; scanZ <= startZ+1 && !locationOk; scanZ++) + { + for(int scanY = startY; scanY <= 250 && !locationOk; scanY++) + { + netherLocation = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY,scanZ); + netherLocation1 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY+1,scanZ); + netherLocation2 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY+2,scanZ); + netherLocation3 = new Location(Bukkit.getWorld(FactoryModPlugin.NETHER_NAME), scanX,scanY+3,scanZ); + if(!isReinforced(netherLocation) && !isReinforced(netherLocation1) && !isReinforced(netherLocation2) && !isReinforced(netherLocation3)) + { + locationOk = true; + + } + } + } + } + } + if (!factoryExistsAt(netherLocation)) + { + netherLocation.getBlock().setType(FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL); + netherLocation.getBlock().getState().update(true); + netherLocation1.getBlock().setType(Material.AIR); + netherLocation1.getBlock().getState().update(true); + netherLocation2.getBlock().setType(Material.AIR); + netherLocation2.getBlock().getState().update(true); + netherLocation3.getBlock().setType(Material.AIR); + netherLocation3.getBlock().getState().update(true); + if(netherLocation.getBlock().getType() != (FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL) && + netherLocation1.getBlock().getType() != Material.AIR && + netherLocation2.getBlock().getType() != Material.AIR && + netherLocation3.getBlock().getType() != Material.AIR) + { + return new InteractionResponse(InteractionResult.FAILURE, "For some reason the nether side obsidian block did not generate...blame bukkit"); + } + Location oneUp = markerLocation.clone(); + oneUp.add(0,1,0); + NetherFactory netherFactory = new NetherFactory(factoryLocation, inventoryLocation, powerSourceLocation, netherLocation, oneUp, plugin.getNetherFactoryProperties(), this); + if (constructionMaterials.removeFrom(netherFactory.getInventory())) + { + addFactory(netherFactory); + return new InteractionResponse(InteractionResult.SUCCESS, "Successfully created " + netherFactoryProperties.getName()); + } + } + else + { + return new InteractionResponse(InteractionResult.FAILURE, "There is a other " + netherFactoryProperties.getName() + " too close."); + } + } + else + { + return new InteractionResponse(InteractionResult.FAILURE, "No marker found. Place a " + FactoryModPlugin.NETHER_FACTORY_MARKER_MATERIAL + " 1-20 blocks above the center block of the nether factory with a " + FactoryModPlugin.NETHER_FACTORY_TELEPORT_PLATFORM_MATERIAL + " right above."); + } + } + return new InteractionResponse(InteractionResult.FAILURE, "Not enough materials in chest! You need " + constructionMaterials.toString()); + } + else + { + return new InteractionResponse(InteractionResult.FAILURE, "Factory is too close to a other nether factory!"); + } + } + return new InteractionResponse(InteractionResult.FAILURE, "There is already a " + netherFactoryProperties.getName() + " there!"); + } + else + { + return new InteractionResponse(InteractionResult.FAILURE, "Wrong center block!"); + } + } + else + { + return new InteractionResponse(InteractionResult.FAILURE, netherFactoryProperties.getName() + "'s can only be built in the overworld"); + } + } + return new InteractionResponse(InteractionResult.FAILURE, "No factory was identified!"); + } + + public InteractionResponse addFactory(Factory factory) + { + NetherFactory netherFactory = (NetherFactory) factory; + if (netherFactory.getCenterLocation().getBlock().getType().equals(FactoryModPlugin.CENTRAL_BLOCK_MATERIAL) && + (!factoryExistsAt(netherFactory.getCenterLocation()) + || !factoryExistsAt(netherFactory.getInventoryLocation()) + || !factoryExistsAt(netherFactory.getPowerSourceLocation()) + || !factoryExistsAt(netherFactory.getNetherTeleportPlatform()) + || !factoryExistsAt(netherFactory.getOverworldTeleportPlatform()) )) + { + netherFactorys.add(netherFactory); + return new InteractionResponse(InteractionResult.SUCCESS, ""); + } + else + { + return new InteractionResponse(InteractionResult.FAILURE, ""); + } + } + + public NetherFactory getFactory(Location factoryLocation) + { + for (NetherFactory factory : netherFactorys) + { + if (factory.getCenterLocation().equals(factoryLocation) + || factory.getInventoryLocation().equals(factoryLocation) + || factory.getPowerSourceLocation().equals(factoryLocation) + || factory.getNetherTeleportPlatform().equals(factoryLocation) + || factory.getOverworldTeleportPlatform().equals(factoryLocation)) + return factory; + } + return null; + } + + public boolean factoryExistsAt(Location factoryLocation) + { + boolean returnValue = false; + if (getFactory(factoryLocation) != null) + { + returnValue = true; + } + return returnValue; + } + + public boolean factoryWholeAt(Location factoryLocation) + { + boolean returnValue = false; + if (getFactory(factoryLocation) != null) + { + returnValue = getFactory(factoryLocation).isWhole(false); + } + return returnValue; + } + + public void removeFactory(Factory factory) + { + netherFactorys.remove((NetherFactory)factory); + } + + public void updateRepair(long time) + { + for (NetherFactory factory: netherFactorys) + { + factory.updateRepair(time/((double)FactoryModPlugin.REPAIR_PERIOD)); + } + long currentTime=System.currentTimeMillis(); + Iterator itr=netherFactorys.iterator(); + while(itr.hasNext()) + { + NetherFactory factory=itr.next(); + if(currentTime>(factory.getTimeDisrepair()+FactoryModPlugin.DISREPAIR_PERIOD)) + { + itr.remove(); + } + } + } + + public String getSavesFileName() + { + return FactoryModPlugin.NETHER_FACTORY_SAVE_FILE; + } + + public double getScalingFactor(Location location) + { + double scalingFactor = 1; + NetherFactoryProperties properties = plugin.getNetherFactoryProperties(); + for (NetherFactory factory : netherFactorys) + { + Location factoryLoc = factory.getCenterLocation(); + if(factory.getCenterLocation().equals(location)) + { + continue; + } + //the distance function uses square root, which is quite expensive, let's check if it's even realistic that it's within range first. + if ((location.getBlockX()-factoryLoc.getBlockX()) < properties.getScalingRadius() || (location.getBlockX()-factoryLoc.getBlockX()) > -(properties.getScalingRadius())) + { + if ((location.getBlockZ()-factoryLoc.getBlockZ()) < properties.getScalingRadius() || (location.getBlockZ()-factoryLoc.getBlockZ()) > -(properties.getScalingRadius())) + { + double distance = location.distance(factoryLoc); + if (distance <= properties.getScalingRadius()) + { + scalingFactor = scalingFactor * Math.exp(1/(distance/properties.getCostScalingRadius())); + } + } + } + } + return scalingFactor; + } + +} \ No newline at end of file diff --git a/src/com/github/igotyou/FactoryMod/managers/PrintingPressManager.java b/src/com/github/igotyou/FactoryMod/managers/PrintingPressManager.java index a9b99d7d..464cdfaa 100644 --- a/src/com/github/igotyou/FactoryMod/managers/PrintingPressManager.java +++ b/src/com/github/igotyou/FactoryMod/managers/PrintingPressManager.java @@ -254,7 +254,7 @@ public boolean factoryWholeAt(Location factoryLocation) boolean returnValue = false; if (getFactory(factoryLocation) != null) { - returnValue = getFactory(factoryLocation).isWhole(); + returnValue = getFactory(factoryLocation).isWhole(false); } return returnValue; } diff --git a/src/com/github/igotyou/FactoryMod/managers/ProductionManager.java b/src/com/github/igotyou/FactoryMod/managers/ProductionManager.java index 05a7e5a8..99cdf929 100644 --- a/src/com/github/igotyou/FactoryMod/managers/ProductionManager.java +++ b/src/com/github/igotyou/FactoryMod/managers/ProductionManager.java @@ -1,338 +1,284 @@ -package com.github.igotyou.FactoryMod.managers; +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.github.igotyou.FactoryMod.utility; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; +import com.github.igotyou.FactoryMod.FactoryModPlugin; +import com.github.igotyou.FactoryMod.recipes.ProbabilisticEnchantment; +import com.github.igotyou.FactoryMod.recipes.ProductionRecipe; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; +import java.util.ListIterator; import java.util.Map; -import java.util.Set; - -import org.bukkit.Location; +import java.util.Random; import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.Chest; +import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; -import com.github.igotyou.FactoryMod.FactoryModPlugin; -import com.github.igotyou.FactoryMod.Factorys.ProductionFactory; -import com.github.igotyou.FactoryMod.interfaces.Factory; -import com.github.igotyou.FactoryMod.interfaces.Manager; -import com.github.igotyou.FactoryMod.interfaces.Recipe; -import com.github.igotyou.FactoryMod.properties.ProductionProperties; -import com.github.igotyou.FactoryMod.utility.InteractionResponse; -import com.github.igotyou.FactoryMod.utility.InteractionResponse.InteractionResult; -import com.github.igotyou.FactoryMod.recipes.ProductionRecipe; -import com.github.igotyou.FactoryMod.utility.ItemList; -import com.github.igotyou.FactoryMod.utility.NamedItemStack; -import java.util.Iterator; - -//original file: /** -* Manager.java -* Purpose: Interface for Manager objects for basic manager functionality -* -* @author MrTwiggy -* @version 0.1 1/08/13 -*/ -//edited version: -/** -* Manager.java -* Purpose: Interface for Manager objects for basic manager functionality -* @author igotyou -* -*/ - -public class ProductionManager implements Manager -{ - private FactoryModPlugin plugin; - private List producers; - private long repairTime; - - public ProductionManager(FactoryModPlugin plugin) - { - this.plugin = plugin; - producers = new ArrayList(); - //Set maintenance clock to 0 - updateFactorys(); - } - - public void save(File file) throws IOException + * + * @author Brian Landry + */ +public class ItemList extends ArrayList { + public boolean exactlyIn(Inventory inventory) { - //Takes difference between last repair update and current one and scales repair accordingly - updateRepair(System.currentTimeMillis()-repairTime); - repairTime=System.currentTimeMillis(); - FileOutputStream fileOutputStream = new FileOutputStream(file); - BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); - for (ProductionFactory production : producers) + boolean returnValue=true; + //Checks that the ItemList ItemStacks are contained in the inventory + for(ItemStack itemStack:this) { - //order: subFactoryType world recipe1,recipe2 central_x central_y central_z inventory_x inventory_y inventory_z power_x power_y power_z active productionTimer energyTimer current_Recipe_number - - Location centerlocation = production.getCenterLocation(); - Location inventoryLoctation = production.getInventoryLocation(); - Location powerLocation = production.getPowerSourceLocation(); - - - - bufferedWriter.append(production.getSubFactoryType()); - bufferedWriter.append(" "); - - List recipes=production.getRecipes(); - for (int i = 0; i < recipes.size(); i++) - { - bufferedWriter.append(String.valueOf(recipes.get(i).getTitle())); - bufferedWriter.append(","); - } - bufferedWriter.append(" "); - - bufferedWriter.append(centerlocation.getWorld().getName()); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(centerlocation.getBlockX())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(centerlocation.getBlockY())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(centerlocation.getBlockZ())); - bufferedWriter.append(" "); - - bufferedWriter.append(Integer.toString(inventoryLoctation.getBlockX())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(inventoryLoctation.getBlockY())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(inventoryLoctation.getBlockZ())); - bufferedWriter.append(" "); - - bufferedWriter.append(Integer.toString(powerLocation.getBlockX())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(powerLocation.getBlockY())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(powerLocation.getBlockZ())); - bufferedWriter.append(" "); - - bufferedWriter.append(Boolean.toString(production.getActive())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(production.getProductionTimer())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(production.getEnergyTimer())); - bufferedWriter.append(" "); - bufferedWriter.append(Integer.toString(production.getCurrentRecipeNumber())); - bufferedWriter.append(" "); - bufferedWriter.append(Double.toString(production.getCurrentRepair())); - bufferedWriter.append(" "); - bufferedWriter.append(String.valueOf(production.getTimeDisrepair())); - bufferedWriter.append("\n"); + returnValue=returnValue&&(amountAvailable(inventory,itemStack)==itemStack.getAmount()); } - bufferedWriter.flush(); - fileOutputStream.close(); - } - - public void load(File file) throws IOException - { - repairTime=System.currentTimeMillis(); - FileInputStream fileInputStream = new FileInputStream(file); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); - String line; - while ((line = bufferedReader.readLine()) != null) + //Checks that inventory has not ItemStacks in addition to the ones in the itemList + for(ItemStack invItemStack:inventory.getContents()) { - String parts[] = line.split(" "); - - //order: subFactoryType world recipe1,recipe2 central_x central_y central_z inventory_x inventory_y inventory_z power_x power_y power_z active productionTimer energyTimer current_Recipe_number - String subFactoryType = parts[0]; - String recipeNames[] = parts[1].split(","); - - Location centerLocation = new Location(plugin.getServer().getWorld(parts[2]), Integer.parseInt(parts[3]), Integer.parseInt(parts[4]), Integer.parseInt(parts[5])); - Location inventoryLocation = new Location(plugin.getServer().getWorld(parts[2]), Integer.parseInt(parts[6]), Integer.parseInt(parts[7]), Integer.parseInt(parts[8])); - Location powerLocation = new Location(plugin.getServer().getWorld(parts[2]), Integer.parseInt(parts[9]), Integer.parseInt(parts[10]), Integer.parseInt(parts[11])); - boolean active = Boolean.parseBoolean(parts[12]); - int productionTimer = Integer.parseInt(parts[13]); - int energyTimer = Integer.parseInt(parts[14]); - int currentRecipeNumber = Integer.parseInt(parts[15]); - double currentRepair = Double.parseDouble(parts[16]); - long timeDisrepair = Long.parseLong(parts[17]); - if(FactoryModPlugin.productionProperties.containsKey(subFactoryType)) + if(invItemStack!=null) { - Set recipes=new HashSet(); - - // TODO: Give default recipes for subfactory type - ProductionProperties properties = FactoryModPlugin.productionProperties.get(subFactoryType); - recipes.addAll(properties.getRecipes()); - - for(String name:recipeNames) + boolean itemPresent=false; + for(ItemStack itemStack:this) { - if(FactoryModPlugin.productionRecipes.containsKey(name)) + if(itemStack.isSimilar(invItemStack)) { - recipes.add(FactoryModPlugin.productionRecipes.get(name)); + itemPresent=true; } } - - ProductionFactory production = new ProductionFactory(centerLocation, inventoryLocation, powerLocation, subFactoryType, active, productionTimer, energyTimer, new ArrayList(recipes), currentRecipeNumber, currentRepair,timeDisrepair); - addFactory(production); + returnValue=returnValue&&itemPresent; } } - fileInputStream.close(); + return returnValue; } - - public void updateFactorys() + public boolean oneIn(Inventory inventory) { - plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() + if(this.isEmpty()) + { + return true; + } + else { - @Override - public void run() + for(ItemStack itemStack:this) { - for (ProductionFactory production: producers) + if (amountAvailable(inventory, itemStack)>=itemStack.getAmount()) { - production.update(); + return true; } } - }, 0L, FactoryModPlugin.PRODUCER_UPDATE_CYCLE); + return false; + } } - - public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerSourceLocation) + public boolean allIn(Inventory inventory) { - if (!factoryExistsAt(factoryLocation)) + for(ItemStack itemStack:this) { - HashMap properties = plugin.productionProperties; - Block inventoryBlock = inventoryLocation.getBlock(); - Chest chest = (Chest) inventoryBlock.getState(); - Inventory chestInventory = chest.getInventory(); - String subFactoryType = null; - for (Map.Entry entry : properties.entrySet()) + if (amountAvailable(inventory, itemStack) inputs = entry.getValue().getInputs(); - if(inputs.exactlyIn(chestInventory)) - { - subFactoryType = entry.getKey(); - } + return false; } - if (subFactoryType != null) + } + return true; + } + + public boolean removeFrom(Inventory inventory) + { + boolean returnValue=true; + if(allIn(inventory)) + { + for(ItemStack itemStack:this) { - ProductionFactory production = new ProductionFactory(factoryLocation, inventoryLocation, powerSourceLocation,subFactoryType); - if (properties.get(subFactoryType).getInputs().allIn(production.getInventory())) - { - addFactory(production); - properties.get(subFactoryType).getInputs().removeFrom(production.getInventory()); - return new InteractionResponse(InteractionResult.SUCCESS, "Successfully created " + production.getProductionFactoryProperties().getName()); - } + returnValue=returnValue&&removeItemStack(inventory,itemStack); } - return new InteractionResponse(InteractionResult.FAILURE, "Incorrect materials in chest! Stacks must match perfectly."); } - return new InteractionResponse(InteractionResult.FAILURE, "There is already a factory there!"); + else + { + returnValue=false; + } + return returnValue; } - - public InteractionResponse createFactory(Location factoryLocation, Location inventoryLocation, Location powerSourceLocation, int productionTimer, int energyTimer) + public int removeMaxFrom(Inventory inventory,int maxAmount) { - if (!factoryExistsAt(factoryLocation)) + int amountRemoved=0; + while(size()!=0&&allIn(inventory)&&amountRemoved<=maxAmount) { - HashMap properties = plugin.productionProperties; - Block inventoryBlock = inventoryLocation.getBlock(); - Chest chest = (Chest) inventoryBlock.getState(); - Inventory chestInventory = chest.getInventory(); - String subFactoryType = null; - boolean hasMaterials = true; - for (Map.Entry entry : properties.entrySet()) + if(removeFrom(inventory)) { - ItemList inputs = entry.getValue().getInputs(); - if(!inputs.allIn(chestInventory)) - { - hasMaterials = false; - } - if (hasMaterials == true) - { - subFactoryType = entry.getKey(); - } + amountRemoved++; } - if (hasMaterials && subFactoryType != null) + } + return amountRemoved; + } + public ItemList removeOneFrom(Inventory inventory) + { + ItemList itemList=new ItemList(); + for(NamedItemStack itemStack:this) + { + if(removeItemStack(inventory,itemStack)) { - ProductionFactory production = new ProductionFactory(factoryLocation, inventoryLocation, powerSourceLocation,subFactoryType); - if (properties.get(subFactoryType).getInputs().removeFrom(production.getInventory())) - { - addFactory(production); - return new InteractionResponse(InteractionResult.SUCCESS, "Successfully created " + subFactoryType + " production factory"); - } + itemList.add(itemStack.clone()); + break; } - return new InteractionResponse(InteractionResult.FAILURE, "Not enough materials in chest!"); } - return new InteractionResponse(InteractionResult.FAILURE, "There is already a factory there!"); + return itemList; } - - public InteractionResponse addFactory(Factory factory) + public ItemList getDifference(Inventory inventory) { - ProductionFactory production = (ProductionFactory) factory; - if (production.getCenterLocation().getBlock().getType().equals(Material.WORKBENCH) && (!factoryExistsAt(production.getCenterLocation())) - || !factoryExistsAt(production.getInventoryLocation()) || !factoryExistsAt(production.getPowerSourceLocation())) + ItemList missingItems=new ItemList(); + for(NamedItemStack itemStack:this) { - producers.add(production); - return new InteractionResponse(InteractionResult.SUCCESS, ""); + int difference=itemStack.getAmount()-amountAvailable(inventory, itemStack); + if (difference>0) + { + NamedItemStack clonedItemStack=itemStack.clone(); + clonedItemStack.setAmount(difference); + missingItems.add(clonedItemStack); + } } - else + return missingItems; + } + public int amountAvailable(Inventory inventory) + { + int amountAvailable=0; + for(ItemStack itemStack:this) { - return new InteractionResponse(InteractionResult.FAILURE, ""); + int currentAmountAvailable=amountAvailable(inventory,itemStack); + amountAvailable=amountAvailable>currentAmountAvailable ? amountAvailable : currentAmountAvailable; } + return amountAvailable; } - - public ProductionFactory getFactory(Location factoryLocation) + public void putIn(Inventory inventory) + { + putIn(inventory,new ArrayList()); + } + public void putIn(Inventory inventory,List probabilisticEnchaments) { - for (ProductionFactory production : producers) + for(ItemStack itemStack:this) { - if (production.getCenterLocation().equals(factoryLocation) || production.getInventoryLocation().equals(factoryLocation) - || production.getPowerSourceLocation().equals(factoryLocation)) - return production; + int maxStackSize=itemStack.getMaxStackSize(); + int amount=itemStack.getAmount(); + while(amount>maxStackSize) + { + ItemStack itemClone=itemStack.clone(); + Map enchantments=getEnchantments(probabilisticEnchaments); + for(Enchantment enchantment:enchantments.keySet()) + { + if(enchantment.canEnchantItem(itemStack)) + { + itemClone.addUnsafeEnchantment(enchantment,enchantments.get(enchantment)); + } + } + itemClone.setAmount(maxStackSize); + inventory.addItem(itemClone); + amount-=maxStackSize; + } + ItemStack itemClone=itemStack.clone(); + Map enchantments=getEnchantments(probabilisticEnchaments); + for(Enchantment enchantment:enchantments.keySet()) + { + if(enchantment.canEnchantItem(itemStack)) + { + itemClone.addUnsafeEnchantment(enchantment,enchantments.get(enchantment)); + } + } + itemClone.setAmount(amount); + inventory.addItem(itemClone); } - return null; } - public boolean factoryExistsAt(Location factoryLocation) + public HashMap getEnchantments(List probabilisticEnchaments) { - boolean returnValue = false; - if (getFactory(factoryLocation) != null) + HashMap enchantments = new HashMap(); + Random rand = new Random(); + for(int i=0;i=rand.nextDouble()) + { + enchantments.put(probabilisticEnchaments.get(i).getEnchantment(),probabilisticEnchaments.get(i).getLevel()); + } } - return returnValue; + return enchantments; } - public boolean factoryWholeAt(Location factoryLocation) + public String toString() { - boolean returnValue = false; - if (getFactory(factoryLocation) != null) + String returnString=""; + for(int i=0;i itr=producers.iterator(); - while(itr.hasNext()) + return totalMaterial; + } + //Removes an itemstacks worth of material from an inventory + private boolean removeItemStack(Inventory inventory,ItemStack itemStack) + { + int materialsToRemove = itemStack.getAmount(); + ListIterator iterator = inventory.iterator(); + while(iterator.hasNext()) { - ProductionFactory producer=itr.next(); - if(currentTime>(producer.getTimeDisrepair()+FactoryModPlugin.DISREPAIR_PERIOD)) + ItemStack currentItemStack = iterator.next(); + if (itemStack.isSimilar(currentItemStack)) { - itr.remove(); + if (materialsToRemove <= 0) + { + break; + } + if(currentItemStack.getAmount() == materialsToRemove) + { + iterator.set(new ItemStack(Material.AIR, 0)); + materialsToRemove = 0; + } + else if(currentItemStack.getAmount() > materialsToRemove) + { + ItemStack temp = currentItemStack.clone(); + temp.setAmount(currentItemStack.getAmount() - materialsToRemove); + iterator.set(temp); + materialsToRemove = 0; + } + else + { + int inStack = currentItemStack.getAmount(); + iterator.set(new ItemStack(Material.AIR, 0)); + materialsToRemove -= inStack; + } } - } + } + return materialsToRemove == 0; } - - public String getSavesFileName() + public ItemList getMultiple(int multiplier) { - return FactoryModPlugin.PRODUCTION_SAVES_FILE; + ItemList multipliedItemList=new ItemList(); + for (NamedItemStack itemStack:this) + { + NamedItemStack itemStackClone=itemStack.clone(); + itemStackClone.setAmount(itemStack.getAmount()*multiplier); + multipliedItemList.add(itemStackClone); + } + return multipliedItemList; } - } diff --git a/src/com/github/igotyou/FactoryMod/properties/NetherFactoryProperties.java b/src/com/github/igotyou/FactoryMod/properties/NetherFactoryProperties.java new file mode 100644 index 00000000..b5378da8 --- /dev/null +++ b/src/com/github/igotyou/FactoryMod/properties/NetherFactoryProperties.java @@ -0,0 +1,119 @@ +package com.github.igotyou.FactoryMod.properties; + + +import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; + +import com.github.igotyou.FactoryMod.FactoryModPlugin; +import com.github.igotyou.FactoryMod.utility.ItemList; +import com.github.igotyou.FactoryMod.utility.NamedItemStack; + + +public class NetherFactoryProperties +{ + private ItemList constructionMaterials; + private ItemList fuel; + private ItemList repairMaterials; + private int energyTime; + private String name; + private int repair; + private double repairTime; + private int scalingMode; + private int scalingRadius; + private int costScalingRadius; + private boolean useFuelOnTeleport; + + public NetherFactoryProperties(ItemList constructionMaterials, ItemList fuel, ItemList repairMaterials, + int energyTime, String name,int repair, double repairTime, int scalingRadius, boolean useFuelOnTeleport, int costScalingRadius) + { + this.constructionMaterials = constructionMaterials; + this.fuel = fuel; + this.repairMaterials = repairMaterials; + this.energyTime = energyTime; + this.name = name; + this.repair=repair; + this.repairTime=repairTime; + this.scalingRadius = scalingRadius; + this.costScalingRadius = costScalingRadius; + this.useFuelOnTeleport = useFuelOnTeleport; + } + + public int getRepair() + { + return repair; + } + + public int getScalingRadius() + { + return scalingRadius; + } + + public int getCostScalingRadius() + { + return costScalingRadius; + } + + //0 == no scaling, 1==linear scaling, 2==exponential scaling + public int getScalingMode() + { + return scalingMode; + } + + public ItemList getConstructionMaterials() + { + return constructionMaterials; + } + + public ItemList getFuel() + { + return fuel; + } + + public ItemList getRepairMaterials() + { + return repairMaterials; + } + + public int getEnergyTime() + { + return energyTime; + } + + public String getName() + { + return name; + } + + public static NetherFactoryProperties fromConfig(FactoryModPlugin plugin, ConfigurationSection configNetherFactory) + { + ItemList nfFuel=plugin.getItems(configNetherFactory.getConfigurationSection("fuel")); + if(nfFuel.isEmpty()) + { + nfFuel=new ItemList(); + nfFuel.add(new NamedItemStack(Material.getMaterial("COAL"),1,(short)1,"Charcoal")); + } + ConfigurationSection costs = configNetherFactory.getConfigurationSection("costs"); + ItemList nfConstructionCost=plugin.getItems(costs.getConfigurationSection("construction")); + ItemList nfRepairCost=plugin.getItems(costs.getConfigurationSection("repair")); + int nfEnergyTime = configNetherFactory.getInt("fuel_time", 10); + int nfRepair = costs.getInt("repair_multiple",1); + String nfName = configNetherFactory.getString("name", "Nether Factory"); + int repairTime = configNetherFactory.getInt("repair_time",12); + int nfScalingRadius = configNetherFactory.getInt("scaling_radius", 5000); + int costScalingRadius = configNetherFactory.getInt("scaling_radius", 5000); + boolean nfUseFuelOnTeleport = configNetherFactory.getBoolean("use_fuel_on_teleport", false); + return new NetherFactoryProperties(nfConstructionCost, nfFuel, nfRepairCost, nfEnergyTime, nfName, nfRepair, repairTime, nfScalingRadius,nfUseFuelOnTeleport, costScalingRadius); + + } + + public double getRepairTime() + { + return repairTime; + } + + public boolean getUseFuelOnTeleport() + { + return useFuelOnTeleport; + } + +} \ No newline at end of file diff --git a/src/com/github/igotyou/FactoryMod/utility/InteractionResponse.java b/src/com/github/igotyou/FactoryMod/utility/InteractionResponse.java index a0632731..2b1f8458 100644 --- a/src/com/github/igotyou/FactoryMod/utility/InteractionResponse.java +++ b/src/com/github/igotyou/FactoryMod/utility/InteractionResponse.java @@ -84,4 +84,4 @@ public InteractionResult getInteractionResult() return interactionResult; } -} \ No newline at end of file +} diff --git a/src/com/github/igotyou/FactoryMod/utility/ItemList.java b/src/com/github/igotyou/FactoryMod/utility/ItemList.java index 8f8c6efc..68807640 100644 --- a/src/com/github/igotyou/FactoryMod/utility/ItemList.java +++ b/src/com/github/igotyou/FactoryMod/utility/ItemList.java @@ -219,7 +219,7 @@ private int amountAvailable(Inventory inventory, ItemStack itemStack) for(ItemStack currentItemStack:inventory) { if(currentItemStack!=null) - { + { /*For some reason I can't fathom the orientaion of the comparison * of the two ItemStacks in the following statement matters. * It likely has to do with the fact that itemStack is a NamedItemStack @@ -281,4 +281,25 @@ public ItemList getMultiple(int multiplier) } return multipliedItemList; } + public ItemList getMultiple(double multiplier) + { + ItemList multipliedItemList=new ItemList(); + for (NamedItemStack itemStack:this) + { + NamedItemStack itemStackClone=itemStack.clone(); + long newAmount = (long) Math.round(itemStackClone.getAmount()*multiplier); + if (newAmount > 64) + { + for (;newAmount > 64; newAmount = newAmount-64) + { + NamedItemStack newItemStack = itemStack.clone(); + newItemStack.setAmount(64); + multipliedItemList.add(newItemStack); + } + } + itemStackClone.setAmount((int) newAmount); + multipliedItemList.add(itemStackClone); + } + return multipliedItemList; + } } diff --git a/validate_config.rb b/validate_config.rb new file mode 100644 index 00000000..7f511191 --- /dev/null +++ b/validate_config.rb @@ -0,0 +1,54 @@ +require 'yaml' + +ok = true + +raw = File.read('config.yml') + +if raw[/\t/] + ok = false + puts "Contains tabs" +end + +data = YAML.load(raw) + +factories = data['production_factories'] +recipes = data['production_recipes'] + +referenced_recipes = factories.values.map {|e| e['recipes']}.flatten.uniq + +missing_recipes = referenced_recipes - recipes.keys +if missing_recipes.length > 0 + ok = false + puts "Missing recipes:" + puts " " + missing_recipes.inspect +end + +unused_recipes = recipes.keys - referenced_recipes +if unused_recipes.length > 0 + ok = false + puts "Unused recipes:" + puts " " + unused_recipes.inspect +end + +factory_build_materials = factories.values.map {|e| e['inputs']} +factory_repair_materials = factories.values.map {|e| e['repair_inputs']} +recipe_input_materials = recipes.values.map {|e| e['inputs']} +recipe_output_materials = recipes.values.map {|e| e['outputs']} + +BukkitMaterials = ["ACACIA_STAIRS", "ACTIVATOR_RAIL", "AIR", "ANVIL", "APPLE", "ARROW", "BAKED_POTATO", "BEACON", "BED", "BED_BLOCK", "BEDROCK", "BIRCH_WOOD_STAIRS", "BLAZE_POWDER", "BLAZE_ROD", "BOAT", "BONE", "BOOK", "BOOK_AND_QUILL", "BOOKSHELF", "BOW", "BOWL", "BREAD", "BREWING_STAND", "BREWING_STAND_ITEM", "BRICK", "BRICK_STAIRS", "BROWN_MUSHROOM", "BUCKET", "BURNING_FURNACE", "CACTUS", "CAKE", "CAKE_BLOCK", "CARPET", "CARROT", "CARROT_ITEM", "CARROT_STICK", "CAULDRON", "CAULDRON_ITEM", "CHAINMAIL_BOOTS", "CHAINMAIL_CHESTPLATE", "CHAINMAIL_HELMET", "CHAINMAIL_LEGGINGS", "CHEST", "CLAY", "CLAY_BALL", "CLAY_BRICK", "COAL", "COAL_BLOCK", "COAL_ORE", "COBBLE_WALL", "COBBLESTONE", "COBBLESTONE_STAIRS", "COCOA", "COMMAND", "COMMAND_MINECART", "COMPASS", "COOKED_BEEF", "COOKED_CHICKEN", "COOKED_FISH", "COOKIE", "CROPS", "DARK_OAK_STAIRS", "DAYLIGHT_DETECTOR", "DEAD_BUSH", "DETECTOR_RAIL", "DIAMOND", "DIAMOND_AXE", "DIAMOND_BARDING", "DIAMOND_BLOCK", "DIAMOND_BOOTS", "DIAMOND_CHESTPLATE", "DIAMOND_HELMET", "DIAMOND_HOE", "DIAMOND_LEGGINGS", "DIAMOND_ORE", "DIAMOND_PICKAXE", "DIAMOND_SPADE", "DIAMOND_SWORD", "DIODE", "DIODE_BLOCK_OFF", "DIODE_BLOCK_ON", "DIRT", "DISPENSER", "DOUBLE_PLANT", "DOUBLE_STEP", "DRAGON_EGG", "DROPPER", "EGG", "EMERALD", "EMERALD_BLOCK", "EMERALD_ORE", "EMPTY_MAP", "ENCHANTED_BOOK", "ENCHANTMENT_TABLE", "ENDER_CHEST", "ENDER_PEARL", "ENDER_PORTAL", "ENDER_PORTAL_FRAME", "ENDER_STONE", "EXP_BOTTLE", "EXPLOSIVE_MINECART", "EYE_OF_ENDER", "FEATHER", "FENCE", "FENCE_GATE", "FERMENTED_SPIDER_EYE", "FIRE", "FIREBALL", "FIREWORK", "FIREWORK_CHARGE", "FISHING_ROD", "FLINT", "FLINT_AND_STEEL", "FLOWER_POT", "FLOWER_POT_ITEM", "FURNACE", "GHAST_TEAR", "GLASS", "GLASS_BOTTLE", "GLOWING_REDSTONE_ORE", "GLOWSTONE", "GLOWSTONE_DUST", "GOLD_AXE", "GOLD_BARDING", "GOLD_BLOCK", "GOLD_BOOTS", "GOLD_CHESTPLATE", "GOLD_HELMET", "GOLD_HOE", "GOLD_INGOT", "GOLD_LEGGINGS", "GOLD_NUGGET", "GOLD_ORE", "GOLD_PICKAXE", "GOLD_PLATE", "GOLD_RECORD", "GOLD_SPADE", "GOLD_SWORD", "GOLDEN_APPLE", "GOLDEN_CARROT", "GRASS", "GRAVEL", "GREEN_RECORD", "GRILLED_PORK", "HARD_CLAY", "HAY_BLOCK", "HOPPER", "HOPPER_MINECART", "HUGE_MUSHROOM_1", "HUGE_MUSHROOM_2", "ICE", "INK_SACK", "IRON_AXE", "IRON_BARDING", "IRON_BLOCK", "IRON_BOOTS", "IRON_CHESTPLATE", "IRON_DOOR", "IRON_DOOR_BLOCK", "IRON_FENCE", "IRON_HELMET", "IRON_HOE", "IRON_INGOT", "IRON_LEGGINGS", "IRON_ORE", "IRON_PICKAXE", "IRON_PLATE", "IRON_SPADE", "IRON_SWORD", "ITEM_FRAME", "JACK_O_LANTERN", "JUKEBOX", "JUNGLE_WOOD_STAIRS", "LADDER", "LAPIS_BLOCK", "LAPIS_ORE", "LAVA", "LAVA_BUCKET", "LEASH", "LEATHER", "LEATHER_BOOTS", "LEATHER_CHESTPLATE", "LEATHER_HELMET", "LEATHER_LEGGINGS", "LEAVES", "LEAVES_2", "LEVER", "LOCKED_CHEST", "Deprecated.", "LOG", "LOG_2", "LONG_GRASS", "MAGMA_CREAM", "MAP", "MELON", "MELON_BLOCK", "MELON_SEEDS", "MELON_STEM", "MILK_BUCKET", "MINECART", "MOB_SPAWNER", "MONSTER_EGG", "MONSTER_EGGS", "MOSSY_COBBLESTONE", "MUSHROOM_SOUP", "MYCEL", "NAME_TAG", "NETHER_BRICK", "NETHER_BRICK_ITEM", "NETHER_BRICK_STAIRS", "NETHER_FENCE", "NETHER_STALK", "NETHER_STAR", "NETHER_WARTS", "NETHERRACK", "NOTE_BLOCK", "OBSIDIAN", "PACKED_ICE", "PAINTING", "PAPER", "PISTON_BASE", "PISTON_EXTENSION", "PISTON_MOVING_PIECE", "PISTON_STICKY_BASE", "POISONOUS_POTATO", "PORK", "PORTAL", "POTATO", "POTATO_ITEM", "POTION", "POWERED_MINECART", "POWERED_RAIL", "PUMPKIN", "PUMPKIN_PIE", "PUMPKIN_SEEDS", "PUMPKIN_STEM", "QUARTZ", "QUARTZ_BLOCK", "QUARTZ_ORE", "QUARTZ_STAIRS", "RAILS", "RAW_BEEF", "RAW_CHICKEN", "RAW_FISH", "RECORD_10", "RECORD_11", "RECORD_12", "RECORD_3", "RECORD_4", "RECORD_5", "RECORD_6", "RECORD_7", "RECORD_8", "RECORD_9", "RED_MUSHROOM", "RED_ROSE", "REDSTONE", "REDSTONE_BLOCK", "REDSTONE_COMPARATOR", "REDSTONE_COMPARATOR_OFF", "REDSTONE_COMPARATOR_ON", "REDSTONE_LAMP_OFF", "REDSTONE_LAMP_ON", "REDSTONE_ORE", "REDSTONE_TORCH_OFF", "REDSTONE_TORCH_ON", "REDSTONE_WIRE", "ROTTEN_FLESH", "SADDLE", "SAND", "SANDSTONE", "SANDSTONE_STAIRS", "SAPLING", "SEEDS", "SHEARS", "SIGN", "SIGN_POST", "SKULL", "SKULL_ITEM", "SLIME_BALL", "SMOOTH_BRICK", "SMOOTH_STAIRS", "SNOW", "SNOW_BALL", "SNOW_BLOCK", "SOIL", "SOUL_SAND", "SPECKLED_MELON", "SPIDER_EYE", "SPONGE", "SPRUCE_WOOD_STAIRS", "STAINED_CLAY", "STAINED_GLASS", "STAINED_GLASS_PANE", "STATIONARY_LAVA", "STATIONARY_WATER", "STEP", "STICK", "STONE", "STONE_AXE", "STONE_BUTTON", "STONE_HOE", "STONE_PICKAXE", "STONE_PLATE", "STONE_SPADE", "STONE_SWORD", "STORAGE_MINECART", "STRING", "SUGAR", "SUGAR_CANE", "SUGAR_CANE_BLOCK", "SULPHUR", "THIN_GLASS", "TNT", "TORCH", "TRAP_DOOR", "TRAPPED_CHEST", "TRIPWIRE", "TRIPWIRE_HOOK", "VINE", "WALL_SIGN", "WATCH", "WATER", "WATER_BUCKET", "WATER_LILY", "WEB", "WHEAT", "WOOD", "WOOD_AXE", "WOOD_BUTTON", "WOOD_DOOR", "WOOD_DOUBLE_STEP", "WOOD_HOE", "WOOD_PICKAXE", "WOOD_PLATE", "WOOD_SPADE", "WOOD_STAIRS", "WOOD_STEP", "WOOD_SWORD", "WOODEN_DOOR", "WOOL", "WORKBENCH", "WRITTEN_BOOK", "YELLOW_FLOWER"] + +all_materials = ( + factory_build_materials.map {|i| i.values.map {|e| e['material']}} + + factory_repair_materials.map {|i| i.values.map {|e| e['material']}} + + recipe_input_materials.map {|i| i.values.map {|e| e['material']}} + + recipe_output_materials.map {|i| i.values.map {|e| e['material']}} +).flatten.uniq.sort + +unknown_materials = all_materials - BukkitMaterials +if unknown_materials.length > 0 + ok = false + puts "Unknown materials:" + puts " " + unknown_materials.inspect +end + +puts "OK" if ok