From: Elias Fleckenstein Date: Wed, 10 Jun 2020 16:07:54 +0000 (+0200) Subject: LuckyBlock Updates X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=891fc7ef41049e8e29b160eef93b3e9233b4a97f;p=skycraft.git LuckyBlock Updates --- diff --git a/modules.txt b/modules.txt index ebcf94d..8d349fb 100644 --- a/modules.txt +++ b/modules.txt @@ -1 +1 @@ -return {common={"common","random","request","schems",},main={"alpha","commands","flower_spread","god_stick","join_skyblock_mob","lobby","lucky_block","mapgen","money","netherrack_fix","plots","ranks","spawns","tpa","trade","wither_spawn",},onload={"lava_cooling","lobby_grass","monster_egg_stone_block","nether_portal","sapling_mutation","shop","spawn","void",},} \ No newline at end of file +return {common={"common","random","request","schems",},main={"alpha","commands","flower_spread","god_stick","join_skyblock_mob","lobby","lucky_block","mapgen","money","netherrack_fix","plots","ranks","shopping","spawns","tpa","trade","wither_spawn",},onload={"lava_cooling","lobby_grass","monster_egg_stone_block","nether_portal","sapling_mutation","shop_signs","spawn","void",},} \ No newline at end of file diff --git a/src/main/god_stick.lua b/src/main/god_stick.lua index e1ce23d..a405538 100644 --- a/src/main/god_stick.lua +++ b/src/main/god_stick.lua @@ -21,7 +21,7 @@ minetest.register_tool("skycraft:god_stick", { minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage) if hitter:get_wielded_item():get_name() == "skycraft:god_stick" then lightning.strike(player:get_pos()) - minetest.ban_player(player:get_player_name()) + minetest.after(0.5, minetest.ban_player, player:get_player_name()) return true end end) diff --git a/src/main/lucky_block.lua b/src/main/lucky_block.lua index a372b8e..7bb00d4 100644 --- a/src/main/lucky_block.lua +++ b/src/main/lucky_block.lua @@ -24,6 +24,12 @@ end lucky_block:add_blocks({ {"dro", {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel"}, 100}, - {"dro", discs, 1} + {"dro", discs, 1}, + {"spw", "mobs_mc:zombie", 5}, + {"spw", "mobs_mc:spider", 4}, + {"spw", "mobs_mc:skeleton", 2}, + {"spw", "mobs_mc:creeper", 1}, + {"spw", "mobs_mc:enderman", 1}, + }) diff --git a/src/main/shopping.lua b/src/main/shopping.lua new file mode 100644 index 0000000..8e80617 --- /dev/null +++ b/src/main/shopping.lua @@ -0,0 +1,13 @@ +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 diff --git a/src/onload/shop.lua b/src/onload/shop.lua deleted file mode 100644 index cffafcf..0000000 --- a/src/onload/shop.lua +++ /dev/null @@ -1,49 +0,0 @@ -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/shop_signs.lua b/src/onload/shop_signs.lua new file mode 100644 index 0000000..217049e --- /dev/null +++ b/src/onload/shop_signs.lua @@ -0,0 +1,35 @@ +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 +