diff --git a/_arena_lib/arena_callbacks.lua b/_arena_lib/arena_callbacks.lua index 059ab35..30eac8d 100644 --- a/_arena_lib/arena_callbacks.lua +++ b/_arena_lib/arena_callbacks.lua @@ -1,6 +1,6 @@ local function add_privs() end local function remove_privs() end -local function create_glass_cage() end +local function create_barrier_cage() end local function keep_teleporting() end local function drop_items() end @@ -17,7 +17,7 @@ arena_lib.on_load("skywars", function(arena) for pl_name in pairs(arena.players) do local player = minetest.get_player_by_name(pl_name) - create_glass_cage(player) + create_barrier_cage(player) player:get_inventory():add_item("main", "skywars:kit_selector") end @@ -40,6 +40,7 @@ arena_lib.on_start("skywars", function(arena) for pl_name in pairs(arena.players) do local player = minetest.get_player_by_name(pl_name) + minetest.sound_play("sw_start", {to_player = pl_name}) add_privs(pl_name) skywars.generate_HUD(arena, pl_name) player:set_physics_override({ @@ -48,7 +49,7 @@ arena_lib.on_start("skywars", function(arena) jump=1 }) skywars.activate_enderpearl(player, arena) - player:get_inventory():remove_item("main", "skywars:kit_selector") + player:get_inventory():remove_item("main", "skywars:kit_selector") end end) @@ -58,6 +59,7 @@ arena_lib.on_celebration("skywars", function(arena, winner_name) for pl_name in pairs(arena.players) do local player = minetest.get_player_by_name(pl_name) + minetest.sound_play("sw_win", {to_player = pl_name}) remove_privs(pl_name) skywars.block_enderpearl(player, arena) end @@ -234,7 +236,7 @@ end -function create_glass_cage(player) +function create_barrier_cage(player) minetest.after(0.1, function() local original_pos = player:get_pos() local glass_nodes = { @@ -253,7 +255,7 @@ function create_glass_cage(player) for _, relative_pos in pairs(glass_nodes) do local node_pos = vector.round(vector.add(original_pos, relative_pos)) if minetest.get_node(node_pos).name == "air" then - minetest.add_node(node_pos, {name="default:glass"}) + minetest.add_node(node_pos, {name="skywars:barrier"}) minetest.after(skywars_settings.loading_time, function() minetest.remove_node(node_pos) end) diff --git a/_chest_handler/treasures.lua b/_chest_handler/treasures.lua index 19b839a..9b6c374 100644 --- a/_chest_handler/treasures.lua +++ b/_chest_handler/treasures.lua @@ -52,6 +52,8 @@ function skywars.select_random_treasures(chest, arena) local random = math.random(1, 100) local treasure_itemstack = treasure_to_itemstack(preciousness_filtered_treasures[j]) + if treasure_itemstack == "error" then return generated_treasures end + if treasure_itemstack and random % (preciousness_filtered_treasures[j].rarity * 10) == 0 then table.insert(generated_treasures, treasure_itemstack) break @@ -73,7 +75,7 @@ function treasure_to_itemstack(treasure) if ItemStack(itemstack):is_known() == false then minetest.log("error","[Skywars Treasures] I was asked to put "..treasure.name.." inside a chest, but it doesn't exist.") - return nil + return "error" end return ItemStack(itemstack) end \ No newline at end of file diff --git a/_map_handler/map_utils.lua b/_map_handler/map_utils.lua index 9c3dde6..520a275 100644 --- a/_map_handler/map_utils.lua +++ b/_map_handler/map_utils.lua @@ -19,6 +19,26 @@ end +minetest.register_node("skywars:barrier", { + description = "Unbreakable transparent node", + drawtype = "airlike", + paramtype = "light", + sunlight_propagates = true, + air_equivalent = true, + drop = "", + inventory_image = "sw_node_barrier.png", + wield_image = "sw_node_barrier.png", + groups = {oddly_breakable_by_hand = 2}, + can_dig = function(pos, player) + if minetest.get_player_privs(player:get_player_name()).skywars_admin then + return true + end + return false + end +}) + + + function skywars.iterate_area_nodes(min_pos, max_pos, func) for x = 1, max_pos.x - min_pos.x do for y = 1, max_pos.y - min_pos.y do diff --git a/_tests/map_reset.lua b/_tests/map_reset.lua index 448da50..219dde7 100644 --- a/_tests/map_reset.lua +++ b/_tests/map_reset.lua @@ -90,9 +90,9 @@ end minetest.register_node("skywars:test_node", { - description = "Skywars test block, don't use it!", + description = "Skywars test node, don't use it!", groups = {crumbly=1, soil=1, dig_immediate=3}, - tiles = {"node_test.png"}, + tiles = {"sw_node_test.png"}, }) diff --git a/depends.txt b/depends.txt deleted file mode 100644 index fa411de..0000000 --- a/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -arena_lib -default \ No newline at end of file diff --git a/mod.conf b/mod.conf index 56e21fb..6c7649a 100644 --- a/mod.conf +++ b/mod.conf @@ -1,4 +1,4 @@ name = skywars description = Skywars is a PvP minigame where players battle each other on floating islands until there is only one survivor remaining. Each player spawns on their own island and when the round begins must prepare for battle before crossing to the other islands and fighting. -depends = arena_lib, default +depends = arena_lib optional_depends = enderpearl, 3d_armor \ No newline at end of file diff --git a/sounds/sw_start.ogg b/sounds/sw_start.ogg new file mode 100644 index 0000000..4a324fd Binary files /dev/null and b/sounds/sw_start.ogg differ diff --git a/sounds/sw_win.ogg b/sounds/sw_win.ogg new file mode 100644 index 0000000..6610a98 Binary files /dev/null and b/sounds/sw_win.ogg differ diff --git a/textures/sw_node_barrier.png b/textures/sw_node_barrier.png new file mode 100644 index 0000000..af804ec Binary files /dev/null and b/textures/sw_node_barrier.png differ diff --git a/textures/node_test.png b/textures/sw_node_test.png similarity index 100% rename from textures/node_test.png rename to textures/sw_node_test.png