diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-06-07 18:34:21 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-06-07 18:34:21 +0200 |
commit | 20b8961640b6c22d4149f7268d403cb4609a03fb (patch) | |
tree | 0acdb70090ee8db3e77b5a5ad4573cdd13503e8f | |
parent | cc84f066b001f4ea875b115ace6d533d1bc8b4f3 (diff) | |
download | skycraft-20b8961640b6c22d4149f7268d403cb4609a03fb.tar.xz |
New file Structure
-rwxr-xr-x | init.lua | 49 | ||||
-rw-r--r-- | nether_portal.lua | 10 | ||||
-rw-r--r-- | shop.lua | 36 | ||||
-rw-r--r-- | src/common/common.lua | 24 | ||||
-rw-r--r-- | src/common/random.lua (renamed from random.lua) | 0 | ||||
-rw-r--r-- | src/common/request.lua (renamed from request.lua) | 0 | ||||
-rwxr-xr-x | src/main/commands.lua (renamed from commands.lua) | 0 | ||||
-rw-r--r-- | src/main/flower_spread.lua (renamed from flower_spread.lua) | 0 | ||||
-rw-r--r-- | src/main/lobby.lua (renamed from lobby.lua) | 9 | ||||
-rw-r--r-- | src/main/lucky_block.lua (renamed from lucky_block.lua) | 0 | ||||
-rw-r--r-- | src/main/mapgen.lua (renamed from mapgen.lua) | 7 | ||||
-rw-r--r-- | src/main/money.lua (renamed from money.lua) | 14 | ||||
-rw-r--r-- | src/main/plots.lua (renamed from plots.lua) | 0 | ||||
-rwxr-xr-x | src/main/ranks.lua (renamed from ranks.lua) | 0 | ||||
-rw-r--r-- | src/main/spawns.lua (renamed from spawns.lua) | 34 | ||||
-rw-r--r-- | src/main/tpa.lua (renamed from tpa.lua) | 0 | ||||
-rw-r--r-- | src/main/trade.lua (renamed from trade.lua) | 0 | ||||
-rw-r--r-- | src/onload/lava_cooling.lua (renamed from lava_cooling.lua) | 20 | ||||
-rw-r--r-- | src/onload/lobby_load.lua | 1 | ||||
-rw-r--r-- | src/onload/nether_portal.lua | 9 | ||||
-rw-r--r-- | src/onload/sapling_mutation.lua | 1 | ||||
-rw-r--r-- | src/onload/shop.lua | 49 | ||||
-rw-r--r-- | src/onload/spawn.lua | 34 | ||||
-rw-r--r-- | src/onload/void.lua | 4 |
24 files changed, 149 insertions, 152 deletions
@@ -10,43 +10,28 @@ do end end -function skycraft.get_far_node(pos) - local node = minetest.get_node(pos) - if node.name ~= "ignore" then - return node - end - minetest.get_voxel_manip():read_from_map(pos, pos) - return minetest.get_node(pos) -end - -function skycraft.find_free_position_near(pos) - local tries = { - {x = 1, y = 0, z = 0}, - {x = -1, y = 0, z = 0}, - {x = 0, y = 0, z = 1}, - {x = 0, y = 0, z = -1}, - } - for _, d in pairs(tries) do - local p = vector.add(pos, d) - if not minetest.registered_nodes[minetest.get_node(p).name].walkable then - return p, true - end - end - return pos, false -end - -minetest.register_privilege("skycraft", "Use Skycraft commands") - minetest.register_on_shutdown(function() local file = io.open(minetest.get_worldpath() .. "/skycraft", "w") file:write(minetest.serialize(skycraft.savedata)) file:close() end) -do - local modpath = minetest.get_modpath("skycraft") - local modules = {"random", "commands", "ranks", "plots", "spawns", "mapgen", "request", "tpa", "trade", "lobby", "money", "lucky_block", "nether_portal", "lava_cooling", "flower_spread", "shop"} - for _, m in pairs(modules) do - dofile(modpath .. "/" .. m .. ".lua") +minetest.register_privilege("skycraft", "Use Skycraft commands") + +local modules = { + common = {"common", "random" , "request"}, + main = {"commands", "flower_spread", "lobby", "lucky_block", "mapgen", "money", "plots", "ranks", "spawns", "tpa", "trade"}, + onload = {"lava_cooling", "lobby_load", "nether_portal", "sapling_mutation", "shop", "spawn", "void"} +} +local modpath = minetest.get_modpath("skycraft") +local function load_module(m) + for _, f in pairs(modules[m]) do + dofile(modpath .. "/src/" .. m .. "/" .. f .. ".lua") end end +load_module("common") +load_module("main") +minetest.register_on_mods_loaded(function() + load_module("onload") +end) + diff --git a/nether_portal.lua b/nether_portal.lua deleted file mode 100644 index 1c3dc0b..0000000 --- a/nether_portal.lua +++ /dev/null @@ -1,10 +0,0 @@ -minetest.register_on_mods_loaded(function() - local old_light_nether_portal = mcl_portals.light_nether_portal - function mcl_portals.light_nether_portal(pos) - if mcl_worlds.pos_to_dimension(pos) == "nether" then - return false - else - return old_light_nether_portal(pos) - end - end -end) diff --git a/shop.lua b/shop.lua deleted file mode 100644 index 3eb2a1a..0000000 --- a/shop.lua +++ /dev/null @@ -1,36 +0,0 @@ -minetest.register_on_mods_loaded(function() - for nodename, nodedef in pairs(minetest.registered_nodes) do - if nodename:find("mcl_signs:") then - minetest.override_item(nodename, { - on_rightclick = function(pos, node, player, itemstack, pointed_thing) - if pos.y < 5000 then return end - 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 - func, frameoffset = skycraft.buy, -1 - elseif action == "Sell" then - func, frameoffset = skycraft.sell, 1 - else - return - end - local framepos = vector.add(pos, {x = 0, y = frameoffset, z = 0}) - if minetest.get_node(framepos).name ~= "mcl_itemframes:item_frame" then return end - local inv = minetest.get_meta(framepos):get_inventory() - if inv:is_empty("main") then return end - local itemstack = inv:get_stack("main", 1) - func(player, itemstack:get_name() .. " " .. tostring(amount), price) - end, - }) - end - end -end) diff --git a/src/common/common.lua b/src/common/common.lua new file mode 100644 index 0000000..2288a4d --- /dev/null +++ b/src/common/common.lua @@ -0,0 +1,24 @@ +function skycraft.get_far_node(pos) + local node = minetest.get_node(pos) + if node.name ~= "ignore" then + return node + end + minetest.get_voxel_manip():read_from_map(pos, pos) + return minetest.get_node(pos) +end + +function skycraft.find_free_position_near(pos) + local tries = { + {x = 1, y = 0, z = 0}, + {x = -1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z = -1}, + } + for _, d in pairs(tries) do + local p = vector.add(pos, d) + if not minetest.registered_nodes[minetest.get_node(p).name].walkable then + return p, true + end + end + return pos, false +end diff --git a/random.lua b/src/common/random.lua index 4fbbed3..4fbbed3 100644 --- a/random.lua +++ b/src/common/random.lua diff --git a/request.lua b/src/common/request.lua index 0b11163..0b11163 100644 --- a/request.lua +++ b/src/common/request.lua diff --git a/commands.lua b/src/main/commands.lua index 892df8f..892df8f 100755 --- a/commands.lua +++ b/src/main/commands.lua diff --git a/flower_spread.lua b/src/main/flower_spread.lua index cf7bf22..cf7bf22 100644 --- a/flower_spread.lua +++ b/src/main/flower_spread.lua diff --git a/lobby.lua b/src/main/lobby.lua index adb8c5d..791149e 100644 --- a/lobby.lua +++ b/src/main/lobby.lua @@ -55,6 +55,7 @@ minetest.register_chatcommand("shop", { end end }) + minetest.register_on_joinplayer(function(player) minetest.after(0.5, skycraft.join_lobby, player:get_player_name()) end) @@ -69,11 +70,3 @@ end) minetest.register_on_player_hpchange(function(player, hp_change) return (player:get_pos().y > 5000) and 0 or hp_change end, true) - -minetest.register_on_mods_loaded(function() - function mcl_spawn.get_world_spawn_pos() - return skycraft.lobby_pos - end -end) - -minetest.after(0.5, skycraft.lobby_tick) diff --git a/lucky_block.lua b/src/main/lucky_block.lua index 93cc4c6..93cc4c6 100644 --- a/lucky_block.lua +++ b/src/main/lucky_block.lua diff --git a/mapgen.lua b/src/main/mapgen.lua index fede7b7..4375831 100644 --- a/mapgen.lua +++ b/src/main/mapgen.lua @@ -31,10 +31,3 @@ minetest.register_on_generated(function(minp, maxp) vm:update_liquids() vm:write_to_map() end) - -minetest.register_on_mods_loaded(function() - function mcl_worlds.is_in_void(pos) - local res = minetest.get_node(vector.floor(pos)).name == "mcl_core:void" - return res, res - end -end) diff --git a/money.lua b/src/main/money.lua index 192ee11..cf720b1 100644 --- a/money.lua +++ b/src/main/money.lua @@ -22,20 +22,6 @@ function skycraft.give_money(player, amount) minetest.chat_send_player(player:get_player_name(), minetest.colorize("#009EFF", "$" .. tostring(amount)) .. " added to your account.") end -function skycraft.sell(player, item, money) - local inv = player:get_inventory() - if not inv:contains_item("main", item) then return minetest.chat_send_player(player:get_player_name(), "You don't have enough items!") end - inv:remove_item("main", item) - skycraft.give_money(player, money) -end - -function skycraft.buy(player, item, money) - local inv = player:get_inventory() - if not inv:room_for_item("main", item) then return minetest.chat_send_player(player:get_player_name(), "You don't have enough space in your inventory!") end - if not skycraft.take_money(player, money) then return end - inv:add_item("main", item) -end - local money_chatcommand_def = { description = "Show your balance", func = function(name) diff --git a/plots.lua b/src/main/plots.lua index 9162879..9162879 100644 --- a/plots.lua +++ b/src/main/plots.lua diff --git a/ranks.lua b/src/main/ranks.lua index 5869edb..5869edb 100755 --- a/ranks.lua +++ b/src/main/ranks.lua diff --git a/spawns.lua b/src/main/spawns.lua index d56afbe..b389160 100644 --- a/spawns.lua +++ b/src/main/spawns.lua @@ -47,37 +47,3 @@ minetest.register_on_respawnplayer(function(player) player:set_pos(spawn) return true end) - -minetest.register_on_mods_loaded(function() - function mcl_spawn.get_spawn_pos(player) - local name = player:get_player_name() - local spawn, custom_spawn - local bed_spawn = player:get_meta():get_string("mcl_beds:spawn") - if bed_spawn and bed_spawn ~= "" then - spawn, custom_spawn = minetest.string_to_pos(bed_spawn), true - end - if spawn and custom_spawn then - local node_bed = skycraft.get_far_node(spawn) - local node_up1 = skycraft.get_far_node(vector.add(spawn, {x = 0, y = 1, z = 0})) - local node_up2 = skycraft.get_far_node(vector.add(spawn, {x = 0, y = 2, z = 0})) - local bgroup = minetest.get_item_group(node_bed.name, "bed") - local def1 = minetest.registered_nodes[node_up1.name] - local def2 = minetest.registered_nodes[node_up2.name] - if bgroup ~= 1 and bgroup ~= 2 or def1.walkable or def2.walkable or def1.damage_per_second and def1.damage_per_second > 0 or def2.damage_per_second and def2.damage_per_second > 0 then - if bgroup ~= 1 and bgroup ~= 2 then - mcl_spawn.set_spawn_pos(player, nil) - end - spawn, custom_spawn = nil, false - minetest.chat_send_player(name, minetest.get_translator("mcl_beds")("Your spawn bed was missing or blocked.")) - end - end - if not spawn then - spawn = mcl_spawn.get_world_spawn_pos(), false - end - local island_spawn = skycraft.get_spawn(player) - if not custom_spawn and island_spawn then - spawn = vector.add(island_spawn, skycraft.spawn_offset) - end - return spawn, custom_spawn - end -end) diff --git a/tpa.lua b/src/main/tpa.lua index 5489d96..5489d96 100644 --- a/tpa.lua +++ b/src/main/tpa.lua diff --git a/trade.lua b/src/main/trade.lua index dcd3ae7..dcd3ae7 100644 --- a/trade.lua +++ b/src/main/trade.lua diff --git a/lava_cooling.lua b/src/onload/lava_cooling.lua index 3494e38..92700af 100644 --- a/lava_cooling.lua +++ b/src/onload/lava_cooling.lua @@ -9,17 +9,15 @@ skycraft.ores:add_choice("mcl_core:stone_with_redstone", 10) skycraft.ores:add_choice("mcl_core:stone_with_diamond", 5) skycraft.ores:calc_csum() -minetest.register_on_mods_loaded(function() - for k, v in pairs(minetest.registered_abms) do - if v.label == "Lava cooling" then - local old_func = v.action - v.action = function(pos, node, active_object_count, active_object_count_wider) - old_func(pos, node, active_object_count, active_object_count_wider) - if minetest.get_node(pos).name == "mcl_core:cobble" then - minetest.set_node(pos, {name = skycraft.ores:choose()}) - end +for k, v in pairs(minetest.registered_abms) do + if v.label == "Lava cooling" then + local old_func = v.action + v.action = function(pos, node, active_object_count, active_object_count_wider) + old_func(pos, node, active_object_count, active_object_count_wider) + if minetest.get_node(pos).name == "mcl_core:cobble" then + minetest.set_node(pos, {name = skycraft.ores:choose()}) end - break end + break end -end) +end diff --git a/src/onload/lobby_load.lua b/src/onload/lobby_load.lua new file mode 100644 index 0000000..0236e46 --- /dev/null +++ b/src/onload/lobby_load.lua @@ -0,0 +1 @@ +skycraft.lobby_tick() diff --git a/src/onload/nether_portal.lua b/src/onload/nether_portal.lua new file mode 100644 index 0000000..28a861b --- /dev/null +++ b/src/onload/nether_portal.lua @@ -0,0 +1,9 @@ +local old_light_nether_portal = mcl_portals.light_nether_portal +function mcl_portals.light_nether_portal(pos) + if mcl_worlds.pos_to_dimension(pos) == "nether" then + return false + else + return old_light_nether_portal(pos) + end +end + diff --git a/src/onload/sapling_mutation.lua b/src/onload/sapling_mutation.lua new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/onload/sapling_mutation.lua @@ -0,0 +1 @@ + diff --git a/src/onload/shop.lua b/src/onload/shop.lua new file mode 100644 index 0000000..cffafcf --- /dev/null +++ b/src/onload/shop.lua @@ -0,0 +1,49 @@ +function skycraft.sell(player, item, money) + local inv = player:get_inventory() + if not inv:contains_item("main", item) then return minetest.chat_send_player(player:get_player_name(), "You don't have enough items!") end + inv:remove_item("main", item) + skycraft.give_money(player, money) +end + +function skycraft.buy(player, item, money) + local inv = player:get_inventory() + if not inv:room_for_item("main", item) then return minetest.chat_send_player(player:get_player_name(), "You don't have enough space in your inventory!") end + if not skycraft.take_money(player, money) then return end + inv:add_item("main", item) +end + +for nodename, nodedef in pairs(minetest.registered_nodes) do + if nodename:find("mcl_signs:") then + minetest.override_item(nodename, { + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + if pos.y < 5000 then return end + 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 + func, frameoffset = skycraft.buy, -1 + elseif action == "Sell" then + func, frameoffset = skycraft.sell, 1 + else + return + end + local framepos = vector.add(pos, {x = 0, y = frameoffset, z = 0}) + if minetest.get_node(framepos).name ~= "mcl_itemframes:item_frame" then return end + local inv = minetest.get_meta(framepos):get_inventory() + if inv:is_empty("main") then return end + local itemstack = inv:get_stack("main", 1) + func(player, itemstack:get_name() .. " " .. tostring(amount), price) + end, + }) + end +end + diff --git a/src/onload/spawn.lua b/src/onload/spawn.lua new file mode 100644 index 0000000..547b331 --- /dev/null +++ b/src/onload/spawn.lua @@ -0,0 +1,34 @@ +function mcl_spawn.get_world_spawn_pos() + return skycraft.lobby_pos +end +function mcl_spawn.get_spawn_pos(player) + local name = player:get_player_name() + local spawn, custom_spawn + local bed_spawn = player:get_meta():get_string("mcl_beds:spawn") + if bed_spawn and bed_spawn ~= "" then + spawn, custom_spawn = minetest.string_to_pos(bed_spawn), true + end + if spawn and custom_spawn then + local node_bed = skycraft.get_far_node(spawn) + local node_up1 = skycraft.get_far_node(vector.add(spawn, {x = 0, y = 1, z = 0})) + local node_up2 = skycraft.get_far_node(vector.add(spawn, {x = 0, y = 2, z = 0})) + local bgroup = minetest.get_item_group(node_bed.name, "bed") + local def1 = minetest.registered_nodes[node_up1.name] + local def2 = minetest.registered_nodes[node_up2.name] + if bgroup ~= 1 and bgroup ~= 2 or def1.walkable or def2.walkable or def1.damage_per_second and def1.damage_per_second > 0 or def2.damage_per_second and def2.damage_per_second > 0 then + if bgroup ~= 1 and bgroup ~= 2 then + mcl_spawn.set_spawn_pos(player, nil) + end + spawn, custom_spawn = nil, false + minetest.chat_send_player(name, minetest.get_translator("mcl_beds")("Your spawn bed was missing or blocked.")) + end + end + if not spawn then + spawn = mcl_spawn.get_world_spawn_pos(), false + end + local island_spawn = skycraft.get_spawn(player) + if not custom_spawn and island_spawn then + spawn = vector.add(island_spawn, skycraft.spawn_offset) + end + return spawn, custom_spawn +end diff --git a/src/onload/void.lua b/src/onload/void.lua new file mode 100644 index 0000000..c5e67df --- /dev/null +++ b/src/onload/void.lua @@ -0,0 +1,4 @@ +function mcl_worlds.is_in_void(pos) + local res = minetest.get_node(vector.floor(pos)).name == "mcl_core:void" + return res, res +end |