Merge chest system
commit
762c2bb145
|
@ -0,0 +1,39 @@
|
|||
--[[
|
||||
! WARNING !
|
||||
Don't change the variables' names if you don't know what you're doing
|
||||
|
||||
(skywars_settings.variable_name = value)
|
||||
]]
|
||||
|
||||
|
||||
|
||||
-- ARENA LIB'S SETTINGS --
|
||||
|
||||
-- The table that stores all the global variables, don't touch this.
|
||||
skywars_settings = {}
|
||||
|
||||
-- Where players will be teleported when a match ends.
|
||||
skywars_settings.hub_spawn_point = {x = -177, y = 8.5, z = 247}
|
||||
|
||||
-- The time between the loading state and the start of the match.
|
||||
skywars_settings.loading_time = 5
|
||||
|
||||
-- The time to wait before the loading phase starts. It gets triggered when the minimium amount of players has been reached to start the queue.
|
||||
skywars_settings.queue_waiting_time = 10
|
||||
|
||||
-- The time between the end of the match and the respawn at the hub.
|
||||
skywars_settings.celebration_time = 3
|
||||
|
||||
-- What's going to appear in most of the lines printed by murder.
|
||||
skywars_settings.prefix = "Skywars > "
|
||||
|
||||
-- Whether to show the players nametags while in game.
|
||||
-- false = don't / true = do
|
||||
skywars_settings.show_nametags = false
|
||||
|
||||
-- Whether to allow players to use the builtin minimap function.
|
||||
skywars_settings.show_minimap = false
|
||||
|
||||
-- The players walking speed when ther're playing a match
|
||||
skywars_settings.player_speed = 1
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
|
||||
|
||||
These are the steps to follow in order to create and configure an
|
||||
arena:
|
||||
|
||||
|
||||
1) Creating the arena using:
|
||||
|
||||
/skywars create <arena name> [min players] [max players]
|
||||
where min players is equal to the minimun amount of players to make
|
||||
the arena start, and max players to the maximum amount of players that
|
||||
an arena can have.
|
||||
|
||||
|
||||
2) Editing the arena using:
|
||||
|
||||
/skywars edit <arena name>
|
||||
in this menu you can add spawn points and set up the sign to enter the
|
||||
arena: the spawn points are where the players will spawn when they
|
||||
enter the arena, while the sign is just the way to enter it (by
|
||||
clicking it).
|
||||
|
||||
|
||||
3) Setting the arena treasures (the items that can spawn in the
|
||||
chests):
|
||||
item: the item name
|
||||
rarity: how often it will spawn in chests (the rarity gap between two
|
||||
treasures should be at least of 2)
|
||||
preciousness: in which chests it can be put, for example a chest with
|
||||
a preciousness range 2-4 can spawn just items with a preciousness
|
||||
between 2 and 4
|
||||
count: the item amount
|
||||
|
||||
/skywars addtreasure <arena name> <item> <rarity (min 2.0, max
|
||||
1000.0)> <preciousness> <count>
|
||||
|
||||
|
||||
4) Setting the chests in the arena using:
|
||||
|
||||
/skywars addchest <arena name> <min_preciousness> <max_preciousness>
|
||||
<min_treasures_amount (min. 1)> <max_treasures_amount>
|
||||
to add a chest use this command on the block you want it to spawn, it
|
||||
will automatically be filled with the right items when the match
|
||||
starts
|
||||
|
||||
|
||||
5) Saving the map schematic using:
|
||||
|
||||
/skywars pos1
|
||||
/skywars pos2
|
||||
/skywars createschematic <arena name> <schematic_name>
|
||||
in order to automatically reset the map on every match, you have to
|
||||
create a schematic file; to do so, simply specify the corners of the
|
||||
map by facing NORTH (you can press F5 to know where you're facing),
|
||||
and by being sure pos1 Z is SMALLER than pos2 Z (/skywars pos1 and
|
||||
/skywars pos2 to set the two corners).
|
||||
!If you overwrite a schematic that you've already created before make
|
||||
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
|
||||
|
||||
/skywars enable <arena name>
|
||||
|
||||
|
||||
Once you've done this you can click the sign and start playing :)
|
|
@ -1,30 +1,90 @@
|
|||
arena_lib.on_load("skywars", function(arena)
|
||||
|
||||
if arena.reset == false then
|
||||
minetest.place_schematic(arena.pos1, arena.schematic)
|
||||
arena.reset = true
|
||||
end
|
||||
|
||||
skywars.place_chests(arena)
|
||||
skywars.fill_chests(arena)
|
||||
|
||||
end)
|
||||
|
||||
arena_lib.on_join("skywars", function(p_name, arena)
|
||||
|
||||
|
||||
arena_lib.on_join("skywars", function(pl_name, arena)
|
||||
|
||||
end)
|
||||
|
||||
|
||||
|
||||
arena_lib.on_start("skywars", function(arena)
|
||||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
skywars.generate_HUD(arena, pl_name)
|
||||
player:set_physics_override({speed=arena.players[pl_name].speed})
|
||||
-- saving original speed
|
||||
arena.players[pl_name].speed = player:get_physics_override().speed
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
|
||||
|
||||
arena_lib.on_celebration("skywars", function(arena, winner_name)
|
||||
|
||||
for pl_name in pairs(arena.players) do
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
arena_lib.on_end("skywars", function(arena, players)
|
||||
arena.reset = false
|
||||
|
||||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
-- restore player's original speed
|
||||
player:set_physics_override({speed=arena.players[pl_name].speed})
|
||||
end
|
||||
end)
|
||||
|
||||
arena_lib.on_death("skywars", function(arena, p_name, reason)
|
||||
|
||||
|
||||
arena_lib.on_death("skywars", function(arena, pl_name, reason)
|
||||
|
||||
if reason.type == "punch" then
|
||||
if reason.object ~= nil and reason.object:is_player() then
|
||||
local killer = reason.object:get_player_name()
|
||||
|
||||
arena_lib.send_message_players_in_arena(arena, skywars_settings.prefix .. skywars.T("@1 was killed by @2", pl_name, killer))
|
||||
end
|
||||
else
|
||||
arena_lib.send_message_players_in_arena(arena, skywars_settings.prefix .. skywars.T("@1 is dead", pl_name))
|
||||
end
|
||||
|
||||
arena_lib.remove_player_from_arena(pl_name, 1)
|
||||
skywars.update_player_counter(arena)
|
||||
end)
|
||||
|
||||
arena_lib.on_quit("skywars", function(arena)
|
||||
|
||||
|
||||
arena_lib.on_quit("skywars", function(arena, pl_name)
|
||||
skywars.update_player_counter(arena, false)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
arena_lib.on_disconnect("skywars", function(arena, pl_name)
|
||||
skywars.update_player_counter(arena, false)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
arena_lib.on_kick("skywars", function(arena, pl_name)
|
||||
skywars.update_player_counter(arena, false)
|
||||
skywars.remove_HUD(arena, pl_name)
|
||||
end)
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
--Registra un nodo chest dedicato in modo tale che se viene rimosso cicla nelle arene e si toglie da
|
||||
--sola dalle chests delle properties.
|
|
@ -1,45 +1,17 @@
|
|||
--Il necessario per impostare dove sono le chest nelle mappe. Vedi MOBA con gli spawner.
|
||||
-- This sets the map chests
|
||||
local mod = "skywars"
|
||||
|
||||
ChatCmdBuilder.new("skywars", function(cmd)
|
||||
|
||||
cmd:sub("addchest :arena", function(sender, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local pos = vector.floor(minetest.get_player_by_name(sender):get_pos())
|
||||
local function fill_chest_inv(chest, arena)
|
||||
|
||||
table.insert(arena.chests, pos)
|
||||
|
||||
end)
|
||||
|
||||
cmd:sub("removechest :arena", function(sender, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local pos = vector.floor(minetest.get_player_by_name(sender):get_pos())
|
||||
|
||||
table.remove(arena.chests, pos)
|
||||
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
|
||||
|
||||
function skywars.fill_chests(arena)
|
||||
for chest_pos in arena.chests do
|
||||
fill_chest_inv(chest_pos, arena)
|
||||
end
|
||||
end
|
||||
|
||||
local function fill_chest_inv(chest_pos, arena)
|
||||
local t_min = 4 -- minimum amount of treasures found in a chest
|
||||
local t_max = 7 -- maximum amount of treasures found in a chest
|
||||
local t_min = chest.min_treasures
|
||||
local t_max = chest.max_treasures
|
||||
local treasure_amount = math.ceil(math.random(t_min, t_max))
|
||||
|
||||
local minp = 0 --scale*4 -- minimal preciousness: 0..4
|
||||
local maxp = 10 --scale*4+2.1 -- maximum preciousness: 2.1..6.1
|
||||
|
||||
local minp = chest.min_preciousness
|
||||
local maxp = chest.max_preciousness
|
||||
-- returns an itemstacks table that contains the chosen treasures
|
||||
local treasures = skywars.select_random_treasures(treasure_amount, minp, maxp, arena)
|
||||
|
||||
local meta = minetest.get_meta(chest_pos)
|
||||
local meta = minetest.get_meta(chest.pos)
|
||||
local inv = meta:get_inventory()
|
||||
|
||||
for i=1, #treasures do
|
||||
|
@ -48,8 +20,18 @@ local function fill_chest_inv(chest_pos, arena)
|
|||
|
||||
end
|
||||
|
||||
function skywars.place_chests(arena)
|
||||
for chest_pos in arena.chests do
|
||||
minetest.set_node(chest_pos, "default:chest")
|
||||
|
||||
|
||||
function skywars.fill_chests(arena)
|
||||
for i=1, #arena.chests do
|
||||
fill_chest_inv(arena.chests[i], arena)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.place_chests(arena)
|
||||
for i=1, #arena.chests do
|
||||
minetest.add_node(arena.chests[i].pos, {name="default:chest"})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,99 +1,6 @@
|
|||
--Il necessario per aggiungere items possibili alle chest.
|
||||
-- Select the treasures to put in the chests inventory
|
||||
local mod = "skywars"
|
||||
|
||||
ChatCmdBuilder.new("skywars", function(cmd)
|
||||
|
||||
cmd:sub("addtreasure :treasure :rarity :preciousness :count :arena", function(sender, treasure_name, rarity, preciousness, count, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness})
|
||||
|
||||
end)
|
||||
|
||||
cmd:sub("removetreasure :treasure :arena", function(sender, treasure_name, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
|
||||
table.remove(arena.treasures, {name = treasure_name, rarity, preciousness})
|
||||
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
|
||||
function skywars.select_random_treasures(treasure_amount, min_preciousness, max_preciousness, arena)
|
||||
if #arena.treasures == 0 and treasure_amount >= 1 then
|
||||
minetest.log("info","[treasurer] I was asked to return "..count.." treasure(s) but I can’t return any because no treasure was registered to me.")
|
||||
return {}
|
||||
end
|
||||
if treasure_amount == nil then treasure_amount = 1 end
|
||||
local sum = 0
|
||||
local cumulate = {}
|
||||
local randoms = {}
|
||||
|
||||
-- copy treasures into helper table
|
||||
local p_treasures = {}
|
||||
|
||||
for i=1,#arena.treasures do
|
||||
table.insert(p_treasures, #arena.treasures[i])
|
||||
end
|
||||
|
||||
|
||||
if(min_preciousness ~= nil) then
|
||||
-- filter out too unprecious treasures
|
||||
for t=#p_treasures,1,-1 do
|
||||
if((p_treasures[t].preciousness) < min_preciousness) then
|
||||
table.remove(p_treasures,t)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if(max_preciousness ~= nil) then
|
||||
-- filter out too precious treasures
|
||||
for t=#p_treasures,1,-1 do
|
||||
if(p_treasures[t].preciousness > max_preciousness) then
|
||||
table.remove(p_treasures,t)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for t=1,#p_treasures do
|
||||
sum = sum + p_treasures[t].rarity
|
||||
cumulate[t] = sum
|
||||
end
|
||||
for c=1,count do
|
||||
randoms[c] = math.random() * sum
|
||||
end
|
||||
|
||||
local treasures = {}
|
||||
for c=1,count do
|
||||
for t=1,#p_treasures do
|
||||
if randoms[c] < cumulate[t] then
|
||||
table.insert(treasures, p_treasures[t])
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local itemstacks = {}
|
||||
for i=1,#treasures do
|
||||
itemstacks[i] = treasure_to_itemstack(treasures[i])
|
||||
end
|
||||
if #itemstacks < count then
|
||||
minetest.log("info","[treasurer] I was asked to return "..count.." treasure(s) but I could only return "..(#itemstacks)..".")
|
||||
end
|
||||
return itemstacks
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function treasure_to_itemstack(treasure)
|
||||
local itemstack = {}
|
||||
itemstack.name = treasure.name
|
||||
itemstack.count = determine_count(treasure)
|
||||
|
||||
return ItemStack(itemstack)
|
||||
end
|
||||
|
||||
|
||||
local function determine_count(treasure)
|
||||
if(type(treasure.count)=="number") then
|
||||
|
@ -107,3 +14,88 @@ local function determine_count(treasure)
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function treasure_to_itemstack(treasure)
|
||||
local itemstack = {}
|
||||
itemstack.name = treasure.name
|
||||
itemstack.count = determine_count(treasure)
|
||||
|
||||
return ItemStack(itemstack)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.select_random_treasures(treasure_amount, min_preciousness, max_preciousness, arena)
|
||||
if #arena.treasures == 0 and treasure_amount >= 1 then
|
||||
minetest.log("info","[treasurer] I was asked to return "..treasure_amount.." treasure(s) but I can’t return any because no treasure was registered to me.")
|
||||
return {}
|
||||
end
|
||||
if treasure_amount == nil or treasure_amount == 0 then treasure_amount = 1 end
|
||||
|
||||
-- sorting the table from the rarest to the least rare treasure, so that if one of them has rarity one
|
||||
-- and it's at index one it doesn't prevent other treasures from appearing
|
||||
for j=#arena.treasures, 2, -1 do
|
||||
for i=1, #arena.treasures-1 do
|
||||
if arena.treasures[i].rarity < arena.treasures[i+1].rarity then
|
||||
local temp = arena.treasures[i]
|
||||
arena.treasures[i] = arena.treasures[i+ 1]
|
||||
arena.treasures[i + 1] = temp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- helper table
|
||||
local p_treasures = {}
|
||||
-- copying arena.treasures in p_treasures
|
||||
for i=1, #arena.treasures do
|
||||
table.insert(p_treasures, arena.treasures[i])
|
||||
end
|
||||
|
||||
if(min_preciousness ~= nil) then
|
||||
-- filter out too unprecious treasures
|
||||
for t=#p_treasures, 1, -1 do
|
||||
if(p_treasures[t].preciousness < min_preciousness) then
|
||||
table.remove(p_treasures,t)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if(max_preciousness ~= nil) then
|
||||
-- filter out too precious treasures
|
||||
for t=#p_treasures,1,-1 do
|
||||
if(p_treasures[t].preciousness > max_preciousness) then
|
||||
table.remove(p_treasures,t)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local treasures = {}
|
||||
|
||||
-- while the generated treasures are less then the desired amount
|
||||
while #treasures < treasure_amount do
|
||||
for c=1,treasure_amount do
|
||||
-- if there isn't a treasure
|
||||
if treasures[c] == nil then
|
||||
for t=1,#p_treasures do
|
||||
local random = math.random(1, 1000)
|
||||
|
||||
-- if the random number is a multiple of the item rarity then select it
|
||||
if random % p_treasures[t].rarity == 0 then
|
||||
table.insert(treasures, p_treasures[t])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local itemstacks = {}
|
||||
for i=1,#treasures do
|
||||
itemstacks[i] = treasure_to_itemstack(treasures[i])
|
||||
end
|
||||
if #itemstacks < treasure_amount then
|
||||
minetest.log("info","[treasurer] I was asked to return "..treasure_amount.." treasure(s) but I could only return "..(#itemstacks)..".")
|
||||
end
|
||||
return itemstacks
|
||||
end
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
function skywars.generate_HUD(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
local players_
|
||||
local background_
|
||||
|
||||
|
||||
background_ = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 1, y = 1},
|
||||
offset = {x = -109, y = -32},
|
||||
text = "sw_players_hud.png",
|
||||
alignment = { x = 1.0},
|
||||
scale = { x = 3, y = 3},
|
||||
number = 0xFFFFFF,
|
||||
})
|
||||
|
||||
-- The number of players in the game
|
||||
players_ = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 1, y = 1},
|
||||
offset = {x = -85, y = -32},
|
||||
text = arena.players_amount,
|
||||
alignment = { x = 0},
|
||||
scale = { x = 100, y = 100},
|
||||
number = 0x7d7071,
|
||||
})
|
||||
|
||||
-- Save the huds of each player
|
||||
arena.HUDs[pl_name] = {background = background_, players = players_}
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.remove_HUD(arena, pl_name)
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
player:hud_remove(arena.HUDs[pl_name].background)
|
||||
player:hud_remove(arena.HUDs[pl_name].players)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function skywars.update_player_counter(arena, players_updated)
|
||||
local pl_amount = arena.players_amount
|
||||
|
||||
-- if arena.players_amount hasn't been updated yet
|
||||
if players_updated == false then
|
||||
pl_amount = pl_amount-1
|
||||
end
|
||||
|
||||
-- updating the player counter HUD
|
||||
for pl_name in pairs(arena.players) do
|
||||
local player = minetest.get_player_by_name(pl_name)
|
||||
|
||||
player:hud_change(arena.HUDs[pl_name].players, "text", pl_amount)
|
||||
end
|
||||
end
|
|
@ -1,3 +1,8 @@
|
|||
--Crea i file delle mappe con world edit e li salva.
|
||||
--Le mappe avranno delle proprietà settate per sapere dove siano le chest e fare i refill.
|
||||
--Le posizioni delle chest possono essere salvate sulle properties della mappa come faccio per gli spawner sul MOBA.
|
||||
-- Creates the schematic using pos1 (the first corner of the map) and pos2 (the second one)
|
||||
function skywars.create_schematic(sender, pos1, pos2, name, arena)
|
||||
minetest.create_schematic(pos1, pos2, nil, minetest.get_worldpath() .. "/" .. name .. ".mts", nil)
|
||||
arena.schematic = minetest.get_worldpath() .. "/" .. name .. ".mts"
|
||||
|
||||
arena_lib.change_arena_property(sender, "skywars", arena.name, "pos1", pos1)
|
||||
arena_lib.change_arena_property(sender, "skywars", arena.name, "schematic", arena.schematic)
|
||||
end
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
--Carica il file della mappa quando inizia/finisce la partita, devo ancora decidermi.
|
496
commands.lua
496
commands.lua
|
@ -1,71 +1,467 @@
|
|||
|
||||
|
||||
|
||||
local mod = "skywars"
|
||||
|
||||
ChatCmdBuilder.new("skywars", function(cmd)
|
||||
ChatCmdBuilder.new("skywars",
|
||||
function(cmd)
|
||||
|
||||
cmd:sub("create :arena", function(sender, arena_name)
|
||||
arena_lib.create_arena(sender, mod, arena_name)
|
||||
end)
|
||||
cmd:sub("tutorial",
|
||||
function(sender)
|
||||
minetest.chat_send_player(sender, [[
|
||||
|
||||
These are the steps to follow in order to create and configure an
|
||||
arena:
|
||||
|
||||
cmd:sub("create :arena :minplayers:int :maxplayers:int", function(sender, arena_name, min_players, max_players)
|
||||
arena_lib.create_arena(sender, mod, arena_name, min_players, max_players)
|
||||
end)
|
||||
|
||||
cmd:sub("create :arena :minplayers:int :maxplayers:int :killcap:int", function(sender, arena_name, min_players, max_players)
|
||||
arena_lib.create_arena(sender, mod, arena_name, min_players, max_players)
|
||||
local id, arena = arena_lib.get_arena_by_name("moba", arena_name)
|
||||
end)
|
||||
1) Creating the arena using:
|
||||
|
||||
-- rimozione arene
|
||||
cmd:sub("remove :arena", function(sender, arena_name)
|
||||
arena_lib.remove_arena(sender, mod, arena_name)
|
||||
end)
|
||||
/skywars create <arena name> [min players] [max players]
|
||||
where min players is equal to the minimun amount of players to make
|
||||
the arena start, and max players to the maximum amount of players that
|
||||
an arena can have.
|
||||
|
||||
-- lista arene
|
||||
cmd:sub("list", function(sender)
|
||||
arena_lib.print_arenas(sender, mod)
|
||||
end)
|
||||
|
||||
-- info su un'arena specifica
|
||||
cmd:sub("info :arena", function(sender, arena_name)
|
||||
arena_lib.print_arena_info(sender, mod, arena_name)
|
||||
2) Editing the arena using:
|
||||
|
||||
/skywars edit <arena name>
|
||||
in this menu you can add spawn points and set up the sign to enter the
|
||||
arena: the spawn points are where the players will spawn when they
|
||||
enter the arena, while the sign is just the way to enter it (by
|
||||
clicking it).
|
||||
|
||||
|
||||
3) Setting the arena treasures (the items that can spawn in the
|
||||
chests):
|
||||
item: the item name
|
||||
rarity: how often it will spawn in chests (the rarity gap between two
|
||||
treasures should be at least of 2)
|
||||
preciousness: in which chests it can be put, for example a chest with
|
||||
a preciousness range 2-4 can spawn just items with a preciousness
|
||||
between 2 and 4
|
||||
count: the item amount
|
||||
|
||||
/skywars addtreasure <arena name> <item> <rarity (min 2.0, max
|
||||
1000.0)> <preciousness> <count>
|
||||
|
||||
|
||||
4) Setting the chests in the arena using:
|
||||
|
||||
/skywars addchest <arena name> <min_preciousness> <max_preciousness>
|
||||
<min_treasures_amount (min. 1)> <max_treasures_amount>
|
||||
to add a chest use this command on the block you want it to spawn, it
|
||||
will automatically be filled with the right items when the match
|
||||
starts
|
||||
|
||||
|
||||
5) Saving the map schematic using:
|
||||
|
||||
/skywars pos1
|
||||
/skywars pos2
|
||||
/skywars createschematic <arena name> <schematic_name>
|
||||
in order to automatically reset the map on every match, you have to
|
||||
create a schematic file; to do so, simply specify the corners of the
|
||||
map by facing NORTH (you can press F5 to know where you're facing),
|
||||
and by being sure pos1 Z is SMALLER than pos2 Z (/skywars pos1 and
|
||||
/skywars pos2 to set the two corners).
|
||||
!If you overwrite a schematic that you've already created before make
|
||||
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
|
||||
|
||||
/skywars enable <arena name>
|
||||
|
||||
|
||||
Once you've done this you can click the sign and start playing :)
|
||||
]])
|
||||
end)
|
||||
|
||||
-- info su stats partita
|
||||
cmd:sub("score :arena", function(sender, arena_name)
|
||||
arena_lib.print_arena_stats(sender, mod, arena_name)
|
||||
end)
|
||||
-- create arena
|
||||
cmd:sub("create :arena", function(name, arena_name)
|
||||
arena_lib.create_arena(name, "skywars", arena_name)
|
||||
end)
|
||||
|
||||
-- modifiche arena
|
||||
--editor
|
||||
cmd:sub("edit :arena", function(sender, arena)
|
||||
arena_lib.enter_editor(sender, mod, arena)
|
||||
end)
|
||||
|
||||
--inline
|
||||
-- cartello arena
|
||||
|
||||
cmd:sub("create :arena :minplayers:int :maxplayers:int", function(name, arena_name, min_players, max_players)
|
||||
arena_lib.create_arena(name, "skywars", arena_name, min_players, max_players)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
-- remove arena
|
||||
cmd:sub("remove :arena", function(name, arena_name)
|
||||
arena_lib.remove_arena(name, "skywars", arena_name)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
-- list of the arenas
|
||||
cmd:sub("list", function(name)
|
||||
arena_lib.print_arenas(name, "skywars")
|
||||
end)
|
||||
|
||||
|
||||
|
||||
-- info on a specific arena
|
||||
cmd:sub("info :arena", function(name, arena_name)
|
||||
arena_lib.print_arena_info(name, "skywars", arena_name)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
-- this sets the spawns using the player position
|
||||
cmd:sub("setspawn :arena", function(name, arena)
|
||||
arena_lib.set_spawner(name, "skywars", arena)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("setspawn :arena", function(name, arena)
|
||||
arena_lib.set_spawner(name, "skywars", arena)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
-- this sets the arena's sign
|
||||
cmd:sub("setsign :arena", function(sender, arena)
|
||||
arena_lib.set_sign(sender, nil, nil, mod, arena)
|
||||
arena_lib.set_sign(sender, nil, nil, "skywars", arena)
|
||||
end)
|
||||
|
||||
-- spawner (ie. deleteall)
|
||||
cmd:sub("setspawn :arena :param:text :ID:int", function(sender, arena, param, ID)
|
||||
arena_lib.set_spawner(sender, mod, arena, param, ID)
|
||||
|
||||
|
||||
-- enter editor mode
|
||||
cmd:sub("edit :arena", function(sender, arena)
|
||||
arena_lib.enter_editor(sender, "skywars", arena)
|
||||
end)
|
||||
|
||||
cmd:sub("setspawn :arena", function(sender, arena)
|
||||
arena_lib.set_spawner(sender, mod, arena)
|
||||
|
||||
|
||||
-- enable and disable arenas
|
||||
cmd:sub("enable :arena", function(name, arena)
|
||||
arena_lib.enable_arena(name, "skywars", arena)
|
||||
end)
|
||||
|
||||
-- abilitazione e disabilitazione arene
|
||||
cmd:sub("enable :arena", function(sender, arena)
|
||||
arena_lib.enable_arena(sender, mod, arena)
|
||||
end)
|
||||
|
||||
cmd:sub("disable :arena", function(sender, arena)
|
||||
arena_lib.disable_arena(sender, mod, arena)
|
||||
end)
|
||||
|
||||
end)
|
||||
cmd:sub("disable :arena", function(name, arena)
|
||||
arena_lib.disable_arena(name, "skywars", arena)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
--------------------
|
||||
-- ! 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
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
elseif count <= 0 then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Count has to be greater than 0!"))
|
||||
return
|
||||
elseif rarity < 2 then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Rarity has to be greater than 2!"))
|
||||
return
|
||||
elseif ItemStack(treasure_name):is_known() == false then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 doesn't exist!", treasure_name))
|
||||
return
|
||||
end
|
||||
|
||||
table.insert(arena.treasures, {name = treasure_name, rarity = rarity, count = count, preciousness = preciousness})
|
||||
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Treasure added!"))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("removetreasure :arena :treasure", function(sender, arena_name, treasure_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
|
||||
for i=1, #arena.treasures do
|
||||
if arena.treasures[i].name == treasure_name then
|
||||
table.remove(arena.treasures, i)
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "treasures", arena.treasures, false)
|
||||
|
||||
if found then minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Treasure removed!"))
|
||||
else minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Treasure not found!")) end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("copytreasures :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
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("First arena not found!"))
|
||||
return
|
||||
elseif to_arena == nil then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Second arena not found!"))
|
||||
return
|
||||
elseif from_arena == to_arena then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("The arenas must be different!"))
|
||||
return
|
||||
elseif to_arena.enabled == true then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 must be disabled!", to))
|
||||
return
|
||||
end
|
||||
|
||||
to_arena.treasures = {}
|
||||
for i=1, #from_arena.treasures do
|
||||
to_arena.treasures[i] = from_arena.treasures[i]
|
||||
end
|
||||
|
||||
arena_lib.change_arena_property(sender, "skywars", to, "treasures", to_arena.treasures, false)
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 treasures have been copied to @2!", from, to))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("gettreasures :arena", function(sender, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Arena not found!"))
|
||||
return
|
||||
end
|
||||
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("TREASURES LIST:"))
|
||||
for i=1, #arena.treasures do
|
||||
local treasure = arena.treasures[i]
|
||||
minetest.chat_send_player(sender, tostring(i) .. ".\n" ..
|
||||
skywars.T(
|
||||
"name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4",
|
||||
treasure.name, treasure.rarity, treasure.preciousness, treasure.count
|
||||
)
|
||||
)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("addchest :arena :minpreciousness:int :maxpreciousness:int :tmin:int :tmax:int",
|
||||
function(sender, arena_name, min_preciousness, max_preciousness, t_min, t_max)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local pos = vector.floor(minetest.get_player_by_name(sender):get_pos())
|
||||
local chest =
|
||||
{
|
||||
pos = {x = pos.x, y= pos.y + 1, z = pos.z},
|
||||
min_preciousness = min_preciousness,
|
||||
max_preciousness = max_preciousness,
|
||||
min_treasures = t_min,
|
||||
max_treasures = t_max,
|
||||
id = #arena.chests+1
|
||||
}
|
||||
|
||||
if arena == nil then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
elseif t_min <= 0 or t_max <= 0 then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("The minimum or maximum amount of treasures has to be greater than 0!"))
|
||||
return
|
||||
end
|
||||
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Chest added!"))
|
||||
table.insert(arena.chests, chest)
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false)
|
||||
end)
|
||||
|
||||
|
||||
cmd:sub("getchests :arena", function(sender, arena_name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Arena not found!"))
|
||||
return
|
||||
end
|
||||
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. 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)
|
||||
minetest.chat_send_player(sender, skywars.T("ID: @1 - POSITION: @2", arena.chests[i].id, chest_pos))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("removechest :arena :id:int", function(sender, arena_name, chest_id)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local found = false
|
||||
|
||||
if arena == nil then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Arena not found!"))
|
||||
return
|
||||
elseif arena.enabled == true then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
|
||||
for i=1, #arena.chests do
|
||||
if arena.chests[i].id == chest_id then
|
||||
table.remove(arena.chests, i)
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
arena_lib.change_arena_property(sender, "skywars", arena_name, "chests", arena.chests, false)
|
||||
|
||||
if found then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Chest removed!"))
|
||||
else
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Chest not found!"))
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
------------------
|
||||
-- ! MAP CMDS ! --
|
||||
------------------
|
||||
|
||||
cmd:sub("pos1", function(sender)
|
||||
local player = minetest.get_player_by_name(sender)
|
||||
|
||||
player:get_meta():set_string("pos1", minetest.serialize(player:get_pos()))
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Position saved!"))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("pos2", function(sender)
|
||||
local player = minetest.get_player_by_name(sender)
|
||||
|
||||
player:get_meta():set_string("pos2", minetest.serialize(player:get_pos()))
|
||||
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Position saved!"))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("createschematic :arena :name",
|
||||
function(sender, arena_name, name)
|
||||
local id, arena = arena_lib.get_arena_by_name("skywars", arena_name)
|
||||
local player = minetest.get_player_by_name(sender)
|
||||
local pos1 = minetest.deserialize(player:get_meta():get_string("pos1"))
|
||||
local pos2 = minetest.deserialize(player:get_meta():get_string("pos2"))
|
||||
|
||||
if arena == nil then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Arena not found!"))
|
||||
return
|
||||
end
|
||||
|
||||
if arena.enabled == true then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("@1 must be disabled!", arena_name))
|
||||
return
|
||||
end
|
||||
|
||||
if pos1 == "" or pos2 == "" then
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. 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)
|
||||
|
||||
minetest.chat_send_player(sender, skywars_settings.prefix .. skywars.T("Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic=PATH)", name, arena_name))
|
||||
end)
|
||||
|
||||
|
||||
|
||||
cmd:sub("getpos", function(sender)
|
||||
|
||||
function round(num, numDecimalPlaces)
|
||||
return string.format("%." .. (numDecimalPlaces or 0) .. "f", num)
|
||||
end
|
||||
|
||||
local pos = minetest.get_player_by_name(sender):get_pos()
|
||||
local readable_pos = "[X Y Z] " .. round(pos.x, 1) .. " " .. round(pos.y, 1) .. " " .. round(pos.z, 1)
|
||||
|
||||
minetest.chat_send_player(sender, readable_pos)
|
||||
end)
|
||||
|
||||
end, {
|
||||
|
||||
description = [[
|
||||
|
||||
Arena_lib:
|
||||
- tutorial
|
||||
|
||||
- create <arena name> [min players] [max players]
|
||||
|
||||
- edit <arena name>
|
||||
|
||||
- remove <arena name>
|
||||
|
||||
- info <arena name>
|
||||
|
||||
- list
|
||||
|
||||
- enable <arena name>
|
||||
|
||||
- disable <arena name>
|
||||
|
||||
|
||||
Skywars commands:
|
||||
- addtreasure <arena name> <item> <rarity (min 2.0, max 1000.0)>
|
||||
<preciousness> <count>
|
||||
|
||||
- removetreasure <arena name> <treasure name>
|
||||
|
||||
- gettreasures <arena name>
|
||||
|
||||
- copytreasures <(from) arena name> <(to) arena name>: this will copy
|
||||
the first arena treasures in to the second one (! the second one will
|
||||
be overwritten !)
|
||||
|
||||
- addchest <arena name> <min_preciousness> <max_preciousness>
|
||||
<min_treasures_amount (min. 1)> <max_treasures_amount>
|
||||
|
||||
- removechest <id>
|
||||
|
||||
- getchests <arena name>: shows id and position of each chest
|
||||
|
||||
- pos1
|
||||
|
||||
- pos2
|
||||
|
||||
- createschematic <arena name> <pos1x> <pos1y> <pos1z> <pos2x> <pos2y>
|
||||
<pos2z> <schematic_name>
|
||||
|
||||
- getpos
|
||||
]],
|
||||
privs = { skywars_admin = true }
|
||||
})
|
||||
|
||||
|
||||
|
||||
minetest.register_privilege("skywars_admin", {
|
||||
description = "With this you can use /skywars"
|
||||
})
|
||||
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
arena_lib
|
||||
default
|
||||
|
|
34
init.lua
34
init.lua
|
@ -1,29 +1,43 @@
|
|||
dofile(minetest.get_modpath("skywars") .. "/SETTINGS.lua")
|
||||
|
||||
skywars = {}
|
||||
skywars.T = minetest.get_translator("skywars")
|
||||
|
||||
arena_lib.register_minigame("skywars", {
|
||||
prefix = "[Skywars] ",
|
||||
hub_spawn_point = { x = 8, y = 6, z = 4 },
|
||||
prefix = skywars_settings.prefix,
|
||||
hub_spawn_point = skywars_settings.hub_spawn_point,
|
||||
join_while_in_progress = false,
|
||||
celebration_time = 5,
|
||||
celebration_time = skywars_settings.celebration_time,
|
||||
loading_time = skywars_settings.loading_time,
|
||||
queue_waiting_time = skywars_settings.queue_waiting_time,
|
||||
temp_properties = {
|
||||
HUDs = {}
|
||||
},
|
||||
properties = {
|
||||
chests = {},
|
||||
treasures = {}, --items da mettere nelle chest
|
||||
},
|
||||
temp_properties = {
|
||||
kill_leader = "",
|
||||
first_blood = "",
|
||||
treasures = {}, -- items to put in the chests
|
||||
schematic = "",
|
||||
pos1 = {},
|
||||
reset = false
|
||||
},
|
||||
player_properties = {
|
||||
killstreak = 0,
|
||||
speed = skywars_settings.player_speed
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
dofile(minetest.get_modpath("skywars") .. "/chatcmdbuilder.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/chest.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") .. "/_map_handler/map_gen.lua")
|
||||
dofile(minetest.get_modpath("skywars") .. "/_arena_lib/arena_manager.lua")
|
||||
|
||||
|
||||
|
||||
local schematic_manager = minetest.request_insecure_environment()
|
||||
function skywars.save_schematic(pos1, pos2, name, arena)
|
||||
minetest.create_schematic(p1, p2, nil, minetest.get_worldpath() .. "\\" .. name, nil)
|
||||
end
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# version 1.0.0
|
||||
# author(s): Giov4
|
||||
# reviewer(s):
|
||||
# textdomain: skywars
|
||||
|
||||
Arena not found!=Arena non trovata!
|
||||
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
|
||||
@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:
|
||||
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!
|
||||
The arenas must be different!=Le arene devono essere diverse!
|
||||
# @n means "newline"
|
||||
name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=nome: @1 @nrarità: @2 @npreziosità: @3 @nquantità: @4
|
||||
Chest added!=Cassa aggiunta!
|
||||
Chest removed!=Cassa rimossa!
|
||||
Chest not found!=Cassa non trovata!
|
||||
CHEST LIST:=LISTA DI 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)
|
||||
@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
|
|
@ -0,0 +1,31 @@
|
|||
# version 1.0.0
|
||||
# author(s):
|
||||
# reviewer(s):
|
||||
# textdomain: skywars
|
||||
|
||||
Arena not found!=
|
||||
Count has to be greater than 0!=
|
||||
Rarity has to be greater than 2!=
|
||||
@1 doesn't exist!=
|
||||
Treasure added!=
|
||||
Treasure removed!=
|
||||
Treasure not found!=
|
||||
TREASURES LIST:=
|
||||
The minimum or maximum amount of treasures has to be greater than 0!=
|
||||
First arena not found!=
|
||||
Second arena not found!=
|
||||
@1 treasures have been copied to @2!=
|
||||
The arenas must be different!=
|
||||
# @n means "newline"
|
||||
name: @1 @nrarity: @2 @npreciousness: @3 @ncount: @4=
|
||||
Chest added!=
|
||||
Chest removed!=
|
||||
Chest not found!=
|
||||
CHEST LIST:=
|
||||
ID: @1 - POSITION: @2=
|
||||
Position saved!=
|
||||
Schematic @1 created! You can use /skywars info @2 to know its folder (see schematic@=PATH)=
|
||||
@1 must be disabled!=
|
||||
Pos1 or pos2 are not set!=
|
||||
@1 was killed by @2=
|
||||
@1 is dead=
|
2
mod.conf
2
mod.conf
|
@ -1,2 +1,2 @@
|
|||
name = skywars
|
||||
description = Frag'em
|
||||
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.
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 589 B |
Loading…
Reference in New Issue