aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2020-06-07 18:34:21 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2020-06-07 18:34:21 +0200
commit20b8961640b6c22d4149f7268d403cb4609a03fb (patch)
tree0acdb70090ee8db3e77b5a5ad4573cdd13503e8f
parentcc84f066b001f4ea875b115ace6d533d1bc8b4f3 (diff)
downloadskycraft-20b8961640b6c22d4149f7268d403cb4609a03fb.tar.xz
New file Structure
-rwxr-xr-xinit.lua49
-rw-r--r--nether_portal.lua10
-rw-r--r--shop.lua36
-rw-r--r--src/common/common.lua24
-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-xsrc/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-xsrc/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.lua1
-rw-r--r--src/onload/nether_portal.lua9
-rw-r--r--src/onload/sapling_mutation.lua1
-rw-r--r--src/onload/shop.lua49
-rw-r--r--src/onload/spawn.lua34
-rw-r--r--src/onload/void.lua4
24 files changed, 149 insertions, 152 deletions
diff --git a/init.lua b/init.lua
index 4b0d007..842cab8 100755
--- a/init.lua
+++ b/init.lua
@@ -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