diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/group_lists.lua | 15 | ||||
-rw-r--r-- | src/main/armor_stand.lua | 36 | ||||
-rw-r--r-- | src/main/flower_spread.lua | 8 | ||||
-rw-r--r-- | src/main/lucky_block.lua | 29 | ||||
-rw-r--r-- | src/onload/lava_cooling.lua | 6 | ||||
-rw-r--r-- | src/onload/load_group_lists.lua | 7 | ||||
-rw-r--r-- | src/onload/lobby_grass.lua | 2 | ||||
-rw-r--r-- | src/onload/remove_heads_from_armor.lua | 10 | ||||
-rw-r--r-- | src/onload/shop_signs.lua | 2 |
9 files changed, 95 insertions, 20 deletions
diff --git a/src/common/group_lists.lua b/src/common/group_lists.lua new file mode 100644 index 0000000..624b322 --- /dev/null +++ b/src/common/group_lists.lua @@ -0,0 +1,15 @@ +skycraft.group_lists = {} + +function skycraft.register_group_list(group) + local grouplist = {} + skycraft.group_lists[group] = grouplist + return grouplist +end + +function skycraft.get_group_list(group) + return skycraft.group_lists[group] or {} +end + +function skycraft.insert_group_list(item, group) + table.insert(skycraft.get_group_list(group), item) +end diff --git a/src/main/armor_stand.lua b/src/main/armor_stand.lua new file mode 100644 index 0000000..e15f177 --- /dev/null +++ b/src/main/armor_stand.lua @@ -0,0 +1,36 @@ +local armor_parts = {"head", "torso", "legs", "feet"} +skycraft.armor_list = {} +for _, n in pairs(armor_parts) do + skycraft.armor_list[n] = skycraft.register_group_list("armor_" .. n) +end +skycraft.head_list = skycraft.register_group_list("head") + +function skycraft.place_and_fill_armor_stand(pos, player) + minetest.set_node(pos, {name = "mcl_armor_stand:armor_stand"}) + local nodedef = minetest.registered_nodes["mcl_armor_stand:armor_stand"] + local node = minetest.get_node(pos) + local armor_pieces = {} + for _, n in pairs(armor_parts) do + local piece_list = skycraft.armor_list[n] + table.insert(armor_pieces, ItemStack(piece_list[math.random(#piece_list)])) + end + local function equip_armor(i) + local piece = armor_pieces[i] + if not piece then return end + nodedef.on_rightclick(pos, node, player, ItemStack(piece)) + minetest.after(0.5, equip_armor, i + 1) + end + minetest.after(0.5, equip_armor, 1) +end + +minetest.register_chatcommand("armorstand", { + description = "Spawn an armor stand at your position and fill it with random armor", + privs = {server = true} + func = function(name) + local player = minetest.get_player_by_name(name) + if not player then return false, "You have to be online to use this command" end + skycraft.place_and_fill_armor_stand(vector.floor(player:get_pos()), player) + return true, "Armor stand spawned, equipping." + end +}) + diff --git a/src/main/flower_spread.lua b/src/main/flower_spread.lua index a808d9b..015253e 100644 --- a/src/main/flower_spread.lua +++ b/src/main/flower_spread.lua @@ -1,3 +1,6 @@ +skycraft.register_group_list("flower") +skycraft.group_lists["flower"] = {"mcl_flowers:fern", "mcl_flowers:double_fern", "mcl_flowers:tallgrass", "mcl_flowers:double_grass"} +local flower_list = skycraft.get_group_list("flower") minetest.register_abm({ nodenames = {"mcl_core:dirt_with_grass"}, interval = 300, @@ -5,9 +8,8 @@ minetest.register_abm({ action = function(pos, node) pos.y = pos.y + 1 local light = minetest.get_node_light(pos) or 0 - if minetest.get_node(pos).name == "air" and light > 12 and not minetest.find_node_near(pos, 2, {"group:flora"}) then - local flowers = {"mcl_flowers:blue_orchid", "mcl_flowers:azure_bluet", "mcl_flowers:allium", "mcl_flowers:tulip_white", "mcl_flowers:tulip_red", "mcl_flowers:tulip_pink", "mcl_flowers:tulip_orange", "mcl_flowers:oxeye_daisy", "mcl_flowers:dandelion", "mcl_flowers:poppy", "mcl_flowers:fern", "mcl_flowers:tallgrass", "mcl_flowers:double_grass"} - minetest.set_node(pos, {name = flowers[math.random(#flowers)]}) + if minetest.get_node(pos).name == "air" and light > 12 and not minetest.find_node_near(pos, 2, {"group:flower"}) then + minetest.set_node(pos, {name = flower_list[math.random(#flower_list)]}) end end }) diff --git a/src/main/lucky_block.lua b/src/main/lucky_block.lua index 7bb00d4..f5f5b00 100644 --- a/src/main/lucky_block.lua +++ b/src/main/lucky_block.lua @@ -1,3 +1,5 @@ +skycraft.glazed_terracotta_list = {} + local old_on_dig = minetest.registered_nodes["lucky_block:lucky_block"].on_dig minetest.override_item("lucky_block:lucky_block", { @@ -15,21 +17,26 @@ minetest.override_item("lucky_block:void_mirror", { minetest.register_alias_force("lucky_block:super_lucky_block", "lucky_block:lucky_block") -minetest.clear_craft({output = "lucky_block:lucky_block"}) - -local discs = {} -for i=1, 8 do - table.insert(discs, "mcl_jukebox:record_" .. tostring(i)) -end - lucky_block:add_blocks({ - {"dro", {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel"}, 100}, - {"dro", discs, 1}, + {"dro", {"mcl_core:goldblock", "mcl_core:gold_ingot", "mcl_core:gold_nugget"}, 256}, + {"dro", {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel"}, 64}, {"spw", "mobs_mc:zombie", 5}, + {"spw", "mobs_mc:husk", 5}, {"spw", "mobs_mc:spider", 4}, + {"spw", "mobs_mc:cave_spider", 4}, {"spw", "mobs_mc:skeleton", 2}, + {"spw", "mobs_mc:stray", 2}, {"spw", "mobs_mc:creeper", 1}, {"spw", "mobs_mc:enderman", 1}, - + {"spw", "mobs_mc:mooshroom", 1}, + {"spw", "mobs_mc:slime", 1}, + {"spw", "mobs_mc:bat", 10}, + {"nod", "mcl_cake:cake"}, + {"nod", "mcl_farming:pumpkin"}, + {"dro", skycraft.register_group_list("music_record"), 1}, + {"dro", skycraft.register_group_list("horse_armor"), 1}, + {"nod", skycraft.register_group_list("glazed_terracotta")}, + {"nod", skycraft.register_group_list("hardened_clay")}, + {"nod", skycraft.register_group_list("concrete")}, + {"cus", skycraft.place_and_fill_armor_stand}, }) - diff --git a/src/onload/lava_cooling.lua b/src/onload/lava_cooling.lua index 92700af..b65d96b 100644 --- a/src/onload/lava_cooling.lua +++ b/src/onload/lava_cooling.lua @@ -1,13 +1,13 @@ skycraft.ores = skycraft.random:new() skycraft.ores:add_choice("mcl_core:cobble", 1000) -skycraft.ores:add_choice("mcl_core:stone", 200) -skycraft.ores:add_choice("mcl_core:stone_with_coal", 31) +skycraft.ores:add_choice("mcl_core:stone_with_coal", 30) skycraft.ores:add_choice("mcl_core:stone_with_iron", 25) skycraft.ores:add_choice("mcl_core:stone_with_gold", 10) skycraft.ores:add_choice("mcl_core:stone_with_lapis", 10) skycraft.ores:add_choice("mcl_core:stone_with_redstone", 10) skycraft.ores:add_choice("mcl_core:stone_with_diamond", 5) -skycraft.ores:calc_csum() +skycraft.ores:add_choice("mcl_core:stone_with_emerald", 1) +skycraft.ores:calc_csum() for k, v in pairs(minetest.registered_abms) do if v.label == "Lava cooling" then diff --git a/src/onload/load_group_lists.lua b/src/onload/load_group_lists.lua new file mode 100644 index 0000000..704d61a --- /dev/null +++ b/src/onload/load_group_lists.lua @@ -0,0 +1,7 @@ +for nodename, nodedef in pairs(minetest.registered_items) do + for group, grouplist in pairs(skycraft.group_lists) do + if nodedef.groups[group] and nodedef.groups[group] > 0 then + table.insert(grouplist, nodename) + end + end +end diff --git a/src/onload/lobby_grass.lua b/src/onload/lobby_grass.lua index 02938b7..177508c 100644 --- a/src/onload/lobby_grass.lua +++ b/src/onload/lobby_grass.lua @@ -1,7 +1,7 @@ local old_get_grass_block_type = mcl_core.get_grass_block_type function mcl_core.get_grass_block_type(pos) if pos.y > 5000 then - return {name="mcl_core:dirt_with_grass", param2=0} + return {name = "mcl_core:dirt_with_grass", param2=0} end return old_get_grass_block_type(pos) end diff --git a/src/onload/remove_heads_from_armor.lua b/src/onload/remove_heads_from_armor.lua new file mode 100644 index 0000000..0b0089d --- /dev/null +++ b/src/onload/remove_heads_from_armor.lua @@ -0,0 +1,10 @@ +local armor_head = skycraft.armor_list["head"] +local heads = skycraft.head_list +for _, n in pairs(heads) do + for k, v in pairs(armor_head) do + if n == v then + table.remove(armor_head, k) + break + end + end +end diff --git a/src/onload/shop_signs.lua b/src/onload/shop_signs.lua index 217049e..4c6ec4b 100644 --- a/src/onload/shop_signs.lua +++ b/src/onload/shop_signs.lua @@ -6,13 +6,11 @@ for nodename, nodedef in pairs(minetest.registered_nodes) do local text = minetest.get_meta(pos):get_string("text") or "" local lines = text:split("\n") local action, amount, price = lines[1], lines[2], lines[3] - print(action, amount, price) if not (action and amount and price) then return end price = string.gsub(price, "%$", "") price = tonumber(price) amount = string.gsub(amount, "x", "") amount = tonumber(amount) - print(action, amount, price) if not (amount and price) then return end local func, frameoffset if action == "Buy" then |