From 5fcd8e817eeafd85c5fdaa94805bb97758ba93f8 Mon Sep 17 00:00:00 2001 From: Giov4 Date: Sun, 13 Sep 2020 21:47:11 +0200 Subject: [PATCH] Added kits system --- SETTINGS.lua | 48 ++++++ TUTORIAL.txt | 14 +- _arena_lib/arena_manager.lua | 1 + _kits/formspec.lua | 96 +++++++++++ _storage/storage_manager.lua | 18 ++ commands.lua | 317 ++++++++++++++++++++++++++++++----- init.lua | 5 +- locale/skywars.it.tr | 18 +- locale/template.txt | 16 +- textures/Kits.png | Bin 0 -> 1848 bytes textures/blocks.png | Bin 0 -> 209 bytes textures/bow.png | Bin 0 -> 216 bytes textures/sword.png | Bin 0 -> 227 bytes 13 files changed, 485 insertions(+), 48 deletions(-) create mode 100644 _kits/formspec.lua create mode 100644 _storage/storage_manager.lua create mode 100644 textures/Kits.png create mode 100644 textures/blocks.png create mode 100644 textures/bow.png create mode 100644 textures/sword.png diff --git a/SETTINGS.lua b/SETTINGS.lua index bf1ef58..e336d08 100644 --- a/SETTINGS.lua +++ b/SETTINGS.lua @@ -36,3 +36,51 @@ skywars_settings.show_minimap = false -- The players walking speed when ther're playing a match skywars_settings.player_speed = 1 + + + + +-- HUDS SETTINGS -- + + +--[[ COORDINATES SYSTEM +For X and Y, 0.0 and 1.0 represent opposite edges of the game window, for example: + * [0.0, 0.0] is the top left corner of the game window + * [1.0, 1.0] is the bottom right of the game window + * [0.5, 0.5] is the center of the game window +--]] + + + +-- The texture background for the kit menu +skywars_settings.hud__kit_background = "Kits.png" + +-- The width of the bacgkround texture in real coordinates, +-- a unit of measurement which is roughly around 64 pixels, but +-- varies based on the screen density and scaling settings of the client +skywars_settings.background_width = 12 + +-- The height of the bacgkround texture in real coordinates +skywars_settings.background_height = 12 + +-- The x position of the first buttons row +skywars_settings.starting_x = 2.2 + +-- The y position of the first buttons row +skywars_settings.starting_y = 6.5 + +-- The horizontal distance betweek buttons in real coordinates +skywars_settings.distance_x = 3 + +-- The vertical distance betweek buttons in real coordinates +skywars_settings.distance_y = 3 + +-- The amount of buttons in a row +skywars_settings.buttons_per_row = 3 + +-- The buttons width in real coordinates +skywars_settings.buttons_width = 1.7 + +-- The buttons height in real coordinates +skywars_settings.buttons_height = 1.7 + diff --git a/TUTORIAL.txt b/TUTORIAL.txt index c78f689..d39fcb3 100644 --- a/TUTORIAL.txt +++ b/TUTORIAL.txt @@ -59,7 +59,19 @@ sure to reload the server, so that it can be loaded correctly, and remember that the old schematic won't be deleted! -6) Enabling the arena using +6) (Optional) Creating and setting the kits using: + +/skywars createkit : texture name is the texture +that the kit button will have in the selector menu at the start of the match, +it must be a file name that you put in the /textures folder + +/skywars additem : with this you can add items to it + +/skywars arenakit add : each arena has a "kits" property +that contains the choosable kits, with this command you add one to it + + +7) Enabling the arena using /skywars enable diff --git a/_arena_lib/arena_manager.lua b/_arena_lib/arena_manager.lua index be46717..b24132f 100644 --- a/_arena_lib/arena_manager.lua +++ b/_arena_lib/arena_manager.lua @@ -19,6 +19,7 @@ arena_lib.on_start("skywars", function(arena) local player = minetest.get_player_by_name(pl_name) skywars.generate_HUD(arena, pl_name) + skywars.show_kit_selector(pl_name, arena) player:set_physics_override({speed=arena.players[pl_name].speed}) -- saving original speed arena.players[pl_name].speed = player:get_physics_override().speed diff --git a/_kits/formspec.lua b/_kits/formspec.lua new file mode 100644 index 0000000..2afd509 --- /dev/null +++ b/_kits/formspec.lua @@ -0,0 +1,96 @@ +local function select_kit(pl_name, kit_items) + local player_inv = minetest.get_player_by_name(pl_name):get_inventory() + + for i=1, #kit_items do + player_inv:add_item("main", ItemStack(kit_items[i])) + end +end + + + +local function create_formspec(arena) + local width = 5 + local height = 6 + + local formspec = { + "formspec_version[3]", + "size[12,12]", + "position[0.5, 0.5]", + "anchor[0.5,0.5]", + "no_prepend[]", + "bgcolor[#00000000;]", + "background[0,0;"..skywars_settings.background_width..","..skywars_settings.background_height..";"..skywars_settings.hud__kit_background..";true]", + "style_type[image_button;border=false]" + } + + local buttons_per_row = skywars_settings.buttons_per_row + local distance_x = skywars_settings.distance_x + local distance_y = skywars_settings.distance_y + local offset_x = 0 + local offset_y = 0 + local kits = skywars.load_kits() + + -- generates the formspec buttons + for i=1, #arena.kits do + local name = arena.kits[i] + local x = skywars_settings.starting_x + offset_x + local y = skywars_settings.starting_y + offset_y + + -- if offset_x has reached its maximum amount then reset it and increase offset_y + if offset_x == distance_x * (buttons_per_row-1) then + offset_y = offset_y + distance_y + offset_x = 0 + else + offset_x = offset_x + distance_x + end + + local kit_items = "" + -- generating the item description (a list of all the items in the kit) + if kits[name].items then + for j=1, #kits[name].items do + local item_name = kits[name].items[j].name + + -- if the string is "mod:item" it becomes "item" + if string.match(item_name, ":") then + local split_name = string.split(item_name, ":") + item_name = split_name[1] + end + kit_items = kit_items .. "x" .. kits[name].items[j].count .. " " .. item_name .. "\n" + end + end + + table.insert(formspec, "image_button["..x..","..y..";"..skywars_settings.buttons_width..","..skywars_settings.buttons_height..";" ..kits[name].texture.. ";"..name..";]") + table.insert(formspec, "tooltip["..name..";"..minetest.formspec_escape(kit_items).."]") + end + + return table.concat(formspec, "") +end + + + +function skywars.show_kit_selector(pl_name, arena) + if #arena.kits == 0 then return end + + minetest.show_formspec(pl_name, "skywars:kit_selector", create_formspec(arena)) +end + + + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "skywars:kit_selector" then + return + end + + local pl_name = player:get_player_name() + local arena = arena_lib.get_arena_by_player(pl_name) + local kits = skywars.load_kits() + + -- if the pressed button's name is equal to one of the kits in the arena then select it + for i=1, #arena.kits do + local name = arena.kits[i] + if fields[name] then + select_kit(pl_name, kits[name].items) + minetest.close_formspec(pl_name, "skywars:kit_selector") + end + end +end) \ No newline at end of file diff --git a/_storage/storage_manager.lua b/_storage/storage_manager.lua new file mode 100644 index 0000000..e3c5fd4 --- /dev/null +++ b/_storage/storage_manager.lua @@ -0,0 +1,18 @@ +local storage = minetest.get_mod_storage() + + +function skywars.load_kits() + local kits = minetest.deserialize(storage:get_string("kits")) + + if kits == "" or kits == nil then + kits = {} + end + + return kits +end + + + +function skywars.overwrite_kits(kits_table) + storage:set_string("kits", minetest.serialize(kits_table)) +end \ No newline at end of file diff --git a/commands.lua b/commands.lua index 9be99ed..c7eab2a 100644 --- a/commands.lua +++ b/commands.lua @@ -1,5 +1,3 @@ -local mod = "skywars" - ChatCmdBuilder.new("skywars", function(cmd) @@ -68,8 +66,20 @@ function(cmd) sure to reload the server, so that it can be loaded correctly, and remember that the old schematic won't be deleted! + + 6) (Optional) Creating and setting the kits using: - 6) Enabling the arena using + /skywars createkit : texture name is the texture + that the kit button will have in the selector menu at the start of the match, + it must be a file name that you put in the /textures folder + + /skywars additem : with this you can add items to it + + /skywars arenakit add : each arena has a "kits" property + that contains the choosable kits, with this command you add one to it + + + 7) Enabling the arena using /skywars enable @@ -159,34 +169,34 @@ function(cmd) -- ! CHEST CMDS ! -- -------------------- - cmd:sub("addtreasure :arena :treasure :rarity:number :preciousness:int :count:int", function(sender, arena_name, treasure_name, rarity, preciousness, count) local id, arena = arena_lib.get_arena_by_name("skywars", arena_name) if arena == nil then - skywars.print_error(sender, skywars.T("Arena not found!")) + skywars.print_error(sender, skywars.T("Arena not found!")) return elseif arena.enabled == true then - skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) + skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) return elseif count <= 0 then - skywars.print_error(sender, skywars.T("Count has to be greater than 0!")) + skywars.print_error(sender, skywars.T("Count has to be greater than 0!")) return elseif rarity < 2 then - skywars.print_error(sender, skywars.T("Rarity has to be greater than 2!")) + skywars.print_error(sender, skywars.T("Rarity has to be greater than 2!")) return elseif rarity > 20 then - skywars.print_error(sender, skywars.T("Rarity has to be smaller than 21!")) + skywars.print_error(sender, skywars.T("Rarity has to be smaller than 21!")) return elseif ItemStack(treasure_name):is_known() == false then - skywars.print_error(sender, skywars.T("@1 doesn't exist!", treasure_name)) + skywars.print_error(sender, skywars.T("@1 doesn't exist!", treasure_name)) return end table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness}) - skywars.print_msg(sender, skywars.T("Treasure added!")) + arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false) + skywars.print_msg(sender, skywars.T("@1 added to @2!", treasure_name, arena_name)) end) @@ -196,10 +206,10 @@ function(cmd) local found = false if arena == nil then - skywars.print_error(sender, skywars.T("Arena not found!")) + skywars.print_error(sender, skywars.T("Arena not found!")) return elseif arena.enabled == true then - skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) + skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) return end @@ -213,8 +223,8 @@ function(cmd) arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false) - if found then skywars.print_msg(sender, skywars.T("Treasure removed!")) - else skywars.print_error(sender, skywars.T("Treasure not found!")) end + if found then skywars.print_msg(sender, skywars.T("@1 removed from @2", treasure_name, arena_name)) + else skywars.print_error(sender, skywars.T("Treasure not found!")) end end) @@ -225,16 +235,16 @@ function(cmd) local found = false if from_arena == nil then - skywars.print_error(sender, skywars.T("First arena not found!")) + skywars.print_error(sender, skywars.T("First arena not found!")) return elseif to_arena == nil then - skywars.print_error(sender, skywars.T("Second arena not found!")) + skywars.print_error(sender, skywars.T("Second arena not found!")) return elseif from_arena == to_arena then - skywars.print_error(sender, skywars.T("The arenas must be different!")) + skywars.print_error(sender, skywars.T("The arenas must be different!")) return elseif to_arena.enabled == true then - skywars.print_error(sender, skywars.T("@1 must be disabled!", to)) + skywars.print_error(sender, skywars.T("@1 must be disabled!", to)) return end @@ -244,7 +254,7 @@ function(cmd) end arena_lib.change_arena_property(sender, "skywars", to, "treasures", to_arena.treasures, false) - skywars.print_msg(sender, skywars.T("@1 treasures have been copied to @2!", from, to)) + skywars.print_msg(sender, skywars.T("@1 treasures have been copied to @2!", from, to)) end) @@ -254,11 +264,11 @@ function(cmd) local found = false if arena == nil then - skywars.print_error(sender, skywars.T("Arena not found!")) + skywars.print_error(sender, skywars.T("Arena not found!")) return end - skywars.print_msg(sender, skywars.T("TREASURES LIST:")) + skywars.print_msg(sender, skywars.T("Treasures list:")) for i=1, #arena.treasures do local treasure = arena.treasures[i] skywars.print_msg(sender, tostring(i) .. ".\n" .. @@ -287,17 +297,17 @@ function(cmd) } if arena == nil then - skywars.print_error(sender, skywars.T("Arena not found!")) + skywars.print_error(sender, skywars.T("Arena not found!")) return elseif arena.enabled == true then - skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) + skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) return elseif t_min <= 0 or t_max <= 0 then - skywars.print_error(sender, skywars.T("The minimum or maximum amount of treasures has to be greater than 0!")) + skywars.print_error(sender, skywars.T("The minimum or maximum amount of treasures has to be greater than 0!")) return end - skywars.print_msg(sender, skywars.T("Chest added!")) + skywars.print_msg(sender, skywars.T("Chest added!")) table.insert(arena.chests, chest) arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false) end) @@ -308,11 +318,11 @@ function(cmd) local found = false if arena == nil then - skywars.print_error(sender, skywars.T("Arena not found!")) + skywars.print_error(sender, skywars.T("Arena not found!")) return end - skywars.print_msg(sender, skywars.T("CHEST LIST:")) + skywars.print_msg(sender, skywars.T("Chest list:")) for i=1, #arena.chests do local chest_pos = tostring(arena.chests[i].pos.x) .. " " .. tostring(arena.chests[i].pos.y) .. " " .. tostring(arena.chests[i].pos.z) skywars.print_msg(sender, skywars.T("ID: @1 - POSITION: @2", arena.chests[i].id, chest_pos)) @@ -326,10 +336,10 @@ function(cmd) local found = false if arena == nil then - skywars.print_error(sender, skywars.T("Arena not found!")) + skywars.print_error(sender, skywars.T("Arena not found!")) return elseif arena.enabled == true then - skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) + skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) return end @@ -343,14 +353,227 @@ function(cmd) arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false) if found then - skywars.print_msg(sender, skywars.T("Chest removed!")) + skywars.print_msg(sender, skywars.T("Chest removed!")) else - skywars.print_error(sender, skywars.T("Chest not found!")) + skywars.print_error(sender, skywars.T("Chest not found!")) end end) + ------------------- + -- ! KITS CMDS ! -- + ------------------- + + cmd:sub("createkit :name :texture", + function(sender, kit_name, texture) + local kits = skywars.load_kits() + + if kits[kit_name] ~= nil then + skywars.print_error(sender, skywars.T("@1 already exists!", kit_name)) + return + end + + kits[kit_name] = {texture = texture, items={}} + skywars.overwrite_kits(kits) + + skywars.print_msg(sender, skywars.T("Kit @1 created!", kit_name)) + end) + + + + cmd:sub("additem :kit :item :count:int", + function(sender, kit_name, item_name, item_count) + local kits = skywars.load_kits() + local itemstack = {} + + if ItemStack(item_name):is_known() == false then + skywars.print_error(sender, skywars.T("@1 doesn't exist!", item_name)) + return + elseif kits[kit_name] == nil then + skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name)) + return + elseif item_count <= 0 then + skywars.print_error(sender, skywars.T("Count has to be greater than 0!")) + return + end + + itemstack.name = item_name + itemstack.count = item_count + + table.insert(kits[kit_name].items, itemstack) + skywars.overwrite_kits(kits) + + skywars.print_msg(sender, skywars.T("@1 added to @2!", item_name, kit_name)) + end) + + + + cmd:sub("deletekit :kit", + function(sender, kit_name) + local kits = skywars.load_kits() + + if kits[kit_name] == nil then + skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name)) + return + end + + kits[kit_name] = nil + skywars.overwrite_kits(kits) + + skywars.print_msg(sender, skywars.T("Kit @1 deleted!", kit_name)) + end) + + + + cmd:sub("removeitem :kit :item", + function(sender, kit_name, item_name) + local kits = skywars.load_kits() + local itemstack = {} + local found = false + + if kits[kit_name] == nil then + skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name)) + return + end + + itemstack.name = item_name + itemstack.count = item_count + + for i=1, #kits[kit_name].items do + if kits[kit_name].items[i].name == item_name then + table.remove(kits[kit_name].items, i) + skywars.overwrite_kits(kits) + found = true + break + end + end + + if found then + skywars.print_msg(sender, skywars.T("@1 removed from @2!", item_name, kit_name)) + else + skywars.print_error(sender, skywars.T("@1 doesn't exist!", item_name)) + end + end) + + + + cmd:sub("getkits", + function(sender) + local kits = skywars.load_kits() + + skywars.print_msg(sender, skywars.T("Kits list:")) + for name in pairs(kits) do + skywars.print_msg(sender, name) + end + end) + + + + cmd:sub("getitems :kit", + function(sender, kit_name) + local kits = skywars.load_kits() + + if kits[kit_name] == nil then + skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name)) + return + end + + skywars.print_msg(sender, skywars.T("@1 items:", kit_name)) + for i=1, #kits[kit_name].items do + skywars.print_msg(sender, "x" .. kits[kit_name].items[i].count .. " " .. kits[kit_name].items[i].name) + end + end) + + + + cmd:sub("arenakit add :arena :kit", + function(sender, arena_name, kit_name) + local kits = skywars.load_kits() + local id, arena = arena_lib.get_arena_by_name("skywars", arena_name) + + if arena == nil then + skywars.print_error(sender, skywars.T("Arena not found!")) + return + elseif arena.enabled == true then + skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) + return + elseif kits[kit_name] == nil then + skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name)) + return + end + + table.insert(arena.kits, kit_name) + + arena_lib.change_arena_property(sender, "skywars", arena_name, "kits", arena.kits, false) + skywars.print_msg(sender, skywars.T("@1 added to @2!", kit_name, arena_name)) + end) + + + + cmd:sub("arenakit remove :arena :kit", + function(sender, arena_name, kit_name) + local kits = skywars.load_kits() + local id, arena = arena_lib.get_arena_by_name("skywars", arena_name) + local found = false + + if arena == nil then + skywars.print_error(sender, skywars.T("Arena not found!")) + return + elseif arena.enabled == true then + skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) + return + elseif kits[kit_name] == nil then + skywars.print_error(sender, skywars.T("@1 doesn't exist!", kit_name)) + return + end + + for i=1, #arena.kits do + if arena.kits[i] == kit_name then + table.remove(arena.kits, i) + found = true + break + end + end + + arena_lib.change_arena_property(sender, "skywars", arena_name, "kits", arena.kits, false) + if found then skywars.print_msg(sender, skywars.T("@1 removed from @2!", kit_name, arena_name)) + else skywars.print_error(sender, skywars.T("Kit not found!")) end + + end) + + + + cmd:sub("copykits :fromarena :toarena", function(sender, from, to) + local id, from_arena = arena_lib.get_arena_by_name("skywars", from) + local id2, to_arena = arena_lib.get_arena_by_name("skywars", to) + local found = false + + if from_arena == nil then + skywars.print_error(sender, skywars.T("First arena not found!")) + return + elseif to_arena == nil then + skywars.print_error(sender, skywars.T("Second arena not found!")) + return + elseif from_arena == to_arena then + skywars.print_error(sender, skywars.T("The arenas must be different!")) + return + elseif to_arena.enabled == true then + skywars.print_error(sender, skywars.T("@1 must be disabled!", to)) + return + end + + to_arena.kits = {} + for i=1, #from_arena.kits do + to_arena.kits[i] = from_arena.kits[i] + end + + arena_lib.change_arena_property(sender, "skywars", to, "kits", to_arena.kits, false) + skywars.print_msg(sender, skywars.T("@1 kits have been copied to @2!", from, to)) + end) + + + ------------------ -- ! MAP CMDS ! -- ------------------ @@ -359,7 +582,7 @@ function(cmd) local player = minetest.get_player_by_name(sender) player:get_meta():set_string("pos1", minetest.serialize(player:get_pos())) - skywars.print_msg(sender, skywars.T("Position saved!")) + skywars.print_msg(sender, skywars.T("Position saved!")) end) @@ -369,7 +592,7 @@ function(cmd) player:get_meta():set_string("pos2", minetest.serialize(player:get_pos())) - skywars.print_msg(sender, skywars.T("Position saved!")) + skywars.print_msg(sender, skywars.T("Position saved!")) end) @@ -382,23 +605,23 @@ function(cmd) local pos2 = minetest.deserialize(player:get_meta():get_string("pos2")) if arena == nil then - skywars.print_error(sender, skywars.T("Arena not found!")) + skywars.print_error(sender, skywars.T("Arena not found!")) return end if arena.enabled == true then - skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) + skywars.print_error(sender, skywars.T("@1 must be disabled!", arena_name)) return end if pos1 == "" or pos2 == "" then - skywars.print_error(sender, skywars.T("Pos1 or pos2 are not set!")) + skywars.print_error(sender, skywars.T("Pos1 or pos2 are not set!")) return end skywars.create_schematic(sender, {x = pos1.x, y = pos1.y, z = pos1.z}, {x = pos2.x, y = pos2.y, z = pos2.z}, name, arena) - skywars.print_msg(sender, skywars.T("Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic=PATH)", name, arena_name)) + skywars.print_msg(sender, skywars.T("Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic=PATH)", name, arena_name)) end) @@ -464,6 +687,24 @@ end, { - getpos + + - createkit + + - deletekit + + - additem + + - removeitem + + - arenakit add + + - arenakit remove + + - getkits + + - getitems + + - copykits ]], privs = { skywars_admin = true } }) diff --git a/init.lua b/init.lua index 110c535..b0145ce 100644 --- a/init.lua +++ b/init.lua @@ -19,7 +19,8 @@ arena_lib.register_minigame("skywars", { treasures = {}, -- items to put in the chests schematic = "", pos1 = {}, - reset = false + reset = false, + kits = {} }, player_properties = { killstreak = 0, @@ -30,12 +31,14 @@ arena_lib.register_minigame("skywars", { dofile(minetest.get_modpath("skywars") .. "/chatcmdbuilder.lua") +dofile(minetest.get_modpath("skywars") .. "/_storage/storage_manager.lua") dofile(minetest.get_modpath("skywars") .. "/_hud/hud_manager.lua") dofile(minetest.get_modpath("skywars") .. "/commands.lua") dofile(minetest.get_modpath("skywars") .. "/_chest_handler/chest_setter.lua") dofile(minetest.get_modpath("skywars") .. "/_chest_handler/treasures.lua") dofile(minetest.get_modpath("skywars") .. "/_map_handler/map_create.lua") dofile(minetest.get_modpath("skywars") .. "/_arena_lib/arena_manager.lua") +dofile(minetest.get_modpath("skywars") .. "/_kits/formspec.lua") diff --git a/locale/skywars.it.tr b/locale/skywars.it.tr index 66ab2a9..dab425e 100644 --- a/locale/skywars.it.tr +++ b/locale/skywars.it.tr @@ -8,11 +8,9 @@ Count has to be greater than 0!=La quantità deve essere maggiore di 0 Rarity has to be greater than 2!=La rarità deve essere maggiore di 2! Rarity has to be smaller than 21!=La rarità deve essere minore di 21! @1 doesn't exist!=@1 non esiste! -Treasure added!=Tesoro aggiunto! -Treasure removed!=Tesoro rimosso! Treasure not found!=Tesoro non trovato! The minimum or maximum amount of treasures has to be greater than 0!=Il numero minimo o massimo di tesori deve essere maggiore di 0! -TREASURES LIST:=LISTA DEI TESORI: +Treasures list:=Lista dei tesori: First arena not found!=Prima arena non trovata! Second arena not found!=Seconda arena non trovata! @1 treasures have been copied to @2!=I tesori di @1 sono stati copiati in @2! @@ -22,7 +20,7 @@ name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=nome: @1 @nrarità: @2 @npr Chest added!=Cassa aggiunta! Chest removed!=Cassa rimossa! Chest not found!=Cassa non trovata! -CHEST LIST:=LISTA DELLE CASSE: +Chest list:=Lista delle casse: ID: @1 - POSITION: @2=ID: @1 - POSIZIONE: @2 Position saved!=Posizione salvata Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic@=PATH)=Schematica @1 creata! Puoi usare /skywars info @2 per sapere dove è salvata (vedi schematic@=PERCORSO) @@ -30,4 +28,14 @@ Schematic @1 created! You can use /skywars info @2 to know its folder (see schem @1 must be disabled!=@1 deve essere disabilitata! Pos1 or pos2 are not set!=Pos1 o pos2 non sono impostate @1 was killed by @2=@1 è stato ucciso da @2 -@1 is dead=@1 è morto \ No newline at end of file +@1 is dead=@1 è morto +@1 already exists!=@1 esiste già! +@1 added to @2!=@1 aggiunto a @2 +@1 removed from @2!=@1 rimosso da @2 +Choose a kit=Scegli un kit +Kit @1 created!=Kit @1 creato! +Kit @1 deleted!=Kit @1 eliminato! +Kits list:=Lista dei kit: +@1 items:=Oggetti di @1: +Kit not found!=Kit non trovato! +@1 kits have been copied to @2!=I kit di @1 sono stati copiati in @2! \ No newline at end of file diff --git a/locale/template.txt b/locale/template.txt index ea849be..0684af8 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -11,7 +11,7 @@ Rarity has to be smaller than 21!= Treasure added!= Treasure removed!= Treasure not found!= -TREASURES LIST:= +Treasures list:= The minimum or maximum amount of treasures has to be greater than 0!= First arena not found!= Second arena not found!= @@ -22,7 +22,7 @@ name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4= Chest added!= Chest removed!= Chest not found!= -CHEST LIST:= +Chest list:= ID: @1 - POSITION: @2= Position saved!= Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic@=PATH)= @@ -30,4 +30,14 @@ Schematic @1 created! You can use /skywars info @2 to know its folder (see schem @1 must be disabled!= Pos1 or pos2 are not set!= @1 was killed by @2= -@1 is dead= \ No newline at end of file +@1 is dead= +@1 already exists!= +@1 added to @2!= +@1 removed from @2!= +Choose a kit= +Kit @1 created!= +Kit @1 deleted!= +Kits list:= +@1 items:= +Kit not found!= +@1 kits have been copied to @2!= \ No newline at end of file diff --git a/textures/Kits.png b/textures/Kits.png new file mode 100644 index 0000000000000000000000000000000000000000..f082b9f3ae3d5e127980f990faa5c87ee90596bd GIT binary patch literal 1848 zcmZ8idstF;7(P)bnKoI-yr43h_i0<++Dt`L^3s&ZEj4Tk6`3P5SEh(XWuXOFu2h_w zA(ghwOSa0&bg4BmZ!^RDWW$^w8tM@pvEvTyk3Hu(=RD8(e&6N&-uL@XHYt3ok%74Z z002fI!GUDx{bcz@=|NBO;CK1}pr;K9^p8CDqhjcDj%5(8Z3g^flM&kijR?TUrL;u{ z8j~IS%Y$iP4hGvAP>o6*^{}zOR?VUEFpe(WpByUA$|qMFe{$0CLqn{8@Ltm9re^$8 zry}h|ug8VO&;>4KR<=urr-qr}xK{i^J~cab>Qwg3{)?}7Hom)%o=^B`LdvCwmLN&y zNFc#E&#*@S1_ktr&_CgB0Cay7S_*ttxXo@n92dLb_5~3$0pt=_5X{m0@uin7LmAzl z&APon=e^N=bs+FwOZyvRaG|!dZsjWp%ORs}IycrQ?UWZ-lJ56#xA2o4p6>X{}ZtS)3(TsJ)#$YJ%YcuBN9mT;}?JX$YBDHUI8)QQo$w zx~{}pgT3}`J{mE2ioX}6wR`fA#eA`(x4ubvBw6F~XGw-Gd6SS(-%`TrdF7WjsW?f$ zN=r;_7zj5xYl=h|TmkTm2brqfDIl^|=#%g1x8ax_Cwt5Nt;aZoCkPBs?y-(drFP7$ z@3`h`nE+}R=~I(s$v4hetm#~V=ORwr+2@+0yqy${V~4hs@I8~-S(>_`Jb&e!T1}SI z6Qv}j_XE|gS1G|BABVwU1la`N3~I#w7bu>)-=~A3e5{n@U_ra*?M?!qPKBAU1MXAL zIL|LEjJ7Tg_VKOF9)_(JU6%Cxo6mg$g?T|cJ^t&6YEq&yUJnPymN8e&6hz{eVYJwg_KU?nXjzVtOYMbLk7j8d(ZT&~)^1FxH2S+T zzCZ*ELrALwchqCQ&JlA1fGPv|S8A)k}#T!$z{Yt?m%=%e`s`I9Z>KX?||01pH=+xXB zzIkFTkO1jnZyNa_tCH#TbLPVyMrj5^IB++DyEAdbqab$E2xCC`EM4^oY)}+*J$#p5 z?XC-3i`qlub8YW46bDlWnBMt$@*dw=cGR4^1v8Y@S21R633NLE!RK-aA}U{eeI#>; zL2u-f@B_6wii;u)4_P|PG7cqSgVjaw5b`)cs%K5^})my*lo}p-M)t9 zSr`Pj3u2wZ&LZmo99k7R_meC2g98NEn!`o(Vws#h0-YTqM`X;@8BeY!F@DCK_m{7L zVL_^dCS`e(l-oB?-@)4JGuP+cO!QakG|*Co+EPqOjXP+&HcN-0JCQxDjXCcFtsJAp zG`Q^Ll>;dY;-ChLYOl+yt9t@=!$VSy2 z5mpr8ntNM)TqF8zv)OM3OJ)a`#Y5lOr>D$=r5F^17q^x@Di%8)m256W8;<2RO0rZ# zN4LFCCU8Tr(%uv|d9x-)rA^BA_Tm06SH;xG+vE>t-Dn1}ys1T2*o@jRc06tF-E`wk zO+F}l91b&_j&`t{FF&jqnjr@5{(Cy^4y{)XZYZ%2rBO#ZGD=!uK4(otxS3LWA Wu@B=UcnSRxfsml^z^Z__lm7sc{XH-M literal 0 HcmV?d00001 diff --git a/textures/blocks.png b/textures/blocks.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed0cddd5eae56779fb17e919ac7098110339b8c GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^azHH2!3HF=|Jn-zsTrOwjv*eM$!m%}{yNXVx^i}y zae(xhZ`?<<&bgG%?qFd~Gkp9vKmNaPSR2DvzPf_4$Bn)!k!><>l=W9cdR%qL`tXQp zv16}j%>MU&lNQeEvgTYR$(uEc>B+7H7B*AE)c5aJ+j|&=1W(*BOHks<5sgdtHT-9- zv}>8#!)6+mU|%hGRadUk@odMPb#d`%>GGx+Y?7{KIDSxNaZ6tNRG=FfJYD@< J);T3K0RYF4Pd@+v literal 0 HcmV?d00001 diff --git a/textures/bow.png b/textures/bow.png new file mode 100644 index 0000000000000000000000000000000000000000..0d67f9a88724286b7d452a36b13e2ead42b43758 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^azHH2!3HF=|Jn-zsrjBRjv*eM$!m%}{yNXVx^i}y zae(xhZ`?<<&bgG%?qFd~Gkp9vKmNaPSR2DvzPf_4$Bn)!k!><>l=W9cdR%qL`tXQp zv7@hm!g3$eLO+Y!b>EaGosq0`^etli^zcxkMf8CKV(08;NU^623xoA&XjW@70yVqq zE|XT+xh5{wobz0m@O<9%{%KcR7?g{4|2nyRegS8ch??^5jqD7$Gqk0PO9F&}PG#_P L^>bP0l+XkK43<>l=W9cdR%qL`tXQp zv7@h$g+;mAoZR_y{3hL-D1JpnT;arn!>xx4wly^BdRDo|1#Auo`W9zX&3kT}JZ~0L z!xN?_30X2_ABEi?=KQ|d%`wYZ>Iw^Ek%7{74Ub%nzC8=lT=K&0e|{0xb6h)(%}C;A buPuY{HG>}x2VY$Wx|+e$)z4*}Q$iB}$RJkx literal 0 HcmV?d00001