Commands

/scoreboard players set @e[type=Item] cast 2 {Item:{id:"minecraft:stick",Count:2b}}

/scoreboard players set @e[type=Item] cast 1 {Item:{id:"minecraft:cobblestone",Count:4b}}

execute @e[type=Item,score_cast_min=1,score_cast=1] ~ ~ ~ execute @e[type=Item,score_cast_min=2,score_cast=2,r=1] ~ ~ ~ summon Item ~ ~ ~ {Item:{id:"minecraft:golden_axe",Damage:3s,Count:1b,tag:{ench:[{id:34,lvl:1000}],display:{Name:Stone Hammer},HideFlags:35}},PickupDelay:20s}

execute @e[type=Item,score_cast_min=1,score_cast=1] ~ ~ ~ execute @e[type=Item,score_cast_min=2,score_cast=2,r=1] ~ ~ ~ kill @e[type=Item,r=1,score_cast_min=1,score_cast=2]

scoreboard players set @e[type=Item] cast 3 {Item:{id:"minecraft:stone_slab",Damage:5s},OnGround:1b}

scoreboard players set @e[type=Item] cast 4 {Item:{id:"minecraft:iron_bars",Damage:0s,Count:4b},OnGround:1b,}

execute @e[type=Item,score_cast_min=3,score_cast=3] ~ ~ ~ execute @e[type=Item,score_cast_min=4,score_cast=4,r=1] ~ ~ ~ summon Item ~ ~ ~ {Item:{id:"spawn_egg",Count:1b,tag:{ench:[],display:{Name:Casting Table},EntityTag:{id:"Silverfish",CustomName:C4571NG-74B13}}}}

execute @e[type=Item,score_cast_min=3,score_cast=3] ~ ~ ~ execute @e[type=Item,score_cast_min=4,score_cast=4,r=1] ~ ~ ~ kill @e[type=Item,r=1,score_cast_min=3,score_cast=4]

execute @e[type=Silverfish,name=C4571NG-74B13] ~ ~ ~ summon ArmorStand ~ ~-0.9 ~ {ArmorItems:[{},{},{},{id:"golden_axe",Damage:11}],NoGravity:1,CustomName:Table,Invisible:1}

execute @e[type=Silverfish,name=C4571NG-74B13] ~ ~ ~ setblock ~ ~ ~ stone_slab

execute @e[type=Silverfish,name=C4571NG-74B13] ~ ~ ~ /summon Villager ~ ~ ~ {CustomName:"Casting-Table",Profession:0,Offers:{Recipes:[{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_pickaxe,Count:1},buyB:{id:stone_pressure_plate,Count:1},sell:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Pickaxe Cast"}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_sword,Count:1},buyB:{id:stone_pressure_plate,Count:1},sell:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Sword Cast"}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_axe,Count:1},buyB:{id:stone_pressure_plate,Count:1},sell:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Axe Cast"}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_shovel,Count:1},buyB:{id:stone_pressure_plate,Count:1},sell:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Shovel Cast"}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_pressure_plate,Count:1},buyB:{id:stone_hoe,Count:1},sell:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Hoe Cast"}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Axe Cast"}}},buyB:{id:barrier,Count:3,tag:{ench:[],display:{Name:Molten Iron Ingot}}},sell:{id:iron_axe,Count:1,tag:{H:1,display:{Lore:[Forged]}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Pickaxe Cast"}}},buyB:{id:barrier,Count:3,tag:{ench:[],display:{Name:Molten Iron Ingot}}},sell:{id:iron_pickaxe,Count:1,tag:{H:1,display:{Lore:[Forged]}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Sword Cast"}}},buyB:{id:barrier,Count:1,tag:{ench:[],display:{Name:Molten Iron Ingot}}},sell:{id:iron_sword,Count:1,tag:{H:1,display:{Lore:[Forged]}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Hoe Cast"}}},buyB:{id:barrier,Count:2,tag:{ench:[],display:{Name:Molten Iron Ingot}}},sell:{id:iron_hoe,Count:1,tag:{H:1,display:{Lore:[Forged]}}}},{rewardExp:0b,maxUses:2147483647,uses:0,buy:{id:stone_pressure_plate,Count:1,tag:{display:{Name:"Shovel Cast"}}},buyB:{id:barrier,Count:1,tag:{ench:[],display:{Name:Molten Iron Ingot}}},sell:{id:iron_shovel,Count:1,tag:{H:1,display:{Lore:[Forged]}}}}]},PersistenceRequired:1,NoAI:1,Silent:1,ActiveEffects:[{Id:14,Amplifier:0,Duration:200000,ShowParticles:0b}]}

/tp @e[name=C4571NG-74B13] ~ -1000 ~

execute @e[name=Table] ~ ~ ~ detect ~ ~1 ~ air 0 kill @e[c=1]

execute @e[name=Casting-Table] ~ ~ ~ detect ~ ~ ~ air 0 kill @e[type=Item,c=1,r=1]

execute @e[name=Casting-Table] ~ ~ ~ detect ~ ~ ~ air 0 summon Item ~ ~ ~ {Item:{id:"spawn_egg",Count:1b,tag:{ench:[],display:{Name:Casting Table},EntityTag:{id:"Silverfish",CustomName:C4571NG-74B13}}},Motion:[0.0,0.4,0.0]}

execute @e[name=Casting-Table] ~ ~ ~ detect ~ ~ ~ air 0 tp @e[c=1] ~ ~-10000 ~

execute @e[name=Casting-Table] ~ ~ ~ detect ~ ~ ~ air 0 kill @e[c=1]

scoreboard players set @a forge 1 {SelectedItem:{id:"minecraft:iron_pickaxe"}}

scoreboard players set @a forge 2 {SelectedItem:{id:"minecraft:iron_axe"}}

scoreboard players set @a forge 3 {SelectedItem:{id:"minecraft:iron_shovel"}}

scoreboard players set @a forge 4 {SelectedItem:{id:"minecraft:iron_hoe"}}

scoreboard players set @a forge 5 {SelectedItem:{id:"minecraft:iron_sword"}}

scoreboard players set @a forge 0 {SelectedItem:{tag:{display:{Lore:[Forged]}}}}

clear @a[score_forge_min=1,score_forge=1] iron_pickaxe 0 1

clear @a[score_forge_min=2,score_forge=2] iron_axe 0 1

/give @a[score_forge_min=1,score_forge=2] iron_ingot 3

/clear @a[score_forge_min=3,score_forge=3] iron_shovel 0 1

/give @a[score_forge_min=3,score_forge=3] iron_shovel 0 1

/give @a[score_forge_min=3,score_forge=3] iron_ingot 1

/give @a[score_forge_min=4,score_forge=4] iron_ingot 2

clear @a[score_forge_min=4,score_forge=4] iron_hoe 0 1

clear @a[score_forge_min=5,score_forge=5] iron_sword 0 1

give @a[score_forge_min=5,score_forge=5] iron_ingot 2

give @a[score_forge_min=5,score_forge=5] stick 1

tellraw @a[score_forge_min=1] {"text":"Iron tools must be forged before they can be used!","color":"gold","italic":"true"}

scoreboard players set @a[score_forge_min=1] forge 0

scoreboard players set @e[type=Item] forge 1 {Item:{id:"minecraft:cauldron"},OnGround:1b}

scoreboard players set @e[type=Item] forge 2 {Item:{id:"minecraft:coal_block"},OnGround:1b}

execute @e[type=Item,score_forge_min=1,score_forge=1] ~ ~ ~ execute @e[type=Item,score_forge_min=2,score_forge=2,r=1] ~ ~ ~ summon Item ~ ~ ~ {Item:{id:"spawn_egg",Count:1b,tag:{display:{Name:Forge},ench:[],EntityTag:{id:"Skeleton",CustomName:F0RGE}}}}

execute @e[type=Item,score_forge_min=1,score_forge=1] ~ ~ ~ execute @e[type=Item,score_forge_min=2,score_forge=2,r=1] ~ ~ ~ kill @e[type=Item,r=1,score_forge_min=1,score_forge=2]

execute @e[type=Skeleton,name=F0RGE] ~ ~ ~ setblock ~ ~ ~ lit_furnace 0

execute @e[type=Skeleton,name=F0RGE] ~ ~ ~ summon ArmorStand ~ ~-.5 ~ {ArmorItems:[{},{},{},{id:"golden_axe",Damage:20s}],CustomName:Forge,DisabledSlots:2039583,NoGravity:1,Invisible:1}

tp @e[name=F0RGE] ~ ~-1000 ~

execute @e[name=Forge] ~ ~ ~ detect ~ ~.5 ~ air 0 kill @e[type=Item,c=1]

execute @e[name=Forge] ~ ~ ~ detect ~ ~.5 ~ air 0 summon Item ~ ~.5 ~ {Item:{id:"spawn_egg",Count:1b,tag:{display:{Name:Forge},ench:[],EntityTag:{id:"Skeleton",CustomName:F0RGE}}},Motion:[0.0,0.4,0.0]}

execute @e[name=Forge] ~ ~ ~ detect ~ ~.5 ~ air 0 kill @e[c=1]

execute @e[name=Forge,type=ArmorStand] ~ ~1.502 ~ scoreboard players set @e[type=Item,r=1] forgetime 1 {Item:{id:"minecraft:coal_block"}}

execute @e[type=Item,score_forgetime_min=1,score_forgetime=1] ~ ~-1.5 ~ execute @e[type=ArmorStand,r=2,name=Forge] ~ ~ ~ playsound block.fire.ambient @a ~ ~ ~ 1 1 1

execute @e[type=Item,score_forgetime_min=1,score_forgetime=1] ~ ~-1.5 ~ scoreboard players add @e[type=ArmorStand,name=Forge,r=2] forgetime 600

execute @e[type=ArmorStand,name=Forge,score_forgetime_min=600] ~ ~1.5 ~ kill @e[type=Item,score_forgetime_min=1,score_forgetime=1,r=1]

scoreboard players remove @e[score_forgetime_min=1,type=ArmorStand] forgetime 1

execute @e[score_forgetime_min=1,type=ArmorStand] ~ ~ ~ particle flame ~ ~1.52 ~ .1 0 .1 0 10 force

execute @e[score_forgetime_min=1,type=ArmorStand] ~ ~2 ~ scoreboard players add @e[type=Item,r=1] smelt 1 {Item:{id:"minecraft:iron_ingot"}}

execute @e[type=Item,score_smelt_min=200] ~ ~ ~ particle flame ~ ~.2 ~ .05 .05 .05 .01 10

entitydata @e[type=Item,score_smelt_min=200] {Item:{id:"minecraft:barrier",tag:{ench:[],display:{Name:Molten Iron Ingot}}}}

scoreboard players set @a[score_smelt_min=1] smelt 0

scoreboard players set @a smelt 1 {SelectedItem:{id:"minecraft:barrier",tag:{ench:[],display:{Name:Molten Iron Ingot}}}}

execute @a[score_smelt_min=1,m=0] ~ ~ ~ gamerule sendCommandFeedback false

/gamemode 2 @a[score_smelt_min=1,m=0]

execute @a[score_smelt_min=1,m=2] ~ ~ ~ gamerule sendCommandFeedback true

execute @a[score_smelt=0,m=2] ~ ~ ~ gamerule sendCommandFeedback false

/gamemode 0 @a[score_smelt=0,m=2]

execute @a[score_smelt=0,m=0] ~ ~ ~ gamerule sendCommandFeedback true

execute @e[name=Forge,score_forgetime_min=1] ~ ~ ~ setblock ~ ~1 ~ lit_furnace

execute @e[name=Forge,score_forgetime_min=1,score_forgetime=1] ~ ~ ~ setblock ~ ~1 ~ furnace

scoreboard players add @a hot 2 {SelectedItem:{id:"minecraft:barrier"}}

scoreboard players remove @a[score_hot_min=1] hot 1

scoreboard players remove @a[score_hot_min=300] hot 3

execute @a[score_hot_min=270] ~ ~ ~ setblock ~ ~ ~ fire

scoreboard players set @a forge -1 {SelectedItem:{tag:{H:1}}}

effect @a[score_forge=-1] weakness 1 100 true

effect @a[score_forge=-1] mining_fatigue 1 2 true

effect @a[score_forge=-1] haste 1 1 true

scoreboard players set @a[score_forge=-1] forge 0

scoreboard players set @e[type=Item] sharp 1 {Item:{tag:{H:1}}}

scoreboard players set @e[type=Item] sharp 2 {Item:{id:"minecraft:golden_axe",tag:{display:{Name:Stone Hammer}}}}

execute @e[type=Item,score_sharp_min=2] ~ ~ ~ entitydata @e[type=Item,score_sharp=1,r=2] {Item:{tag:{H:0}}}

execute @e[type=Item,score_sharp_min=2] ~ ~ ~ entitydata @e[type=Item,score_sharp=1,score_sharp_min=1,r=1] {Item:{tag:{H:0,F:1,display:{Lore:[Forged]}}}}

execute @e[type=Item,score_sharp_min=2] ~ ~ ~ execute @e[type=Item,score_sharp=1,score_sharp_min=1,r=1] ~ ~ ~ playsound block.anvil.use @a ~ ~ ~ 1 1 1

execute @e[type=Item,score_sharp_min=2] ~ ~ ~ execute @e[type=Item,score_sharp=1,score_sharp_min=1,r=1] ~ ~ ~ scoreboard players set @e[r=1] sharp 0

INIT:/scoreboard objectives add cast dummy

INIT:/scoreboard objectives add smelt dummy

INIT:/scoreboard objectives add forge dummy

INIT:/scoreboard objectives add forgetime dummy

INIT:/scoreboard objectives add cool dummy

INIT:/scoreboard objectives add hot dummy

INIT:/scoreboard objectives add sharp dummy