aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/group_lists.lua15
-rw-r--r--src/main/armor_stand.lua36
-rw-r--r--src/main/flower_spread.lua8
-rw-r--r--src/main/lucky_block.lua29
-rw-r--r--src/onload/lava_cooling.lua6
-rw-r--r--src/onload/load_group_lists.lua7
-rw-r--r--src/onload/lobby_grass.lua2
-rw-r--r--src/onload/remove_heads_from_armor.lua10
-rw-r--r--src/onload/shop_signs.lua2
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