[ScriptEngine] Now able to register crafts.
This commit is contained in:
parent
2dadf9dc0a
commit
ff69ddb160
@ -38,8 +38,6 @@ class Registry {
|
|||||||
return m_recipes.emplace_back(std::make_unique<T>(std::forward<Args>(args)...)).get();
|
return m_recipes.emplace_back(std::make_unique<T>(std::forward<Args>(args)...)).get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerRecipes();
|
|
||||||
|
|
||||||
const Block &getBlock(std::size_t id) const { return *m_blocks.at(id).get(); }
|
const Block &getBlock(std::size_t id) const { return *m_blocks.at(id).get(); }
|
||||||
const Item &getItem(std::size_t id) const { return *m_items.at(id).get(); }
|
const Item &getItem(std::size_t id) const { return *m_items.at(id).get(); }
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
#ifndef SCRIPTENGINE_HPP_
|
#ifndef SCRIPTENGINE_HPP_
|
||||||
#define SCRIPTENGINE_HPP_
|
#define SCRIPTENGINE_HPP_
|
||||||
|
|
||||||
|
#define SOL_CHECK_ARGUMENTS 1
|
||||||
|
|
||||||
#include <sol.hpp>
|
#include <sol.hpp>
|
||||||
|
|
||||||
class ScriptEngine {
|
class ScriptEngine {
|
||||||
|
106
mods/items.lua
Normal file
106
mods/items.lua
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
Registry:registerBlock(0, 0, "Air")
|
||||||
|
Registry:registerBlock(1, 37, "Dirt")
|
||||||
|
|
||||||
|
local cobblestone = Registry:registerBlock(2, 38, "Cobblestone")
|
||||||
|
cobblestone.hardness = 2
|
||||||
|
cobblestone.harvestRequirements = 1
|
||||||
|
|
||||||
|
Registry:registerBlock(3, 226, "Grass"):setItemDrop(1, 1)
|
||||||
|
Registry:registerBlock(4, 266, "Leaves").hardness = 0.5
|
||||||
|
Registry:registerBlock(5, 277, "Wood").hardness = 2
|
||||||
|
|
||||||
|
local stone = Registry:registerBlock(6, 402, "Stone")
|
||||||
|
stone.hardness = 1.5
|
||||||
|
stone.harvestRequirements = 1
|
||||||
|
stone:setItemDrop(2, 1)
|
||||||
|
|
||||||
|
Registry:registerBlock(7, 369, "Sand")
|
||||||
|
Registry:registerBlock(8, 457, "Water")
|
||||||
|
Registry:registerBlock(9, 168, "Glass")
|
||||||
|
|
||||||
|
local coalOre = Registry:registerBlock(10, 36, "Coal Ore")
|
||||||
|
coalOre.hardness = 3
|
||||||
|
coalOre.harvestRequirements = 1
|
||||||
|
coalOre:setItemDrop(38, 1)
|
||||||
|
|
||||||
|
Registry:registerBlock(11, 316, "Planks")
|
||||||
|
Registry:registerBlock(12, 218, "Glowstone")
|
||||||
|
Registry:registerBlock(13, 77, "Workbench")
|
||||||
|
Registry:registerBlock(14, 164, "Furnace")
|
||||||
|
|
||||||
|
local ironOre = Registry:registerBlock(15, 254, "Iron Ore")
|
||||||
|
ironOre.hardness = 3
|
||||||
|
ironOre.harvestRequirements = 1
|
||||||
|
|
||||||
|
Registry:registerBlock(16, 316, "Plank Slab")
|
||||||
|
|
||||||
|
for i = 17, 31 do
|
||||||
|
Registry:registerBlock(i, 4, "Undefined")
|
||||||
|
end
|
||||||
|
|
||||||
|
Registry:registerItemBlock(0, "")
|
||||||
|
Registry:registerItemBlock(1, "Dirt")
|
||||||
|
Registry:registerItemBlock(2, "Cobblestone")
|
||||||
|
Registry:registerItemBlock(3, "Grass")
|
||||||
|
Registry:registerItemBlock(4, "Leaves")
|
||||||
|
Registry:registerItemBlock(5, "Wood")
|
||||||
|
Registry:registerItemBlock(6, "Stone")
|
||||||
|
Registry:registerItemBlock(7, "Sand")
|
||||||
|
Registry:registerItemBlock(8, "Water")
|
||||||
|
Registry:registerItemBlock(9, "Glass")
|
||||||
|
Registry:registerItemBlock(10, "Coal Ore")
|
||||||
|
Registry:registerItemBlock(11, "Planks")
|
||||||
|
Registry:registerItemBlock(12, "Glowstone")
|
||||||
|
Registry:registerItemBlock(13, "Workbench")
|
||||||
|
Registry:registerItemBlock(14, "Furnace")
|
||||||
|
Registry:registerItemBlock(15, "Iron Ore")
|
||||||
|
Registry:registerItemBlock(16, "Plank Slab")
|
||||||
|
|
||||||
|
for i = 17, 31 do
|
||||||
|
Registry:registerItemBlock(i, "Undefined")
|
||||||
|
end
|
||||||
|
|
||||||
|
Registry:registerItem(32, "Stick", 324)
|
||||||
|
|
||||||
|
local stoneAxe = Registry:registerItem(33, "Stone Axe", 325)
|
||||||
|
stoneAxe.miningSpeed = 4
|
||||||
|
stoneAxe.harvestCapability = 4
|
||||||
|
|
||||||
|
Registry:registerItem(34, "Stone Hoe", 326)
|
||||||
|
|
||||||
|
local stonePickaxe = Registry:registerItem(35, "Stone Pickaxe", 327)
|
||||||
|
stonePickaxe.miningSpeed = 4
|
||||||
|
stonePickaxe.harvestCapability = 1
|
||||||
|
|
||||||
|
local stoneShovel = Registry:registerItem(36, "Stone Shovel", 328)
|
||||||
|
stoneShovel.miningSpeed = 4
|
||||||
|
stoneShovel.harvestCapability = 2
|
||||||
|
|
||||||
|
Registry:registerItem(37, "Stone Sword", 329)
|
||||||
|
|
||||||
|
local coal = Registry:registerItem(38, "Coal", 111)
|
||||||
|
coal.isFuel = true
|
||||||
|
coal.burnTime = 1600
|
||||||
|
|
||||||
|
Registry:registerItem(39, "Iron Ingot", 232)
|
||||||
|
|
||||||
|
local charcoal = Registry:registerItem(40, "Charcoal", 41)
|
||||||
|
charcoal.isFuel = true
|
||||||
|
charcoal.burnTime = 1600
|
||||||
|
|
||||||
|
local woodenAxe = Registry:registerItem(41, "Wooden Axe", 337)
|
||||||
|
woodenAxe.miningSpeed = 2
|
||||||
|
woodenAxe.harvestCapability = 4
|
||||||
|
|
||||||
|
Registry:registerItem(42, "Wooden Hoe", 338)
|
||||||
|
|
||||||
|
local woodenPickaxe = Registry:registerItem(43, "Wooden Pickaxe", 339)
|
||||||
|
woodenPickaxe.miningSpeed = 2
|
||||||
|
woodenPickaxe.harvestCapability = 1
|
||||||
|
|
||||||
|
local woodenShovel = Registry:registerItem(44, "Wooden Shovel", 340)
|
||||||
|
woodenShovel.miningSpeed = 2
|
||||||
|
woodenShovel.harvestCapability = 2
|
||||||
|
|
||||||
|
Registry:registerItem(45, "Wooden Sword", 341)
|
||||||
|
|
281
mods/recipes.lua
Normal file
281
mods/recipes.lua
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
-- Wooden Axe
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 41,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"##",
|
||||||
|
"#|",
|
||||||
|
" |"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 11,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Wooden Hoe
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 42,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"##",
|
||||||
|
" |",
|
||||||
|
" |"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 11,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Wooden Pickaxe
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 43,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"###",
|
||||||
|
" | ",
|
||||||
|
" | "
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 11,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Wooden Shovel
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 44,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"#",
|
||||||
|
"|",
|
||||||
|
"|"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 11,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Wooden Sword
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 45,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"#",
|
||||||
|
"#",
|
||||||
|
"|"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 11,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Stone Axe
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 33,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"##",
|
||||||
|
"#|",
|
||||||
|
" |"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 2,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Stone Hoe
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 34,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"##",
|
||||||
|
" |",
|
||||||
|
" |"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 2,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Stone Pickaxe
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 35,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"###",
|
||||||
|
" | ",
|
||||||
|
" | "
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 2,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Stone Shovel
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 36,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"#",
|
||||||
|
"|",
|
||||||
|
"|"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 2,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Stone Sword
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 37,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"#",
|
||||||
|
"#",
|
||||||
|
"|"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {
|
||||||
|
['#'] = 2,
|
||||||
|
['|'] = 32
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Stick
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 32,
|
||||||
|
amount = 4
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
'#',
|
||||||
|
'#'
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {['#'] = 11}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Planks
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 11,
|
||||||
|
amount = 4
|
||||||
|
},
|
||||||
|
pattern = {"#"},
|
||||||
|
keys = {["#"] = 5}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Workbench
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 13,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
pattern = {
|
||||||
|
"##",
|
||||||
|
"##"
|
||||||
|
},
|
||||||
|
keys = {["#"] = 11}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Furnace
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 14,
|
||||||
|
amount = 1
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {
|
||||||
|
"###",
|
||||||
|
"# #",
|
||||||
|
"###"
|
||||||
|
},
|
||||||
|
|
||||||
|
keys = {["#"] = 2}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- Plank Slab
|
||||||
|
Registry:registerCraftingRecipe({
|
||||||
|
result = {
|
||||||
|
item = 16,
|
||||||
|
amount = 6
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern = {"###"},
|
||||||
|
|
||||||
|
keys = {['#'] = 11}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Iron Ingot
|
||||||
|
Registry:registerSmeltingRecipe({
|
||||||
|
input = {item = 15, amount = 1},
|
||||||
|
output = {item = 39, amount = 1}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Stone
|
||||||
|
Registry:registerSmeltingRecipe({
|
||||||
|
input = {item = 2, amount = 1},
|
||||||
|
output = {item = 6, amount = 1}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Glass
|
||||||
|
Registry:registerSmeltingRecipe({
|
||||||
|
input = {item = 7, amount = 1},
|
||||||
|
output = {item = 9, amount = 1}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Charcoal
|
||||||
|
Registry:registerSmeltingRecipe({
|
||||||
|
input = {item = 5, amount = 1},
|
||||||
|
output = {item = 40, amount = 1}
|
||||||
|
})
|
||||||
|
|
100
mods/test.lua
100
mods/test.lua
@ -1,103 +1,7 @@
|
|||||||
print("Hello from Lua!")
|
print("Hello from Lua!")
|
||||||
|
|
||||||
Registry:registerBlock(0, 0, "Air")
|
dofile("mods/items.lua")
|
||||||
Registry:registerBlock(1, 37, "Dirt")
|
dofile("mods/recipes.lua")
|
||||||
|
|
||||||
local cobblestone = Registry:registerBlock(2, 38, "Cobblestone")
|
|
||||||
cobblestone.hardness = 2
|
|
||||||
cobblestone.harvestRequirements = 1
|
|
||||||
|
|
||||||
Registry:registerBlock(3, 226, "Grass"):setItemDrop(1, 1)
|
|
||||||
Registry:registerBlock(4, 266, "Leaves").hardness = 0.5
|
|
||||||
Registry:registerBlock(5, 277, "Wood").hardness = 2
|
|
||||||
|
|
||||||
local stone = Registry:registerBlock(6, 402, "Stone")
|
|
||||||
stone.hardness = 1.5
|
|
||||||
stone.harvestRequirements = 1
|
|
||||||
stone:setItemDrop(2, 1)
|
|
||||||
|
|
||||||
Registry:registerBlock(7, 369, "Sand")
|
|
||||||
Registry:registerBlock(8, 457, "Water")
|
|
||||||
Registry:registerBlock(9, 168, "Glass")
|
|
||||||
|
|
||||||
local coalOre = Registry:registerBlock(10, 36, "Coal Ore")
|
|
||||||
coalOre.hardness = 3
|
|
||||||
coalOre.harvestRequirements = 1
|
|
||||||
coalOre:setItemDrop(38, 1)
|
|
||||||
|
|
||||||
Registry:registerBlock(11, 316, "Planks")
|
|
||||||
Registry:registerBlock(12, 218, "Glowstone")
|
|
||||||
Registry:registerBlock(13, 77, "Workbench")
|
|
||||||
Registry:registerBlock(14, 164, "Furnace")
|
|
||||||
|
|
||||||
local ironOre = Registry:registerBlock(15, 254, "Iron Ore")
|
|
||||||
ironOre.hardness = 3
|
|
||||||
ironOre.harvestRequirements = 1
|
|
||||||
|
|
||||||
Registry:registerBlock(16, 316, "Plank Slab")
|
|
||||||
|
|
||||||
for i = 17, 31 do
|
|
||||||
Registry:registerBlock(i, 4, "Undefined")
|
|
||||||
end
|
|
||||||
|
|
||||||
Registry:registerItemBlock(0, "")
|
|
||||||
Registry:registerItemBlock(1, "Dirt")
|
|
||||||
Registry:registerItemBlock(2, "Cobblestone")
|
|
||||||
Registry:registerItemBlock(3, "Grass")
|
|
||||||
Registry:registerItemBlock(4, "Leaves")
|
|
||||||
Registry:registerItemBlock(5, "Wood")
|
|
||||||
Registry:registerItemBlock(6, "Stone")
|
|
||||||
Registry:registerItemBlock(7, "Sand")
|
|
||||||
Registry:registerItemBlock(8, "Water")
|
|
||||||
Registry:registerItemBlock(9, "Glass")
|
|
||||||
Registry:registerItemBlock(10, "Coal Ore")
|
|
||||||
Registry:registerItemBlock(11, "Planks")
|
|
||||||
Registry:registerItemBlock(12, "Glowstone")
|
|
||||||
Registry:registerItemBlock(13, "Workbench")
|
|
||||||
Registry:registerItemBlock(14, "Furnace")
|
|
||||||
Registry:registerItemBlock(15, "Iron Ore")
|
|
||||||
Registry:registerItemBlock(16, "Plank Slab")
|
|
||||||
|
|
||||||
for i = 17, 31 do
|
|
||||||
Registry:registerItemBlock(i, "Undefined")
|
|
||||||
end
|
|
||||||
|
|
||||||
Registry:registerItem(32, "Stick", 324)
|
|
||||||
|
|
||||||
local stoneAxe = Registry:registerItem(33, "Stone Axe", 325)
|
|
||||||
stoneAxe.miningSpeed = 4
|
|
||||||
stoneAxe.harvestCapability = 4
|
|
||||||
|
|
||||||
Registry:registerItem(34, "Stone Hoe", 326)
|
|
||||||
|
|
||||||
local stonePickaxe = Registry:registerItem(35, "Stone Pickaxe", 327)
|
|
||||||
stonePickaxe.miningSpeed = 4
|
|
||||||
stonePickaxe.harvestCapability = 1
|
|
||||||
|
|
||||||
local stoneShovel = Registry:registerItem(36, "Stone Shovel", 328)
|
|
||||||
stoneShovel.miningSpeed = 4
|
|
||||||
stoneShovel.harvestCapability = 2
|
|
||||||
|
|
||||||
Registry:registerItem(37, "Stone Sword", 329)
|
|
||||||
Registry:registerItem(38, "Coal", 111).burnTime = 1600
|
|
||||||
Registry:registerItem(39, "Iron Ingot", 232)
|
|
||||||
Registry:registerItem(40, "Charcoal", 41).burnTime = 1600
|
|
||||||
|
|
||||||
local woodenAxe = Registry:registerItem(41, "Wooden Axe", 337)
|
|
||||||
woodenAxe.miningSpeed = 2
|
|
||||||
woodenAxe.harvestCapability = 4
|
|
||||||
|
|
||||||
Registry:registerItem(42, "Wooden Hoe", 338)
|
|
||||||
|
|
||||||
local woodenPickaxe = Registry:registerItem(43, "Wooden Pickaxe", 339)
|
|
||||||
woodenPickaxe.miningSpeed = 2
|
|
||||||
woodenPickaxe.harvestCapability = 1
|
|
||||||
|
|
||||||
local woodenShovel = Registry:registerItem(44, "Wooden Shovel", 340)
|
|
||||||
woodenShovel.miningSpeed = 2
|
|
||||||
woodenShovel.harvestCapability = 2
|
|
||||||
|
|
||||||
Registry:registerItem(45, "Wooden Sword", 341)
|
|
||||||
|
|
||||||
function init()
|
function init()
|
||||||
Player:inventory():addStack(13, 1);
|
Player:inventory():addStack(13, 1);
|
||||||
|
@ -1,175 +0,0 @@
|
|||||||
<recipes>
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="##" />
|
|
||||||
<pattern string="#|" />
|
|
||||||
<pattern string=" |" />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="41" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="##" />
|
|
||||||
<pattern string=" |" />
|
|
||||||
<pattern string=" |" />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="42" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="###" />
|
|
||||||
<pattern string=" | " />
|
|
||||||
<pattern string=" | " />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="43" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="#" />
|
|
||||||
<pattern string="|" />
|
|
||||||
<pattern string="|" />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="44" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="#" />
|
|
||||||
<pattern string="#" />
|
|
||||||
<pattern string="|" />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="45" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="##" />
|
|
||||||
<pattern string="#|" />
|
|
||||||
<pattern string=" |" />
|
|
||||||
|
|
||||||
<key char="#" item="2" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="33" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="##" />
|
|
||||||
<pattern string=" |" />
|
|
||||||
<pattern string=" |" />
|
|
||||||
|
|
||||||
<key char="#" item="2" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="34" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="###" />
|
|
||||||
<pattern string=" | " />
|
|
||||||
<pattern string=" | " />
|
|
||||||
|
|
||||||
<key char="#" item="2" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="35" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="#" />
|
|
||||||
<pattern string="|" />
|
|
||||||
<pattern string="|" />
|
|
||||||
|
|
||||||
<key char="#" item="2" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="36" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="#" />
|
|
||||||
<pattern string="#" />
|
|
||||||
<pattern string="|" />
|
|
||||||
|
|
||||||
<key char="#" item="2" />
|
|
||||||
<key char="|" item="32" />
|
|
||||||
|
|
||||||
<result item="37" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="#" />
|
|
||||||
<pattern string="#" />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
|
|
||||||
<result item="32" amount="4" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="#" />
|
|
||||||
|
|
||||||
<key char="#" item="5" />
|
|
||||||
|
|
||||||
<result item="11" amount="4" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="##" />
|
|
||||||
<pattern string="##" />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
|
|
||||||
<result item="13" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="###" />
|
|
||||||
<pattern string="# #" />
|
|
||||||
<pattern string="###" />
|
|
||||||
|
|
||||||
<key char="#" item="2" />
|
|
||||||
|
|
||||||
<result item="14" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="craft">
|
|
||||||
<pattern string="###" />
|
|
||||||
|
|
||||||
<key char="#" item="11" />
|
|
||||||
|
|
||||||
<result item="16" amount="6" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="smelt">
|
|
||||||
<input id="15" amount="1" />
|
|
||||||
<output id="39" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="smelt">
|
|
||||||
<input id="2" amount="1" />
|
|
||||||
<output id="6" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="smelt">
|
|
||||||
<input id="7" amount="1" />
|
|
||||||
<output id="9" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
|
|
||||||
<recipe type="smelt">
|
|
||||||
<input id="5" amount="1" />
|
|
||||||
<output id="40" amount="1" />
|
|
||||||
</recipe>
|
|
||||||
</recipes>
|
|
@ -34,7 +34,6 @@ void Application::init() {
|
|||||||
|
|
||||||
Registry::setInstance(m_registry);
|
Registry::setInstance(m_registry);
|
||||||
m_scriptEngine.init();
|
m_scriptEngine.init();
|
||||||
m_registry.registerRecipes();
|
|
||||||
|
|
||||||
m_stateStack.push<GameState>();
|
m_stateStack.push<GameState>();
|
||||||
}
|
}
|
||||||
|
@ -23,63 +23,6 @@
|
|||||||
|
|
||||||
Registry *Registry::s_instance = nullptr;
|
Registry *Registry::s_instance = nullptr;
|
||||||
|
|
||||||
void Registry::registerRecipes() {
|
|
||||||
XMLFile doc("resources/config/recipes.xml");
|
|
||||||
|
|
||||||
tinyxml2::XMLElement *recipeElement = doc.FirstChildElement("recipes").FirstChildElement("recipe").ToElement();
|
|
||||||
while (recipeElement) {
|
|
||||||
std::string type = recipeElement->Attribute("type");
|
|
||||||
if (type == "craft") {
|
|
||||||
std::vector<std::string> pattern;
|
|
||||||
std::map<char, std::vector<u32>> keys;
|
|
||||||
ItemStack result;
|
|
||||||
bool isShapeless = false;
|
|
||||||
|
|
||||||
tinyxml2::XMLElement *patternElement = recipeElement->FirstChildElement("pattern");
|
|
||||||
while (patternElement) {
|
|
||||||
pattern.emplace_back(patternElement->Attribute("string"));
|
|
||||||
patternElement = patternElement->NextSiblingElement("pattern");
|
|
||||||
}
|
|
||||||
|
|
||||||
tinyxml2::XMLElement *keyElement = recipeElement->FirstChildElement("key");
|
|
||||||
while (keyElement) {
|
|
||||||
char ch = keyElement->Attribute("char")[0];
|
|
||||||
u32 item = keyElement->UnsignedAttribute("item");
|
|
||||||
|
|
||||||
std::vector<u32> items;
|
|
||||||
items.emplace_back(item);
|
|
||||||
keys.emplace(ch, items);
|
|
||||||
|
|
||||||
keyElement = keyElement->NextSiblingElement("key");
|
|
||||||
}
|
|
||||||
|
|
||||||
tinyxml2::XMLElement *resultElement = recipeElement->FirstChildElement("result");
|
|
||||||
if (resultElement) {
|
|
||||||
u16 item = resultElement->UnsignedAttribute("item");
|
|
||||||
u16 amount = resultElement->UnsignedAttribute("amount");
|
|
||||||
result = ItemStack{item, amount};
|
|
||||||
}
|
|
||||||
|
|
||||||
registerRecipe<CraftingRecipe>(pattern, keys, result, isShapeless);
|
|
||||||
}
|
|
||||||
else if (type == "smelt") {
|
|
||||||
tinyxml2::XMLElement *inputElement = recipeElement->FirstChildElement("input");
|
|
||||||
u16 inputItem = inputElement->UnsignedAttribute("id");
|
|
||||||
u16 inputAmount = inputElement->UnsignedAttribute("amount");
|
|
||||||
ItemStack input{inputItem, inputAmount};
|
|
||||||
|
|
||||||
tinyxml2::XMLElement *outputElement = recipeElement->FirstChildElement("output");
|
|
||||||
u16 outputItem = outputElement->UnsignedAttribute("id");
|
|
||||||
u16 outputAmount = outputElement->UnsignedAttribute("amount");
|
|
||||||
ItemStack output{outputItem, outputAmount};
|
|
||||||
|
|
||||||
registerRecipe<SmeltingRecipe>(input, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
recipeElement = recipeElement->NextSiblingElement("recipe");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const Recipe *Registry::getRecipe(const Inventory &inventory) const {
|
const Recipe *Registry::getRecipe(const Inventory &inventory) const {
|
||||||
for (auto &recipe : m_recipes) {
|
for (auto &recipe : m_recipes) {
|
||||||
if (recipe->isMatching(inventory))
|
if (recipe->isMatching(inventory))
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
#include "Player.hpp"
|
#include "Player.hpp"
|
||||||
#include "Registry.hpp"
|
#include "Registry.hpp"
|
||||||
|
|
||||||
|
#include "CraftingRecipe.hpp"
|
||||||
|
#include "SmeltingRecipe.hpp"
|
||||||
|
|
||||||
#include "BlockFurnace.hpp"
|
#include "BlockFurnace.hpp"
|
||||||
#include "BlockWater.hpp"
|
#include "BlockWater.hpp"
|
||||||
#include "BlockWorkbench.hpp"
|
#include "BlockWorkbench.hpp"
|
||||||
@ -29,7 +32,7 @@ void ScriptEngine::init() {
|
|||||||
|
|
||||||
m_lua["Registry"] = &Registry::getInstance();
|
m_lua["Registry"] = &Registry::getInstance();
|
||||||
|
|
||||||
m_lua.open_libraries();
|
m_lua.open_libraries(sol::lib::base);
|
||||||
m_lua.safe_script_file("mods/test.lua");
|
m_lua.safe_script_file("mods/test.lua");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,6 +56,7 @@ void ScriptEngine::initUsertypes() {
|
|||||||
m_lua.new_usertype<Item>("Item",
|
m_lua.new_usertype<Item>("Item",
|
||||||
"name", &Item::name,
|
"name", &Item::name,
|
||||||
"id", &Item::id,
|
"id", &Item::id,
|
||||||
|
"isFuel", sol::property(&Item::isFuel, &Item::setIsFuel),
|
||||||
"burnTime", sol::property(&Item::burnTime, &Item::setBurnTime),
|
"burnTime", sol::property(&Item::burnTime, &Item::setBurnTime),
|
||||||
"harvestCapability", sol::property(&Item::harvestCapability, &Item::setHarvestCapability),
|
"harvestCapability", sol::property(&Item::harvestCapability, &Item::setHarvestCapability),
|
||||||
"miningSpeed", sol::property(&Item::miningSpeed, &Item::setMiningSpeed)
|
"miningSpeed", sol::property(&Item::miningSpeed, &Item::setMiningSpeed)
|
||||||
@ -68,7 +72,9 @@ void ScriptEngine::initUsertypes() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
m_lua.new_usertype<Registry>("Registry",
|
m_lua.new_usertype<Registry>("Registry",
|
||||||
"registerBlock", [] (Registry *reg, u32 id, u32 textureID, const std::string &name) {
|
"registerBlock", [] (Registry *reg, u32 id, u32 textureID, const std::string &name)
|
||||||
|
-> Block*
|
||||||
|
{
|
||||||
if (id == BlockType::Workbench) return reg->registerBlock<BlockWorkbench>();
|
if (id == BlockType::Workbench) return reg->registerBlock<BlockWorkbench>();
|
||||||
else if (id == BlockType::Furnace) return reg->registerBlock<BlockFurnace>();
|
else if (id == BlockType::Furnace) return reg->registerBlock<BlockFurnace>();
|
||||||
else if (id == BlockType::Water) return reg->registerBlock<BlockWater>();
|
else if (id == BlockType::Water) return reg->registerBlock<BlockWater>();
|
||||||
@ -79,6 +85,43 @@ void ScriptEngine::initUsertypes() {
|
|||||||
},
|
},
|
||||||
"registerItem", [] (Registry *reg, u32 id, const std::string &name, u32 textureID) {
|
"registerItem", [] (Registry *reg, u32 id, const std::string &name, u32 textureID) {
|
||||||
return reg->registerItem<Item>(id, textureID, name);
|
return reg->registerItem<Item>(id, textureID, name);
|
||||||
|
},
|
||||||
|
"registerCraftingRecipe", [] (Registry *reg, const sol::table &recipeDefinition) {
|
||||||
|
sol::table resultTable = recipeDefinition["result"];
|
||||||
|
sol::table patternTable = recipeDefinition["pattern"];
|
||||||
|
sol::table keysTable = recipeDefinition["keys"];
|
||||||
|
|
||||||
|
ItemStack result = {
|
||||||
|
resultTable["item"].get<u16>(),
|
||||||
|
resultTable["amount"].get<u16>()
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<std::string> pattern;
|
||||||
|
for (auto &it : patternTable)
|
||||||
|
pattern.emplace_back(it.second.as<std::string>());
|
||||||
|
|
||||||
|
std::map<char, std::vector<u32>> keys;
|
||||||
|
for (auto &it : keysTable) {
|
||||||
|
keys.emplace(it.first.as<char>(), std::vector<u32>{it.second.as<u32>()});
|
||||||
|
}
|
||||||
|
|
||||||
|
reg->registerRecipe<CraftingRecipe>(pattern, keys, result);
|
||||||
|
},
|
||||||
|
"registerSmeltingRecipe", [] (Registry *reg, const sol::table &recipeDefinition) {
|
||||||
|
sol::table inputTable = recipeDefinition["input"];
|
||||||
|
sol::table outputTable = recipeDefinition["output"];
|
||||||
|
|
||||||
|
ItemStack input = {
|
||||||
|
inputTable["item"].get<u16>(),
|
||||||
|
inputTable["amount"].get<u16>()
|
||||||
|
};
|
||||||
|
|
||||||
|
ItemStack output = {
|
||||||
|
outputTable["item"].get<u16>(),
|
||||||
|
outputTable["amount"].get<u16>()
|
||||||
|
};
|
||||||
|
|
||||||
|
reg->registerRecipe<SmeltingRecipe>(input, output);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user