Mods update
parent
6edafb7165
commit
ba28e54422
|
@ -1,6 +1,6 @@
|
|||
|
||||
origin https://github.com/minetest/minetest_game.git (fetch)
|
||||
* master 42baede [origin/master] Add specific groups to different types of grass (#2852)
|
||||
* master c6171a8 [origin/master] Add Esperanto translation (#2739)
|
||||
Mod: minetest_game/mods/beds
|
||||
Mod: minetest_game/mods/binoculars
|
||||
Mod: minetest_game/mods/boats
|
||||
|
@ -73,11 +73,11 @@ origin https://github.com/minetest-mods/dynamic_liquid (fetch)
|
|||
Mod: environment/dynamic_liquid
|
||||
|
||||
origin https://notabug.org/tenplus1/farming (fetch)
|
||||
* master f1d52b4 [origin/master] reduce shapeless crafts
|
||||
* master 4b033fe [origin/master] add new melon textures (thanks 7eventy7)
|
||||
Mod: flora/farming
|
||||
|
||||
origin https://github.com/minetest-mods/i3.git (fetch)
|
||||
* main f85b0f7 [origin/main] Tweaking
|
||||
* main 859feb4 [origin/main] Minor cleaning
|
||||
Mod: gui/i3
|
||||
|
||||
origin https://repo.or.cz/minetest_hbarmor.git (fetch)
|
||||
|
@ -89,7 +89,7 @@ origin https://repo.or.cz/minetest_hudbars.git (fetch)
|
|||
Mod: gui/minetest_hudbars
|
||||
|
||||
origin git://repo.or.cz/minetest_show_wielded_item.git (fetch)
|
||||
* master 83f1997 [origin/master] Add z_index to HUD definition
|
||||
* master 6f40e88 [origin/master] Version 1.2.0
|
||||
Mod: gui/minetest_show_wielded_item
|
||||
|
||||
origin https://repo.or.cz/minetest_tt_base.git (fetch)
|
||||
|
@ -113,11 +113,11 @@ origin https://github.com/TheTermos/mobkit (fetch)
|
|||
Mod: lib_api/mobkit
|
||||
|
||||
origin https://notabug.org/tenplus1/mobs_redo (fetch)
|
||||
* master c023ecc [origin/master] reduce shapeless crafts
|
||||
* master 70c68f6 [origin/master] change so only players can push mobs
|
||||
Mod: lib_api/mobs_redo
|
||||
|
||||
origin https://github.com/appgurueu/modlib (fetch)
|
||||
* master fc683ce [origin/master] Bump version
|
||||
* master 68f6573 [origin/master] Bump version
|
||||
Mod: lib_api/modlib
|
||||
|
||||
origin git@github.com:runsy/rcbows.git (fetch)
|
||||
|
@ -161,11 +161,11 @@ origin https://github.com/runsy/petz (fetch)
|
|||
Mod: mobs/mobs_mobkit/petz
|
||||
|
||||
origin https://github.com/berengma/water_life (fetch)
|
||||
* master caf92f0 [origin/master] add more nil checks
|
||||
* master 1919e32 [origin/master] Merge pull request #75 from berengma/test
|
||||
Mod: mobs/mobs_mobkit/water_life
|
||||
|
||||
origin https://github.com/minetest-mods/3d_armor (fetch)
|
||||
* master e75af55 [origin/master] Fix translation nonsense in minetest.log
|
||||
* master f07f050 [origin/master] Silence warnings when ui is not enabled
|
||||
Mod: player/3d_armor
|
||||
|
||||
origin https://github.com/appgurueu/character_anim (fetch)
|
||||
|
|
|
@ -74,14 +74,19 @@ minetest.register_node("farming:melon_7", table.copy(def))
|
|||
-- stage 8 (final)
|
||||
def.drawtype = "nodebox"
|
||||
def.description = S("Melon")
|
||||
def.tiles = {"farming_melon_top.png", "farming_melon_top.png", "farming_melon_side.png"}
|
||||
def.tiles = {
|
||||
"farming_melon_top.png", "farming_melon_bottom.png", "farming_melon_side.png"
|
||||
}
|
||||
def.selection_box = {-.5, -.5, -.5, .5, .5, .5}
|
||||
def.walkable = true
|
||||
def.buildable_to = false
|
||||
def.paramtype2 = "facedir"
|
||||
def.groups = {
|
||||
food_melon = 1, snappy = 2, oddly_breakable_by_hand = 1,
|
||||
flammable = 2, plant = 1
|
||||
}
|
||||
def.drop = "farming:melon_8"
|
||||
def.on_place = minetest.rotate_node
|
||||
minetest.register_node("farming:melon_8", table.copy(def))
|
||||
|
||||
-- add to registered_plants
|
||||
|
|
|
@ -63,6 +63,11 @@ Created by VanessaE (License: CC BY 3.0):
|
|||
farming_cotton_7.png
|
||||
farming_cotton_8.png
|
||||
|
||||
Created by 7eventy7 (https://www.planetminecraft.com/member/7eventy7/)
|
||||
farming_melon_top.png
|
||||
farming_melon_side.png
|
||||
farming_melon_bottom.png
|
||||
|
||||
Created by Doc (License: CC BY 3.0):
|
||||
farming_cucumber.png
|
||||
farming_cucumber_1.png
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 172 B |
Binary file not shown.
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 179 B |
Binary file not shown.
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 193 B |
|
@ -46,6 +46,6 @@ Report any bug on the [**Bug Tracker**](https://github.com/minetest-mods/i3/issu
|
|||
|
||||
Love this mod? Donations are appreciated: https://www.paypal.me/jpg84240
|
||||
|
||||
Demo video: https://www.youtube.com/watch?v=25nCAaqeacU
|
||||
Demo video (outdated): https://www.youtube.com/watch?v=25nCAaqeacU
|
||||
|
||||
![Preview](https://user-images.githubusercontent.com/7883281/109045805-4f450600-76d4-11eb-90f7-b99ab939246a.png)
|
||||
![Preview](https://user-images.githubusercontent.com/7883281/115294125-7827cb80-a158-11eb-89f1-1f533621a9fe.png)
|
||||
|
|
|
@ -1162,19 +1162,20 @@ local function spawn_item(player, stack)
|
|||
core.add_item(look_at, stack)
|
||||
end
|
||||
|
||||
local function get_stack(player, pname, stack, message)
|
||||
local function get_stack(player, stack, str)
|
||||
local inv = player:get_inventory()
|
||||
local name = player:get_player_name()
|
||||
|
||||
if inv:room_for_item("main", stack) then
|
||||
inv:add_item("main", stack)
|
||||
msg(pname, S("@1 added in your inventory", message))
|
||||
msg(name, S("@1 added in your inventory", str))
|
||||
else
|
||||
spawn_item(player, stack)
|
||||
msg(pname, S("@1 spawned", message))
|
||||
msg(name, S("@1 spawned", str))
|
||||
end
|
||||
end
|
||||
|
||||
local function craft_stack(player, pname, data, craft_rcp)
|
||||
local function craft_stack(player, data, craft_rcp)
|
||||
local inv = player:get_inventory()
|
||||
local rcp_usg = craft_rcp and "recipe" or "usage"
|
||||
local output = craft_rcp and data.recipes[data.rnum].output or data.usages[data.unum].output
|
||||
|
@ -1216,16 +1217,16 @@ local function craft_stack(player, pname, data, craft_rcp)
|
|||
|
||||
for _ = 1, iter do
|
||||
local c = min(stackmax, leftover)
|
||||
local message
|
||||
local str
|
||||
|
||||
if c > 1 then
|
||||
message = clr("#ff0", fmt("%s x %s", c, desc))
|
||||
str = clr("#ff0", fmt("%s x %s", c, desc))
|
||||
else
|
||||
message = clr("#ff0", fmt("%s", desc))
|
||||
str = clr("#ff0", fmt("%s", desc))
|
||||
end
|
||||
|
||||
local stack = ItemStack(fmt("%s %s", stackname, c))
|
||||
get_stack(player, pname, stack, message)
|
||||
get_stack(player, stack, str)
|
||||
leftover = leftover - stackmax
|
||||
end
|
||||
end
|
||||
|
@ -1257,7 +1258,7 @@ local function select_item(player, name, data, _f)
|
|||
local stack = ItemStack(item)
|
||||
local stackmax = stack:get_stack_max()
|
||||
stack = fmt("%s %s", item, stackmax)
|
||||
return get_stack(player, name, stack, clr("#ff0", fmt("%u x %s", stackmax, get_desc(item))))
|
||||
return get_stack(player, stack, clr("#ff0", fmt("%u x %s", stackmax, get_desc(item))))
|
||||
end
|
||||
|
||||
if item == data.query_item then return end
|
||||
|
@ -1279,14 +1280,6 @@ local function repairable(tool)
|
|||
return toolrepair and def and def.groups and def.groups.disable_repair ~= 1
|
||||
end
|
||||
|
||||
local function get_waypoint(data, id)
|
||||
for i, v in ipairs(data.waypoints) do
|
||||
if id == v.id then
|
||||
return v, i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function is_fav(favs, query_item)
|
||||
local fav, i
|
||||
for j = 1, #favs do
|
||||
|
@ -1838,21 +1831,24 @@ local function get_panels(player, data, fs)
|
|||
end
|
||||
end
|
||||
|
||||
local function add_subtitle(fs, name, y, ctn_len, font_size, label)
|
||||
local function add_subtitle(fs, name, y, ctn_len, font_size, sep, label)
|
||||
fs(fmt("style[%s;font=bold;font_size=%u]", name, font_size))
|
||||
fs("button", 0, y, ctn_len, 0.5, name, ESC(label))
|
||||
fs("image", 0, y + 0.55, ctn_len, 0.035, PNG.bar)
|
||||
|
||||
if sep then
|
||||
fs("image", 0, y + 0.55, ctn_len, 0.035, PNG.bar)
|
||||
end
|
||||
end
|
||||
|
||||
local function get_award_list(data, fs, ctn_len, yextra, award_list, awards_unlocked, award_list_nb)
|
||||
local percent = fmt("%.1f%%", (awards_unlocked * 100) / award_list_nb):gsub(".0", "")
|
||||
|
||||
add_subtitle(fs, "awards", yextra, ctn_len, 18,
|
||||
add_subtitle(fs, "awards", yextra, ctn_len, 18, false,
|
||||
ES("Achievements: @1 of @2 (@3)", awards_unlocked, award_list_nb, percent))
|
||||
|
||||
for i = 1, award_list_nb do
|
||||
local award = award_list[i]
|
||||
local y = yextra - 0.5 + i + (i * 0.3)
|
||||
local y = yextra - 0.6 + i + (i * 0.3)
|
||||
|
||||
local def, progress = award.def, award.progress
|
||||
local title, desc = def.title, def.description
|
||||
|
@ -1920,10 +1916,9 @@ local function get_waypoint_fs(fs, data, name, yextra, ctn_len)
|
|||
fs(fmt("tooltip[waypoint_add;%s]", ES"Add waypoint"))
|
||||
|
||||
if #data.waypoints == 0 then return end
|
||||
fs("image", 0, yextra + 2, ctn_len, 0.035, PNG.bar)
|
||||
|
||||
for i, v in ipairs(data.waypoints) do
|
||||
local y = yextra + 1.65 + (i - (i * 0.3))
|
||||
local y = yextra + 1.35 + (i - (i * 0.3))
|
||||
local icon_size, yi = 0.35, y + 0.12
|
||||
|
||||
fs("style_type[box;colors=#bababa30,#bababa30,#bababa05,#bababa05]")
|
||||
|
@ -1945,23 +1940,23 @@ local function get_waypoint_fs(fs, data, name, yextra, ctn_len)
|
|||
|
||||
fs("label", 0.15, y + 0.33, clr(fmt("#%s", hex), waypoint_name))
|
||||
|
||||
local del = fmt("waypoint_%u_delete", v.id)
|
||||
local del = fmt("waypoint_%u_delete", i)
|
||||
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]", del, PNG.trash, PNG.trash_hover))
|
||||
fs("image_button", ctn_len - 0.5, yi, icon_size, icon_size, "", del, "")
|
||||
fs(fmt("tooltip[%s;%s]", del, ES"Remove waypoint"))
|
||||
|
||||
local rfs = fmt("waypoint_%u_refresh", v.id)
|
||||
local rfs = fmt("waypoint_%u_refresh", i)
|
||||
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]", rfs, PNG.refresh, PNG.refresh_hover))
|
||||
fs("image_button", ctn_len - 1, yi, icon_size, icon_size, "", rfs, "")
|
||||
fs(fmt("tooltip[%s;%s]", rfs, ES"Change color"))
|
||||
|
||||
local vsb = fmt("waypoint_%u_hide", v.id)
|
||||
local vsb = fmt("waypoint_%u_hide", i)
|
||||
fs(fmt("style[%s;fgimg=%s;content_offset=0]", vsb, v.hide and PNG.nonvisible or PNG.visible))
|
||||
fs("image_button", ctn_len - 1.5, yi, icon_size, icon_size, "", vsb, "")
|
||||
fs(fmt("tooltip[%s;%s]", vsb, v.hide and ES"Show waypoint" or ES"Hide waypoint"))
|
||||
|
||||
if core.is_creative_enabled(name) then
|
||||
local tp = fmt("waypoint_%u_teleport", v.id)
|
||||
local tp = fmt("waypoint_%u_teleport", i)
|
||||
|
||||
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]",
|
||||
tp, PNG.teleport, PNG.teleport_hover))
|
||||
|
@ -1976,7 +1971,7 @@ end
|
|||
|
||||
local function get_ctn_content(fs, data, player, yoffset, ctn_len, award_list, awards_unlocked, award_list_nb)
|
||||
local name = player:get_player_name()
|
||||
add_subtitle(fs, "player_name", 0, ctn_len, 22, ESC(name))
|
||||
add_subtitle(fs, "player_name", 0, ctn_len, 22, true, ESC(name))
|
||||
|
||||
local hp = damage_enabled and (data.hp or player:get_hp()) or 20
|
||||
local half = ceil((hp / 2) % 1)
|
||||
|
@ -2059,14 +2054,15 @@ local function get_ctn_content(fs, data, player, yoffset, ctn_len, award_list, a
|
|||
|
||||
sks = concat(sks, ","):gsub(";", "")
|
||||
|
||||
fs(fmt("dropdown[0,%f;4,0.6;skins;%s;%u;true]", yextra + 0.7, sks, data.skin_id or 1))
|
||||
fs("label", 0, yextra + 0.85, fmt("%s:", ES"Select a skin"))
|
||||
fs(fmt("dropdown[0,%f;4,0.6;skins;%s;%u;true]", yextra + 1.1, sks, data.skin_id or 1))
|
||||
else
|
||||
not_installed("skinsdb")
|
||||
end
|
||||
|
||||
elseif data.subcat == 4 then
|
||||
if __awards then
|
||||
yextra = yextra + 0.8
|
||||
yextra = yextra + 0.7
|
||||
get_award_list(data, fs, ctn_len, yextra, award_list, awards_unlocked, award_list_nb)
|
||||
else
|
||||
not_installed("awards")
|
||||
|
@ -2365,7 +2361,7 @@ local function panel_fields(player, data, fields)
|
|||
data.scrbar_usg = sb_usg and tonum(match(sb_usg, "%d+"))
|
||||
|
||||
elseif fields.craft_rcp or fields.craft_usg then
|
||||
craft_stack(player, name, data, fields.craft_rcp)
|
||||
craft_stack(player, data, fields.craft_rcp)
|
||||
else
|
||||
select_item(player, name, data, fields)
|
||||
end
|
||||
|
@ -2416,12 +2412,18 @@ local function get_inventory_fs(player, data, fs)
|
|||
|
||||
if props.mesh ~= "" then
|
||||
local anim = player:get_local_animation()
|
||||
--fs("style[player_model;bgcolor=black]")
|
||||
local armor_skin = __3darmor or __skinsdb
|
||||
local t = {}
|
||||
|
||||
for _, v in ipairs(props.textures) do
|
||||
t[#t + 1] = ESC(v):gsub(",", "!")
|
||||
end
|
||||
|
||||
local textures = concat(t, ","):gsub("!", ",")
|
||||
|
||||
--fs("style[player_model;bgcolor=black]")
|
||||
fs("model", 0.2, 0.2, armor_skin and 4 or 3.4, armor_skin and ctn_hgt or 5.8,
|
||||
"player_model",
|
||||
props.mesh, concat(props.textures, ","), "0,-150", "false", "false",
|
||||
"player_model", props.mesh, textures, "0,-150", "false", "false",
|
||||
fmt("%u,%u", anim.x, anim.y))
|
||||
else
|
||||
local size = 2.5
|
||||
|
@ -2566,11 +2568,12 @@ i3.new_tab {
|
|||
elseif find(field, "waypoint_%d+") then
|
||||
local id, action = match(field, "_(%d+)_(%w+)$")
|
||||
id = tonum(id)
|
||||
local waypoint, _id = get_waypoint(data, id)
|
||||
local waypoint = data.waypoints[id]
|
||||
if not waypoint then return end
|
||||
|
||||
if action == "delete" then
|
||||
player:hud_remove(waypoint.id)
|
||||
remove(data.waypoints, _id)
|
||||
remove(data.waypoints, id)
|
||||
|
||||
elseif action == "teleport" then
|
||||
local pos = waypoint.pos
|
||||
|
@ -2582,7 +2585,7 @@ i3.new_tab {
|
|||
elseif action == "refresh" then
|
||||
local color = random(0xffffff)
|
||||
waypoint.color = color
|
||||
player:hud_change(id, "number", color)
|
||||
player:hud_change(waypoint.id, "number", color)
|
||||
|
||||
elseif action == "hide" then
|
||||
if waypoint.hide then
|
||||
|
@ -2948,30 +2951,32 @@ end)
|
|||
local function init_backpack(player)
|
||||
local name = player:get_player_name()
|
||||
local data = pdata[name]
|
||||
local inv = player:get_inventory()
|
||||
|
||||
local player_inv = player:get_inventory()
|
||||
player_inv:set_size("main", INV_SIZE)
|
||||
inv:set_size("main", INV_SIZE)
|
||||
|
||||
data.bag = create_inventory(fmt("%s_backpack", name), {
|
||||
allow_put = function(inv, listname, _, stack)
|
||||
local empty = inv:get_stack(listname, 1):is_empty()
|
||||
allow_put = function(_inv, listname, _, stack)
|
||||
local empty = _inv:get_stack(listname, 1):is_empty()
|
||||
|
||||
if empty and sub(stack:get_name(), 1, 7) == "i3:bag_" then
|
||||
return 1
|
||||
end
|
||||
|
||||
msg(name, ES"This is not a backpack")
|
||||
|
||||
return 0
|
||||
end,
|
||||
|
||||
on_put = function(_, _, _, stack)
|
||||
data.bag_size = match(stack:get_name(), "_(%w+)$")
|
||||
player_inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
set_fs(player)
|
||||
end,
|
||||
|
||||
on_take = function()
|
||||
for i = INV_SIZE + 1, BAG_SIZES[data.bag_size] do
|
||||
local stack = player_inv:get_stack("main", i)
|
||||
local stack = inv:get_stack("main", i)
|
||||
|
||||
if not stack:is_empty() then
|
||||
spawn_item(player, stack)
|
||||
|
@ -2979,7 +2984,7 @@ local function init_backpack(player)
|
|||
end
|
||||
|
||||
data.bag_size = nil
|
||||
player_inv:set_size("main", INV_SIZE)
|
||||
inv:set_size("main", INV_SIZE)
|
||||
|
||||
set_fs(player)
|
||||
end,
|
||||
|
@ -2989,7 +2994,7 @@ local function init_backpack(player)
|
|||
|
||||
if data.bag_size then
|
||||
data.bag:set_stack("main", 1, fmt("i3:bag_%s", data.bag_size))
|
||||
player_inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1279,14 +1279,6 @@ local function repairable(tool)
|
|||
return toolrepair and def and def.groups and def.groups.disable_repair ~= 1
|
||||
end
|
||||
|
||||
local function get_waypoint(data, id)
|
||||
for i, v in ipairs(data.waypoints) do
|
||||
if id == v.id then
|
||||
return v, i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function is_fav(favs, query_item)
|
||||
local fav, i
|
||||
for j = 1, #favs do
|
||||
|
@ -1838,21 +1830,24 @@ local function get_panels(player, data, fs)
|
|||
end
|
||||
end
|
||||
|
||||
local function add_subtitle(fs, name, y, ctn_len, font_size, label)
|
||||
local function add_subtitle(fs, name, y, ctn_len, font_size, sep, label)
|
||||
fs(fmt("style[%s;font=bold;font_size=%u]", name, font_size))
|
||||
fs("button", 0, y, ctn_len, 0.5, name, ESC(label))
|
||||
fs("image", 0, y + 0.55, ctn_len, 0.035, PNG.bar)
|
||||
|
||||
if sep then
|
||||
fs("image", 0, y + 0.55, ctn_len, 0.035, PNG.bar)
|
||||
end
|
||||
end
|
||||
|
||||
local function get_award_list(data, fs, ctn_len, yextra, award_list, awards_unlocked, award_list_nb)
|
||||
local percent = fmt("%.1f%%", (awards_unlocked * 100) / award_list_nb):gsub(".0", "")
|
||||
|
||||
add_subtitle(fs, "awards", yextra, ctn_len, 18,
|
||||
add_subtitle(fs, "awards", yextra, ctn_len, 18, false,
|
||||
ES("Achievements: @1 of @2 (@3)", awards_unlocked, award_list_nb, percent))
|
||||
|
||||
for i = 1, award_list_nb do
|
||||
local award = award_list[i]
|
||||
local y = yextra - 0.5 + i + (i * 0.3)
|
||||
local y = yextra - 0.6 + i + (i * 0.3)
|
||||
|
||||
local def, progress = award.def, award.progress
|
||||
local title, desc = def.title, def.description
|
||||
|
@ -1920,10 +1915,9 @@ local function get_waypoint_fs(fs, data, name, yextra, ctn_len)
|
|||
fs(fmt("tooltip[waypoint_add;%s]", ES"Add waypoint"))
|
||||
|
||||
if #data.waypoints == 0 then return end
|
||||
fs("image", 0, yextra + 2, ctn_len, 0.035, PNG.bar)
|
||||
|
||||
for i, v in ipairs(data.waypoints) do
|
||||
local y = yextra + 1.65 + (i - (i * 0.3))
|
||||
local y = yextra + 1.35 + (i - (i * 0.3))
|
||||
local icon_size, yi = 0.35, y + 0.12
|
||||
|
||||
fs("style_type[box;colors=#bababa30,#bababa30,#bababa05,#bababa05]")
|
||||
|
@ -1945,23 +1939,23 @@ local function get_waypoint_fs(fs, data, name, yextra, ctn_len)
|
|||
|
||||
fs("label", 0.15, y + 0.33, clr(fmt("#%s", hex), waypoint_name))
|
||||
|
||||
local del = fmt("waypoint_%u_delete", v.id)
|
||||
local del = fmt("waypoint_%u_delete", i)
|
||||
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]", del, PNG.trash, PNG.trash_hover))
|
||||
fs("image_button", ctn_len - 0.5, yi, icon_size, icon_size, "", del, "")
|
||||
fs(fmt("tooltip[%s;%s]", del, ES"Remove waypoint"))
|
||||
|
||||
local rfs = fmt("waypoint_%u_refresh", v.id)
|
||||
local rfs = fmt("waypoint_%u_refresh", i)
|
||||
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]", rfs, PNG.refresh, PNG.refresh_hover))
|
||||
fs("image_button", ctn_len - 1, yi, icon_size, icon_size, "", rfs, "")
|
||||
fs(fmt("tooltip[%s;%s]", rfs, ES"Change color"))
|
||||
|
||||
local vsb = fmt("waypoint_%u_hide", v.id)
|
||||
local vsb = fmt("waypoint_%u_hide", i)
|
||||
fs(fmt("style[%s;fgimg=%s;content_offset=0]", vsb, v.hide and PNG.nonvisible or PNG.visible))
|
||||
fs("image_button", ctn_len - 1.5, yi, icon_size, icon_size, "", vsb, "")
|
||||
fs(fmt("tooltip[%s;%s]", vsb, v.hide and ES"Show waypoint" or ES"Hide waypoint"))
|
||||
|
||||
if core.is_creative_enabled(name) then
|
||||
local tp = fmt("waypoint_%u_teleport", v.id)
|
||||
local tp = fmt("waypoint_%u_teleport", i)
|
||||
|
||||
fs(fmt("style[%s;fgimg=%s;fgimg_hovered=%s;content_offset=0]",
|
||||
tp, PNG.teleport, PNG.teleport_hover))
|
||||
|
@ -1976,7 +1970,7 @@ end
|
|||
|
||||
local function get_ctn_content(fs, data, player, yoffset, ctn_len, award_list, awards_unlocked, award_list_nb)
|
||||
local name = player:get_player_name()
|
||||
add_subtitle(fs, "player_name", 0, ctn_len, 22, ESC(name))
|
||||
add_subtitle(fs, "player_name", 0, ctn_len, 22, true, ESC(name))
|
||||
|
||||
local hp = damage_enabled and (data.hp or player:get_hp()) or 20
|
||||
local half = ceil((hp / 2) % 1)
|
||||
|
@ -2055,14 +2049,15 @@ local function get_ctn_content(fs, data, player, yoffset, ctn_len, award_list, a
|
|||
|
||||
sks = concat(sks, ","):gsub(";", "")
|
||||
|
||||
fs(fmt("dropdown[0,%f;4,0.6;skins;%s;%u;true]", yextra + 0.7, sks, data.skin_id or 1))
|
||||
fs("label", 0, yextra + 0.85, fmt("%s:", ES"Select a skin"))
|
||||
fs(fmt("dropdown[0,%f;4,0.6;skins;%s;%u;true]", yextra + 1.1, sks, data.skin_id or 1))
|
||||
else
|
||||
not_installed("skinsdb")
|
||||
end
|
||||
|
||||
elseif data.subcat == 4 then
|
||||
if __awards then
|
||||
yextra = yextra + 0.8
|
||||
yextra = yextra + 0.7
|
||||
get_award_list(data, fs, ctn_len, yextra, award_list, awards_unlocked, award_list_nb)
|
||||
else
|
||||
not_installed("awards")
|
||||
|
@ -2412,12 +2407,18 @@ local function get_inventory_fs(player, data, fs)
|
|||
|
||||
if props.mesh ~= "" then
|
||||
local anim = player:get_local_animation()
|
||||
--fs("style[player_model;bgcolor=black]")
|
||||
local armor_skin = __3darmor or __skinsdb
|
||||
local t = {}
|
||||
|
||||
for _, v in ipairs(props.textures) do
|
||||
t[#t + 1] = ESC(v):gsub(",", "!")
|
||||
end
|
||||
|
||||
local textures = concat(t, ","):gsub("!", ",")
|
||||
|
||||
--fs("style[player_model;bgcolor=black]")
|
||||
fs("model", 0.2, 0.2, armor_skin and 4 or 3.4, armor_skin and ctn_hgt or 5.8,
|
||||
"player_model",
|
||||
props.mesh, concat(props.textures, ","), "0,-150", "false", "false",
|
||||
"player_model", props.mesh, textures, "0,-150", "false", "false",
|
||||
fmt("%u,%u", anim.x, anim.y))
|
||||
else
|
||||
local size = 2.5
|
||||
|
@ -2561,11 +2562,12 @@ i3.new_tab {
|
|||
elseif find(field, "waypoint_%d+") then
|
||||
local id, action = match(field, "_(%d+)_(%w+)$")
|
||||
id = tonum(id)
|
||||
local waypoint, _id = get_waypoint(data, id)
|
||||
local waypoint = data.waypoints[id]
|
||||
if not waypoint then return end
|
||||
|
||||
if action == "delete" then
|
||||
player:hud_remove(waypoint.id)
|
||||
remove(data.waypoints, _id)
|
||||
remove(data.waypoints, id)
|
||||
|
||||
elseif action == "teleport" then
|
||||
local pos = waypoint.pos
|
||||
|
@ -2577,7 +2579,7 @@ i3.new_tab {
|
|||
elseif action == "refresh" then
|
||||
local color = random(0xffffff)
|
||||
waypoint.color = color
|
||||
player:hud_change(id, "number", color)
|
||||
player:hud_change(waypoint.id, "number", color)
|
||||
|
||||
elseif action == "hide" then
|
||||
if waypoint.hide then
|
||||
|
@ -2943,30 +2945,32 @@ end)
|
|||
local function init_backpack(player)
|
||||
local name = player:get_player_name()
|
||||
local data = pdata[name]
|
||||
local inv = player:get_inventory()
|
||||
|
||||
local player_inv = player:get_inventory()
|
||||
player_inv:set_size("main", INV_SIZE)
|
||||
inv:set_size("main", INV_SIZE)
|
||||
|
||||
data.bag = create_inventory(fmt("%s_backpack", name), {
|
||||
allow_put = function(inv, listname, _, stack)
|
||||
local empty = inv:get_stack(listname, 1):is_empty()
|
||||
allow_put = function(_inv, listname, _, stack)
|
||||
local empty = _inv:get_stack(listname, 1):is_empty()
|
||||
|
||||
if empty and sub(stack:get_name(), 1, 7) == "i3:bag_" then
|
||||
return 1
|
||||
end
|
||||
|
||||
msg(name, ES"This is not a backpack")
|
||||
|
||||
return 0
|
||||
end,
|
||||
|
||||
on_put = function(_, _, _, stack)
|
||||
data.bag_size = match(stack:get_name(), "_(%w+)$")
|
||||
player_inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
set_fs(player)
|
||||
end,
|
||||
|
||||
on_take = function()
|
||||
for i = INV_SIZE + 1, BAG_SIZES[data.bag_size] do
|
||||
local stack = player_inv:get_stack("main", i)
|
||||
local stack = inv:get_stack("main", i)
|
||||
|
||||
if not stack:is_empty() then
|
||||
spawn_item(player, stack)
|
||||
|
@ -2974,7 +2978,7 @@ local function init_backpack(player)
|
|||
end
|
||||
|
||||
data.bag_size = nil
|
||||
player_inv:set_size("main", INV_SIZE)
|
||||
inv:set_size("main", INV_SIZE)
|
||||
|
||||
set_fs(player)
|
||||
end,
|
||||
|
@ -2984,7 +2988,7 @@ local function init_backpack(player)
|
|||
|
||||
if data.bag_size then
|
||||
data.bag:set_stack("main", 1, fmt("i3:bag_%s", data.bag_size))
|
||||
player_inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
inv:set_size("main", BAG_SIZES[data.bag_size])
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ statbars.
|
|||
This mod is compatible with the HUD Bars [`hudbars`] mod.
|
||||
Compability with other HUD-related mods is possible, but not guaranteed.
|
||||
|
||||
Version: 1.0.0
|
||||
Version: 1.2.0
|
||||
|
||||
## Credits
|
||||
Released by Wuzzy.
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Displays the name of the wielded item.
|
|
@ -42,7 +42,7 @@ local function set_hud(player)
|
|||
alignment = {x=0, y=0},
|
||||
number = 0xFFFFFF ,
|
||||
text = "",
|
||||
z_index = 10,
|
||||
z_index = 100,
|
||||
})
|
||||
end
|
||||
|
||||
|
@ -60,6 +60,15 @@ minetest.register_on_leaveplayer(function(player)
|
|||
wieldindex[name] = nil
|
||||
end)
|
||||
|
||||
local function get_first_line(text)
|
||||
-- Cut off text after first newline
|
||||
local firstnewline = string.find(text, "\n")
|
||||
if firstnewline then
|
||||
text = string.sub(text, 1, firstnewline-1)
|
||||
end
|
||||
return text
|
||||
end
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
local player_name = player:get_player_name()
|
||||
|
@ -82,26 +91,43 @@ minetest.register_globalstep(function(dtime)
|
|||
|
||||
if huds[player_name] then
|
||||
|
||||
-- Get description (various fallback checks for old Minetest versions)
|
||||
local def = minetest.registered_items[wname]
|
||||
local meta = wstack:get_meta()
|
||||
|
||||
--[[ Get description. Order of preference:
|
||||
* description from metadata
|
||||
* description from item definition
|
||||
* itemstring ]]
|
||||
local desc = meta:get_string("description")
|
||||
if (desc == nil or desc == "") and def then
|
||||
desc = def.description
|
||||
local desc
|
||||
if wstack.get_short_description then
|
||||
-- get_short_description()
|
||||
desc = wstack:get_short_description()
|
||||
end
|
||||
if desc == nil or desc == "" then
|
||||
if (not desc or desc == "") and wstack.get_description then
|
||||
-- get_description()
|
||||
desc = wstack:get_description()
|
||||
desc = get_first_line(desc)
|
||||
end
|
||||
if (not desc or desc == "") and not wstack.get_description then
|
||||
-- Metadata (old versions only)
|
||||
local meta = wstack:get_meta()
|
||||
desc = meta:get_string("description")
|
||||
desc = get_first_line(desc)
|
||||
end
|
||||
if not desc or desc == "" then
|
||||
-- Item definition
|
||||
desc = def.description
|
||||
desc = get_first_line(desc)
|
||||
end
|
||||
if not desc or desc == "" then
|
||||
-- Final fallback: itemstring
|
||||
desc = wname
|
||||
end
|
||||
-- Cut off item description after first newline
|
||||
local firstnewline = string.find(desc, "\n")
|
||||
if firstnewline then
|
||||
desc = string.sub(desc, 1, firstnewline-1)
|
||||
|
||||
-- Print description
|
||||
if desc then
|
||||
-- Optionally append the 'technical' itemname
|
||||
local tech = minetest.settings:get_bool("show_wielded_item_itemname", false)
|
||||
if tech and desc ~= "" then
|
||||
desc = desc .. " ["..wname.."]"
|
||||
end
|
||||
player:hud_change(huds[player_name], 'text', desc)
|
||||
end
|
||||
player:hud_change(huds[player_name], 'text', desc)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
name = show_wielded_item
|
||||
description = Displays the name of the wielded item.
|
||||
optional_depends = hudbars
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
#If true, also append the 'technical' itemname.
|
||||
show_wielded_item_itemname (Show technical itemname) bool false
|
||||
|
||||
#Use this setting to manually set the vertical offset of the label which shows
|
||||
#the name of the wielded item. The offset is in pixels from the bottom of the
|
||||
#screen.
|
||||
|
|
|
@ -8,7 +8,7 @@ local use_cmi = minetest.global_exists("cmi")
|
|||
|
||||
mobs = {
|
||||
mod = "redo",
|
||||
version = "20210411",
|
||||
version = "20210418",
|
||||
intllib = S,
|
||||
invis = minetest.global_exists("invisibility") and invisibility or {}
|
||||
}
|
||||
|
@ -224,10 +224,10 @@ function mob_class:collision()
|
|||
|
||||
for _,object in ipairs(minetest.get_objects_inside_radius(pos, width)) do
|
||||
|
||||
if object:is_player()
|
||||
or (object:get_luaentity()
|
||||
and object:get_luaentity()._cmi_is_mob == true
|
||||
and object ~= self.object) then
|
||||
if object:is_player() then
|
||||
-- or (object:get_luaentity()
|
||||
-- and object:get_luaentity()._cmi_is_mob == true
|
||||
-- and object ~= self.object) then
|
||||
|
||||
local pos2 = object:get_pos()
|
||||
local vec = {x = pos.x - pos2.x, z = pos.z - pos2.z}
|
||||
|
|
|
@ -10,6 +10,23 @@ No dependencies. Licensed under the MIT License. Written by Lars Mueller aka LMD
|
|||
|
||||
Mostly self-documenting code. Mod namespace is `modlib` or `_ml`, containing all variables & functions.
|
||||
|
||||
### Persistence
|
||||
|
||||
#### Lua Log Files
|
||||
|
||||
A data log file based on Lua statements. **Experimental.** High performance. Example from `test.lua`:
|
||||
|
||||
```lua
|
||||
local logfile = persistence.lua_log_file.new(mod.get_resource"logfile.test.lua", {})
|
||||
logfile:init()
|
||||
logfile.root = {}
|
||||
logfile:rewrite()
|
||||
logfile:set_root({a = 1}, {b = 2, c = 3})
|
||||
logfile:close()
|
||||
logfile:init()
|
||||
assert(table.equals(logfile.root, {[{a = 1}] = {b = 2, c = 3}}))
|
||||
```
|
||||
|
||||
### Bluon
|
||||
|
||||
Binary Lua object notation. **Experimental.** Handling of subnormal numbers (very small floats) may be broken.
|
||||
|
@ -205,7 +222,20 @@ This is best left explicit. First, you shouldn't be using numbered field keys if
|
|||
4. [`json`](https://json.org)
|
||||
* Not recommended
|
||||
|
||||
## Versions
|
||||
## Release Notes
|
||||
|
||||
### `rolling-68`
|
||||
|
||||
* Replace changelog by release notes (see the commit log for changes)
|
||||
|
||||
### `rolling-67`
|
||||
|
||||
* Fixes various things, **most importantly objects indexing the global table**
|
||||
* Concerns `kdtree`, `trie`, `ranked_set`, `vector`, `schema`
|
||||
|
||||
### `rolling-66`
|
||||
|
||||
* Adds `modlib.persistence.lua_log_file`
|
||||
|
||||
### `rolling-62`
|
||||
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
local metatable = {__index = getfenv(1)}
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
--! experimental
|
||||
--+ Reads a single BB3D chunk from a stream
|
||||
|
@ -195,12 +198,17 @@ function read(stream)
|
|||
flags = flags
|
||||
}
|
||||
while content() do
|
||||
table.insert(bone, {
|
||||
frame = int(),
|
||||
position = position and vector3() or nil,
|
||||
scale = scale and vector3() or nil,
|
||||
rotation = rotation and quaternion() or nil
|
||||
})
|
||||
local frame = {frame = int()}
|
||||
if position then
|
||||
frame.position = vector3()
|
||||
end
|
||||
if scale then
|
||||
frame.scale = vector3()
|
||||
end
|
||||
if rotation then
|
||||
frame.rotation = quaternion()
|
||||
end
|
||||
table.insert(bone, frame)
|
||||
end
|
||||
-- Ensure frames are sorted ascending
|
||||
table.sort(bone, function(a, b) return a.frame < b.frame end)
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
local rawget, rawset = rawget, rawset
|
||||
|
||||
-- Lua version check
|
||||
if _VERSION then
|
||||
if _VERSION < "Lua 5" then
|
||||
|
@ -50,7 +52,8 @@ for _, file in pairs{
|
|||
"ranked_set",
|
||||
"binary",
|
||||
"b3d",
|
||||
"bluon"
|
||||
"bluon",
|
||||
"persistence"
|
||||
} do
|
||||
modules[file] = file
|
||||
end
|
||||
|
@ -77,7 +80,7 @@ end
|
|||
local load_module, get_resource, loadfile_exports
|
||||
modlib = setmetatable({
|
||||
-- TODO bump on release
|
||||
version = 62,
|
||||
version = 68,
|
||||
modname = minetest and minetest.get_current_modname(),
|
||||
dir_delim = rawget(_G, "DIR_DELIM") or "/",
|
||||
_RG = setmetatable({}, {
|
||||
|
@ -126,8 +129,11 @@ function loadfile_exports(filename)
|
|||
return env
|
||||
end
|
||||
|
||||
local init_path = arg and arg[0]
|
||||
local parent_dir = init_path and init_path:match"^.[/\\]" or ""
|
||||
local parent_dir
|
||||
if not minetest then
|
||||
local init_path = arg and arg[0]
|
||||
parent_dir = init_path and init_path:match"^.[/\\]" or ""
|
||||
end
|
||||
function load_module(module_name)
|
||||
local file = module_name .. ".lua"
|
||||
return loadfile_exports(minetest and get_resource(modlib.modname, file) or (parent_dir .. file))
|
||||
|
@ -148,6 +154,8 @@ end
|
|||
|
||||
_ml = modlib
|
||||
|
||||
modlib.mod.include"test.lua"
|
||||
--modlib.mod.include"bench.lua"
|
||||
--[[
|
||||
--modlib.mod.include"test.lua"
|
||||
]]
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
local metatable = {__index = getfenv(1)}
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
distance = modlib.vector.distance
|
||||
|
||||
|
|
|
@ -0,0 +1,153 @@
|
|||
lua_log_file = {}
|
||||
local files = {}
|
||||
local metatable = {__index = lua_log_file}
|
||||
|
||||
function lua_log_file.new(file_path, root)
|
||||
local self = setmetatable({file_path = assert(file_path), root = root}, metatable)
|
||||
if minetest then
|
||||
files[self] = true
|
||||
end
|
||||
return self
|
||||
end
|
||||
|
||||
function lua_log_file:load()
|
||||
-- Bytecode is blocked by the engine
|
||||
local read = assert(loadfile(self.file_path))
|
||||
-- math.huge is serialized to inf
|
||||
local env = {inf = math.huge}
|
||||
setfenv(read, env)
|
||||
read()
|
||||
env.R = env.R or {{}}
|
||||
self.reference_count = #env.R
|
||||
self.root = env.R[1]
|
||||
self.references = modlib.table.flip(env.R)
|
||||
end
|
||||
|
||||
function lua_log_file:open()
|
||||
self.file = io.open(self.file_path, "a+")
|
||||
end
|
||||
|
||||
function lua_log_file:init()
|
||||
if modlib.file.exists(self.file_path) then
|
||||
self:load()
|
||||
self:_rewrite()
|
||||
self:open()
|
||||
return
|
||||
end
|
||||
self:open()
|
||||
self.root = {}
|
||||
self:_write()
|
||||
end
|
||||
|
||||
function lua_log_file:log(statement)
|
||||
self.file:write(statement)
|
||||
self.file:write"\n"
|
||||
end
|
||||
|
||||
function lua_log_file:flush()
|
||||
self.file:flush()
|
||||
end
|
||||
|
||||
function lua_log_file:close()
|
||||
self.file:close()
|
||||
self.file = nil
|
||||
files[self] = nil
|
||||
end
|
||||
|
||||
if minetest then
|
||||
minetest.register_on_shutdown(function()
|
||||
for self in pairs(files) do
|
||||
self.file:close()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function lua_log_file:_dump(value, is_key)
|
||||
if value == nil then
|
||||
return "nil"
|
||||
end
|
||||
if value == true then
|
||||
return "true"
|
||||
end
|
||||
if value == false then
|
||||
return "false"
|
||||
end
|
||||
if value ~= value then
|
||||
-- nan
|
||||
return "0/0"
|
||||
end
|
||||
local _type = type(value)
|
||||
if _type == "number" then
|
||||
return ("%.17g"):format(value)
|
||||
end
|
||||
if self.references[value] then
|
||||
return "R[" .. self.references[value] .. "]"
|
||||
end
|
||||
self.reference_count = self.reference_count + 1
|
||||
local reference = self.reference_count
|
||||
local key = "R[" .. reference .."]"
|
||||
self.references[value] = reference
|
||||
local formatted
|
||||
if _type == "string" then
|
||||
if is_key and value:len() <= key:len() and value:match"[%a_][%a%d_]*" then
|
||||
-- Short key
|
||||
return value, true
|
||||
end
|
||||
formatted = ("%q"):format(value)
|
||||
if formatted:len() <= key:len() then
|
||||
-- Short string
|
||||
return formatted
|
||||
end
|
||||
elseif _type == "table" then
|
||||
local entries = {}
|
||||
for _, value in ipairs(value) do
|
||||
table.insert(entries, self:_dump(value))
|
||||
end
|
||||
for key, value in pairs(value) do
|
||||
if type(key) ~= "number" or key % 1 ~= 0 or key < 1 or key > #value then
|
||||
local dumped, short = self:_dump(key, true)
|
||||
table.insert(entries, (short and dumped or ("[" .. dumped .. "]")) .. "=" .. self:_dump(value))
|
||||
end
|
||||
end
|
||||
formatted = "{" .. table.concat(entries, ";") .. "}"
|
||||
else
|
||||
error("unsupported type: " .. _type)
|
||||
end
|
||||
self:log(key .. "=" .. formatted)
|
||||
return key
|
||||
end
|
||||
|
||||
function lua_log_file:set(table, key, value)
|
||||
table[key] = value
|
||||
if not self.references[table] then
|
||||
error"orphan table"
|
||||
end
|
||||
table = self:_dump(table)
|
||||
local key, short_key = self:_dump(key, true)
|
||||
self:log(table .. (short_key and ("." .. key) or ("[" .. key .. "]")) .. "=" .. self:_dump(value))
|
||||
end
|
||||
|
||||
function lua_log_file:set_root(key, value)
|
||||
return self:set(self.root, key, value)
|
||||
end
|
||||
|
||||
function lua_log_file:_write()
|
||||
self.references = {}
|
||||
self.reference_count = 0
|
||||
self:log"R={}"
|
||||
self:_dump(self.root)
|
||||
end
|
||||
|
||||
function lua_log_file:_rewrite()
|
||||
self.file = io.open(self.file_path, "w+")
|
||||
self:_write()
|
||||
self.file:close()
|
||||
end
|
||||
|
||||
function lua_log_file:rewrite()
|
||||
if self.file then
|
||||
self.file:close()
|
||||
end
|
||||
self:_rewrite()
|
||||
self:open()
|
||||
end
|
|
@ -1,5 +1,7 @@
|
|||
local class = getfenv(1)
|
||||
local metatable = {__index = class}
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
comparator = modlib.table.default_comparator
|
||||
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
local schema = getfenv(1)
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
function new(def)
|
||||
-- TODO type inference, sanity checking etc.
|
||||
return setmetatable(def, {__index = schema})
|
||||
return setmetatable(def, metatable)
|
||||
end
|
||||
|
||||
local function field_name_to_title(name)
|
||||
|
|
|
@ -192,6 +192,15 @@ test_from_string("#333", 0x333333FF)
|
|||
test_from_string("#694269", 0x694269FF)
|
||||
test_from_string("#11223344", 0x11223344)
|
||||
|
||||
local logfile = persistence.lua_log_file.new(mod.get_resource"logfile.test.lua", {})
|
||||
logfile:init()
|
||||
logfile.root = {}
|
||||
logfile:rewrite()
|
||||
logfile:set_root({a = 1}, {b = 2, c = 3, d = _G.math.huge, e = -_G.math.huge})
|
||||
logfile:close()
|
||||
logfile:init()
|
||||
assert(table.equals(logfile.root, {[{a = 1}] = {b = 2, c = 3, d = _G.math.huge, e = -_G.math.huge}}))
|
||||
|
||||
-- in-game tests & b3d testing
|
||||
local tests = {
|
||||
-- depends on player_api
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
local trie = getfenv(1)
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
function new(table) return setmetatable(table or {}, trie) end
|
||||
function new(table) return setmetatable(table or {}, metatable) end
|
||||
|
||||
function insert(self, word, value, overwrite)
|
||||
for i = 1, word:len() do
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
local mt_vector = vector
|
||||
local vector = getfenv(1)
|
||||
local class = getfenv(1)
|
||||
|
||||
index_aliases = {
|
||||
x = 1,
|
||||
|
@ -16,7 +16,7 @@ metatable = {
|
|||
if index ~= nil then
|
||||
return table[index]
|
||||
end
|
||||
return vector[key]
|
||||
return rawget(class, key)
|
||||
end,
|
||||
__newindex = function(table, key, value)
|
||||
local index = letters[key]
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: beds
|
||||
Leave Bed=Ellitiĝu
|
||||
Good morning.=Bonan matenon.
|
||||
@1 of @2 players are in bed=@1 el @2 ludantoj estas en lito.
|
||||
Force night skip=Devigu nokta salton
|
||||
You can only sleep at night.=Vi povas nur dormi en la nokto.
|
||||
Fancy Bed=Luksa Lito
|
||||
Simple Bed=Simpla Lito
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: binoculars
|
||||
Binoculars=Binokolo
|
||||
Use with 'Zoom' key=Uzu per 'Zomo' klavo
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: boats
|
||||
Boat cruise mode on=La kroza maniero de la boato estas ŝaltita.
|
||||
Boat cruise mode off=La kroza maniero de la boato estas malŝaltita.
|
||||
Boat=Boato
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: bones
|
||||
Bones=Ostoj
|
||||
@1's old bones=La malnova ostoj de @1
|
||||
@1 died at @2.=@1 mortis ĉe @2
|
||||
@1 died at @2, and dropped their inventory.=@1 mortis ĉe @2, kaj ri delasis riaj objektoj.
|
||||
@1 died at @2, and bones were placed.=@1 mortis ĉe @2, kaj ostoj metis.
|
||||
@1's fresh bones=La nova ostoj de @1
|
||||
@1's bones=La ostoj de @1
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: butterflies
|
||||
White Butterfly=Blanka Papilio
|
||||
Red Butterfly=Ruĝa Papilio
|
||||
Violet Butterfly=Viola Papilio
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: carts
|
||||
Rail=Relo
|
||||
Powered Rail=Elektra Relo
|
||||
Brake Rail=Bremsa Relo
|
||||
Cart=Ĉaro
|
||||
(Sneak+Click to pick up)=(Ŝteliru+Alklaku por reprini)
|
|
@ -0,0 +1,10 @@
|
|||
# textdomain: creative
|
||||
Search=Serĉu
|
||||
Reset=Rekomencigu
|
||||
Previous page=Pasinta paĝo
|
||||
Next page=Sekvinta paĝo
|
||||
All=Ĉio
|
||||
Nodes=Nodoj
|
||||
Tools=Iloj
|
||||
Items=Objektoj
|
||||
Allow player to use creative inventory=Permesu la ludanto uzi la krea stoko
|
|
@ -0,0 +1,211 @@
|
|||
# textdomain: default
|
||||
Stone=Ŝtono
|
||||
Cobblestone=Pavimŝtono
|
||||
Stone Brick=Ŝtona Briko
|
||||
Stone Block=Ŝtona Ŝtipo
|
||||
Mossy Cobblestone=Muska Pavimŝtono
|
||||
Desert Stone=Dezerta Ŝtono
|
||||
Desert Cobblestone=Dezerta Pavimŝtono
|
||||
Desert Stone Brick=Dezerta Ŝtona Briko
|
||||
Desert Stone Block=Dezerta Ŝtona Ŝtipo
|
||||
Sandstone=Sablaŝtono
|
||||
Sandstone Brick=Sablaŝtono Briko
|
||||
Sandstone Block=Sablaŝtono Ŝtipo
|
||||
Desert Sandstone=Dezerta Sablaŝtono
|
||||
Desert Sandstone Brick=Dezerta Sablaŝtono Briko
|
||||
Desert Sandstone Block=Dezerta Sablaŝtono Ŝtipo
|
||||
Silver Sandstone=Arĝenta Sablaŝtono
|
||||
Silver Sandstone Brick=Arĝenta Sablaŝtono Briko
|
||||
Silver Sandstone Block=Arĝenta Sablaŝtono Ŝtipo
|
||||
Obsidian=Obsidiano
|
||||
Obsidian Brick=Obsidiana Briko
|
||||
Obsidian Block=Obsidiana Ŝtipo
|
||||
Dirt=Tero
|
||||
Dirt with Grass=Tero kun Herbo
|
||||
Dirt with Grass and Footsteps=Tero kun Herbo kaj Piedpaŝoj
|
||||
Dirt with Savanna Grass=Tero kun Savana Herbo
|
||||
Dirt with Snow=Tero kun Neĝo
|
||||
Dirt with Rainforest Litter=Tero kun Pluvarbara Folioj
|
||||
Dirt with Coniferous Litter=Tero kun Konifera Folioj
|
||||
Savanna Dirt=Savana Tero
|
||||
Savanna Dirt with Savanna Grass=Savana Tero kun Savana Herbo
|
||||
Permafrost=Ĉiamfrosto
|
||||
Permafrost with Stones=Ĉiamfrosto kun Ŝtonoj
|
||||
Permafrost with Moss=Ĉiamfrosto kun Musko
|
||||
Sand=Sablo
|
||||
Desert Sand=Dezerta Sablo
|
||||
Silver Sand=Arĝenta Sablo
|
||||
Gravel=Gruzo
|
||||
Clay=Argilo
|
||||
Snow=Neĝo
|
||||
Snow Block=Neĝa Ŝtipo
|
||||
Ice=Glacio
|
||||
Cave Ice=Kaverna Glacio
|
||||
Apple Tree=Poma Arbo
|
||||
Apple Wood Planks=Poma Ligna Tabuloj
|
||||
Apple Tree Sapling=Poma Arba Arbido
|
||||
Apple Tree Leaves=Poma Arba Folioj
|
||||
Apple=Pomo
|
||||
Apple Marker=Poma Marko
|
||||
Jungle Tree=Ĝangala Arbo
|
||||
Jungle Wood Planks=Ĝangala Ligna Tabuloj
|
||||
Jungle Tree Leaves=Ĝangala Arba Folioj
|
||||
Jungle Tree Sapling=Ĝangala Arba Arbido
|
||||
Emergent Jungle Tree Sapling=Nova Ĝangala Arba Arbido
|
||||
Pine Tree=Pina Arbo
|
||||
Pine Wood Planks=Pina Ligna Tabuloj
|
||||
Pine Needles=Pinpingloj
|
||||
Pine Tree Sapling=Pina Arba Arbido
|
||||
Acacia Tree=Akacia Arbo
|
||||
Acacia Wood Planks=Akacia Ligna Tabuloj
|
||||
Acacia Tree Leaves=Akacia Arba Folioj
|
||||
Acacia Tree Sapling=Akacia Arba Arbido
|
||||
Aspen Tree=Tremola Arba
|
||||
Aspen Wood Planks=Tremola Ligna Tabuloj
|
||||
Aspen Tree Leaves=Tremola Arbo Folioj
|
||||
Aspen Tree Sapling=Tremola Arba Arbido
|
||||
Coal Ore=Karba Minaĵo
|
||||
Coal Block=Karba Ŝtipo
|
||||
Iron Ore=Fera Minaĵo
|
||||
Steel Block=Ŝtala Ŝtipo
|
||||
Copper Ore=Kupra Minaĵo
|
||||
Copper Block=Kupra Ŝtipo
|
||||
Tin Ore=Stana Minaĵo
|
||||
Tin Block=Stana Ŝtipo
|
||||
Bronze Block=Bronza Ŝtipo
|
||||
Mese Ore=Mesea Minaĵo
|
||||
Mese Block=Mesea Ŝtipo
|
||||
Gold Ore=Ora Minaĵo
|
||||
Gold Block=Ora Ŝtipo
|
||||
Diamond Ore=Diamanta Minaĵo
|
||||
Diamond Block=Diamanta Ŝtipo
|
||||
Cactus=Kakto
|
||||
Large Cactus Seedling=Granda Kakta Kreskaĵo
|
||||
Papyrus=Papiruso
|
||||
Dry Shrub=Seka Arbetaĵo
|
||||
Jungle Grass=Ĝangala Herbo
|
||||
Grass=Herbo
|
||||
Savanna Grass=Savana Herbo
|
||||
Fern=Filiko
|
||||
Marram Grass=Amofilo
|
||||
Bush Stem=Arbateĵa Tubo
|
||||
Bush Leaves=Arbateĵa Folioj
|
||||
Bush Sapling=Arbateĵa Arbido
|
||||
Blueberry Bush Leaves with Berries=Mirtela Arbateĵa Folioj kaj Beroj
|
||||
Blueberry Bush Leaves=Mirtela Arbateĵa Folioj
|
||||
Blueberry Bush Sapling=Mirtela Arbateĵa Arbido
|
||||
Acacia Bush Stem=Akacia Arbateĵa Tubo
|
||||
Acacia Bush Leaves=Akacia Arbateĵa Folioj
|
||||
Acacia Bush Sapling=Akacia Arbateĵa Arbido
|
||||
Pine Bush Stem=Pina Arbateĵa Tubo
|
||||
Pine Bush Needles=Pina Arbateĵa Pingloj
|
||||
Pine Bush Sapling=Pina Arbateĵa Arbido
|
||||
Kelp=Fuko
|
||||
Green Coral=Verda Koralo
|
||||
Pink Coral=Rozkolora Koralo
|
||||
Cyan Coral=Bluverda Koralo
|
||||
Brown Coral=Bruna Koralo
|
||||
Orange Coral=Oranĝa Koralo
|
||||
Coral Skeleton=Korala Framo
|
||||
Water Source=Akva Fonto
|
||||
Flowing Water=Flua Akvo
|
||||
River Water Source=Rivera Akva Fonto
|
||||
Flowing River Water=Flua Rivera Akvo
|
||||
Lava Source=Lafa Fonto
|
||||
Flowing Lava=Flua Lafa
|
||||
Empty Bookshelf=Malplena Librobreto
|
||||
Bookshelf (@1 written, @2 empty books)=Librobreto (@1 skriba, @2 malplena libroj)
|
||||
Bookshelf=Librobreto
|
||||
Text too long=Teksto estas ekscesa longo
|
||||
Wooden Sign=Ligna Signo
|
||||
Steel Sign=Ŝtala Signo
|
||||
Wooden Ladder=Ligna Ŝtupetaro
|
||||
Steel Ladder=Ŝtala Ŝtupetaro
|
||||
Apple Wood Fence=Poma Ligna Barilo
|
||||
Acacia Wood Fence=Akacia Ligna Barilo
|
||||
Jungle Wood Fence=Ĝangala Ligna Barilo
|
||||
Pine Wood Fence=Pina Ligna Barilo
|
||||
Aspen Wood Fence=Tremola Ligna Barilo
|
||||
Apple Wood Fence Rail=Poma Ligna Barila Relo
|
||||
Acacia Wood Fence Rail=Akacia Ligna Barila Relo
|
||||
Jungle Wood Fence Rail=Ĝangala Ligna Barila Relo
|
||||
Pine Wood Fence Rail=Pina Ligna Barila Relo
|
||||
Aspen Wood Fence Rail=Tremola Ligna Barila Relo
|
||||
Glass=Vitro
|
||||
Obsidian Glass=Obsidiana Vitro
|
||||
Brick Block=Brika Ŝtipo
|
||||
Mese Lamp=Mesea Lampo
|
||||
Mese Post Light=Mesea Fosta Lampo
|
||||
Cloud=Nubo
|
||||
@1 will intersect protection on growth.=@1 sekcos protekto ĉe vegeto.
|
||||
Torch=Torĉo
|
||||
Wooden Pickaxe=Ligna Pioĉo
|
||||
Stone Pickaxe=Ŝtona Pioĉo
|
||||
Bronze Pickaxe=Bronza Pioĉo
|
||||
Steel Pickaxe=Ŝtala Pioĉo
|
||||
Mese Pickaxe=Mesea Pioĉo
|
||||
Diamond Pickaxe=Diamanta Pioĉo
|
||||
Wooden Shovel=Ligna Fosilo
|
||||
Stone Shovel=Ŝtona Fosilo
|
||||
Bronze Shovel=Bronza Fosilo
|
||||
Steel Shovel=Ŝtala Fosilo
|
||||
Mese Shovel=Mesea Fosilo
|
||||
Diamond Shovel=Diamanta Fosilo
|
||||
Wooden Axe=Ligna Hakilo
|
||||
Stone Axe=Ŝtona Hakilo
|
||||
Bronze Axe=Bronza Hakilo
|
||||
Steel Axe=Ŝtala Hakilo
|
||||
Mese Axe=Mesea Hakilo
|
||||
Diamond Axe=Diamanta Hakilo
|
||||
Wooden Sword=Ligna Glavo
|
||||
Stone Sword=Ŝtona Glavo
|
||||
Bronze Sword=Bronza Glavo
|
||||
Steel Sword=Ŝtala Glavo
|
||||
Mese Sword=Mesea Glavo
|
||||
Diamond Sword=Diamanta Glavo
|
||||
Key=Ŝlosilo
|
||||
Furnace is empty=Forno estas malplena
|
||||
100% (output full)=100% (eligo estas plena)
|
||||
@1%=@1%
|
||||
Not cookable=Ne povas kuiri
|
||||
Empty=Malplena
|
||||
Furnace active=Forno laboras
|
||||
Furnace inactive=Forno ne laboras
|
||||
(Item: @1; Fuel: @2)=(Objekto: @1; Brulaĵo: @2)
|
||||
Furnace=Forno
|
||||
Title:=Titolo
|
||||
Contents:=Entenaĵo
|
||||
Save=Konservu
|
||||
by @1=per @1
|
||||
Page @1 of @2=Paĝo @1 el @2
|
||||
"@1"="@1"
|
||||
"@1" by @2="@1" per @2
|
||||
Skeleton Key=Skeleta Ŝlosilo
|
||||
Key to @1's @2=Ŝlosilo por la @2 de @1
|
||||
Blueberries=Mirteloj
|
||||
Book=Libro
|
||||
Book with Text=Libro kun Teksto
|
||||
Bronze Ingot=Bronza Ingoto
|
||||
Clay Brick=Argila Briko
|
||||
Clay Lump=Argila Bulo
|
||||
Coal Lump=Karba Bulo
|
||||
Copper Ingot=Kupra Ingoto
|
||||
Copper Lump=Kupra Bulo
|
||||
Diamond=Diamanto
|
||||
Flint=Siliko
|
||||
Gold Ingot=Ora Ingoto
|
||||
Gold Lump=Ora Bulo
|
||||
Iron Lump=Fera Bulo
|
||||
Mese Crystal=Mesea Kristalo
|
||||
Mese Crystal Fragment=Mesea Kristala Ero
|
||||
Obsidian Shard=Obsidiana Peceto
|
||||
Paper=Papero
|
||||
Steel Ingot=Ŝtala Ingoto
|
||||
Stick=Bastono
|
||||
Tin Ingot=Stana Ingoto
|
||||
Tin Lump=Stana Bulo
|
||||
Locked Chest=Ŝlosita Kesto
|
||||
Locked Chest (owned by @1)=Ŝlosita Kesto (de @1)
|
||||
You do not own this chest.=Vi ne posedas ĉi tiu keston.
|
||||
a locked chest=ŝlosita kesto
|
||||
Chest=Kesto
|
|
@ -0,0 +1,16 @@
|
|||
# textdomain: dye
|
||||
White Dye=Blanka Tinkturo
|
||||
Grey Dye=Griza Tinkturo
|
||||
Dark Grey Dye=Malhela Griza Tinkturo
|
||||
Black Dye=Nigra Tinkturo
|
||||
Violet Dye=Viola Tinkturo
|
||||
Blue Dye=Blua Tinkturo
|
||||
Cyan Dye=Bluverda Tinkturo
|
||||
Dark Green Dye=Malhela Verda Tinkturo
|
||||
Green Dye=Verda Tinkturo
|
||||
Yellow Dye=Flava Tinkturo
|
||||
Brown Dye=Bruna Tinkturo
|
||||
Orange Dye=Oranĝa Tinkturo
|
||||
Red Dye=Ruĝa Tinkturo
|
||||
Magenta Dye=Fiksina Tinkturo
|
||||
Pink Dye=Roza Tinkturo
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: fire
|
||||
Fire=Fajro
|
||||
Permanent Fire=Ĉiama Fajro
|
||||
Flint and Steel=Siliko kaj Ŝtalo
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: fireflies
|
||||
Firefly=Fulgoro
|
||||
Hidden Firefly=Kaŝita Fulgoro
|
||||
Bug Net=Cima Reto
|
||||
Firefly in a Bottle=Fulgoro en Botelo
|
|
@ -0,0 +1,12 @@
|
|||
# textdomain: flowers
|
||||
Red Rose=Ruĝa Rozo
|
||||
Orange Tulip=Oranĝa Tulipo
|
||||
Yellow Dandelion=Flava Leontodo
|
||||
Green Chrysanthemum=Verda Krizantemo
|
||||
Blue Geranium=Blua Geranio
|
||||
Viola=Violo
|
||||
White Dandelion=Blanka Leontodo
|
||||
Black Tulip=Nigra Tulipo
|
||||
Red Mushroom=Ruĝa Fungo
|
||||
Brown Mushroom=Bruna Fungo
|
||||
Waterlily=Nimfeo
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: game_commands
|
||||
Kill yourself to respawn=Ĉesigu vi mem por renaski
|
||||
No static_spawnpoint defined=Ne estas difina static_spawnpoint
|
||||
You need to be online to be killed!=Vi devas esti onlina por ĉesigi!
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: map
|
||||
Mapping Kit=Mapa Ilaro
|
||||
Use with 'Minimap' key=Uzu per 'malgrandmapo' ŝlosilo
|
|
@ -0,0 +1,57 @@
|
|||
# textdomain: mtg_craftguide
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Any black dye=Ajna nigra tinkturo
|
||||
Any black flower=Ajna nigra floro
|
||||
Any blue dye=Ajna blua tinkturo
|
||||
Any blue flower=Ajna blua floro
|
||||
Any brown dye=Ajna bruna tinkturo
|
||||
Any coal=Ajna karbo
|
||||
Any cyan dye=Ajna bluverda tinkturo
|
||||
Any dark green dye=Ajna malhela verda tinkturo
|
||||
Any dark grey dye=Ajna malhela graja tinkturo
|
||||
Any green dye=Ajna verda tinkturo
|
||||
Any green flower=Ajna verda floro
|
||||
Any grey dye=Ajna graja tinkturo
|
||||
Any item belonging to the group(s): @1=Ajna objekto de la aro(j)
|
||||
Any kind of stone block=Ia ŝtona ŝtipo
|
||||
Any magenta dye=Ajna fuksina tinkturo
|
||||
Any orange dye=Ajna oranĝa tinkturo
|
||||
Any orange flower=Ajna oranĝa floro
|
||||
Any pink dye=Ajna rosa tinkturo
|
||||
Any red dye=Ajna ruĝa tinkturo
|
||||
Any red flower=Ajna ruĝa floro
|
||||
Any sand=Ajna sablo
|
||||
Any stick=Ajna bastono
|
||||
Any vessel=Ajna vazo
|
||||
Any violet dye=Ajna viola tinkturo
|
||||
Any violet flower=Ajna viola floro
|
||||
Any white dye=Ajna blanka tinkturo
|
||||
Any white flower=Ajna blanka floro
|
||||
Any wood planks=Ajna ligna tabulo
|
||||
Any wool=Ajna lano
|
||||
Any yellow dye=Ajna flava tinkturo
|
||||
Any yellow flower=Ajna flava floro
|
||||
Click again to show recipes.=Anklaku ankoraŭ por prezenti receptojn
|
||||
Click again to show usages.=Anklaku ankoraŭ por prezenti utiloj
|
||||
Cooking time: @1=Tempo por kuirado: @1
|
||||
Fuel=Brulaĵo
|
||||
# Label for group ingredients
|
||||
G=A
|
||||
Next page=Sekvinta paĝo
|
||||
Next recipe=Sekvinta recepto
|
||||
No items to show.=Ne estas objektoj por prezenti
|
||||
No recipes.=Ne estas receptoj
|
||||
No usages.=Ne estas utiloj
|
||||
Previous page=Pasinta paĝo
|
||||
Previous recipe=Pasinta recepto
|
||||
Recipe @1 of @2=Recepto @1 el @2
|
||||
Recipe is too big to be displayed.=La recepto estas tro granda por prezenti
|
||||
Recipes=Receptoj
|
||||
Reset=Rekomincigu
|
||||
Search=Ŝerĉu
|
||||
Shapeless=Senforma
|
||||
Unknown Item=Obskura Objekto
|
||||
Usage @1 of @2=Utilo @1 el @2
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: screwdriver
|
||||
Screwdriver=Ŝraŭbturnilo
|
||||
(left-click rotates face, right-click rotates axis)=(maldekstra-klako turnas supraĵo, dekstra-klako turnas akso)
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: sethome
|
||||
Can use /sethome and /home=Povas uzi /sethome kaj /home
|
||||
Teleport you to your home point=Teletransportu vi al via hejmo
|
||||
Teleported to home!=Teletransportis al hejmo!
|
||||
Set a home using /sethome=Fiksi hejmon per /sethome
|
||||
Set your home point=Fiksi vian hejman punkto
|
||||
Home set!=Hejmo fiksis!
|
||||
Player not found!=Ludanto ne estas trovebla!
|
|
@ -0,0 +1,2 @@
|
|||
# textdomain: sfinv
|
||||
Crafting=Konstruado
|
|
@ -0,0 +1,145 @@
|
|||
# textdomain: stairs
|
||||
Glass Stair=Vitra Ŝtupo
|
||||
Glass Slab=Vitra Plato
|
||||
Inner Glass Stair=Interna Vitra Ŝtupo
|
||||
Outer Glass Stair=Ekstera Vitra Ŝtupo
|
||||
Obsidian Glass Stair=Obsidiana Vitra Ŝtupo
|
||||
Obsidian Glass Slab=Obsidiana Vitra Plato
|
||||
Inner Obsidian Glass Stair=Interna Obsidiana Vitra Ŝtupo
|
||||
Outer Obsidian Glass Stair=Ekstera Obsidiana Vitra Ŝtupo
|
||||
Wooden Stair=Ligna Ŝtupo
|
||||
Inner Wooden Stair=Interna Ligna Ŝtupo
|
||||
Outer Wooden Stair=Ekstera Ligna Ŝtupo
|
||||
Wooden Slab=Ligna Plato
|
||||
Jungle Wood Stair=Ĝangala Ligna Ŝtupo
|
||||
Inner Jungle Wood Stair=Interna Ĝangala Ligna Ŝtupo
|
||||
Outer Jungle Wood Stair=Ekstera Ĝangala Ligna Ŝtupo
|
||||
Jungle Wood Slab=Ĝangala Ligna Plato
|
||||
Pine Wood Stair=Pina Ligna Ŝtupo
|
||||
Inner Pine Wood Stair=Interna Pina Ligna Ŝtupo
|
||||
Outer Pine Wood Stair=Ekstera Pina Ligna Ŝtupo
|
||||
Pine Wood Slab=Pina Ligna Plato
|
||||
Acacia Wood Stair=Akacia Ligna Ŝtupo
|
||||
Inner Acacia Wood Stair=Interna Akacia Ligna Ŝtupo
|
||||
Outer Acacia Wood Stair=Ekstera Akacia Ligna Ŝtupo
|
||||
Acacia Wood Slab=Akacia Ligna Plato
|
||||
Aspen Wood Stair=Tremola Ligna Ŝtupo
|
||||
Inner Aspen Wood Stair=Interna Tremola Ligna Ŝtupo
|
||||
Outer Aspen Wood Stair=Ekstera Tremola Ligna Ŝtupo
|
||||
Aspen Wood Slab=Tremola Ligna Plato
|
||||
Stone Stair=Ŝtona Ŝtupo
|
||||
Inner Stone Stair=Interna Ŝtona Ŝtupo
|
||||
Outer Stone Stair=Ekstera Ŝtona Ŝtupo
|
||||
Stone Slab=Ŝtona Plato
|
||||
Cobblestone Stair=Pavimŝtona Ŝtupo
|
||||
Inner Cobblestone Stair=Interna Pavimŝtona Ŝtupo
|
||||
Outer Cobblestone Stair=Ekstera Pavimŝtona Ŝtupo
|
||||
Cobblestone Slab=Pavimŝtona Plato
|
||||
Mossy Cobblestone Stair=Muska Pavimŝtona Ŝtupo
|
||||
Inner Mossy Cobblestone Stair=Interna Muska Pavimŝtona Ŝtupo
|
||||
Outer Mossy Cobblestone Stair=Ekstera Muska Pavimŝtona Ŝtupo
|
||||
Mossy Cobblestone Slab=Muska Pavimŝtona Plato
|
||||
Stone Brick Stair=Ŝtona Brika Ŝtupo
|
||||
Inner Stone Brick Stair=Interna Ŝtona Brika Ŝtupo
|
||||
Outer Stone Brick Stair=Ekstera Ŝtona Brika Ŝtupo
|
||||
Stone Brick Slab=Ŝtona Brika Plato
|
||||
Stone Block Stair=Ŝtona Ŝtipa Ŝtupo
|
||||
Inner Stone Block Stair=Interna Ŝtona Ŝtipa Ŝtupo
|
||||
Outer Stone Block Stair=Ekstera Ŝtona Ŝtipa Ŝtupo
|
||||
Stone Block Slab=Ŝtona Ŝtipa Plato
|
||||
Desert Stone Stair=Dezerta Ŝtona Ŝtupo
|
||||
Inner Desert Stone Stair=Interna Dezerta Ŝtona Ŝtupo
|
||||
Outer Desert Stone Stair=Ekstera Dezerta Ŝtona Ŝtupo
|
||||
Desert Stone Slab=Dezerta Ŝtona Plato
|
||||
Desert Cobblestone Stair=Dezerta Pavimŝtona Ŝtupo
|
||||
Inner Desert Cobblestone Stair=Interna Dezerta Pavimŝtona Ŝtupo
|
||||
Outer Desert Cobblestone Stair=Ekstera Dezerta Pavimŝtona Ŝtupo
|
||||
Desert Cobblestone Slab=Dezerta Pavimŝtona Plato
|
||||
Desert Stone Brick Stair=Dezerta Ŝtona Brika Ŝtupo
|
||||
Inner Desert Stone Brick Stair=Interna Dezerta Ŝtona Brika Ŝtupo
|
||||
Outer Desert Stone Brick Stair=Ekstera Dezerta Ŝtona Brika Ŝtupo
|
||||
Desert Stone Brick Slab=Dezerta Ŝtona Brika Plato
|
||||
Desert Stone Block Stair=Dezerta Ŝtona Ŝtipo Ŝtupo
|
||||
Inner Desert Stone Block Stair=Interna Dezerta Ŝtona Ŝtipo Stupo
|
||||
Outer Desert Stone Block Stair=Ekstera Dezerta Ŝtona Ŝtipo Ŝtupo
|
||||
Desert Stone Block Slab=Dezerta Ŝtona Ŝtipo Plato
|
||||
Sandstone Stair=Sablŝtona Ŝtupo
|
||||
Inner Sandstone Stair=Interna Ŝablŝtona Ŝtupo
|
||||
Outer Sandstone Stair=Ekstera Ŝablŝtona Ŝtupo
|
||||
Sandstone Slab=Ŝablŝtona Plato
|
||||
Sandstone Brick Stair=Ŝablŝtona Brika Ŝtupo
|
||||
Inner Sandstone Brick Stair=Interna Ŝablŝtona Brika Ŝtupo
|
||||
Outer Sandstone Brick Stair=Ekstera Ŝablŝtona Brika Ŝtupo
|
||||
Sandstone Brick Slab=Ŝablŝtona Brika Plato
|
||||
Sandstone Block Stair=Ŝablŝtona Ŝtipa Ŝtupo
|
||||
Inner Sandstone Block Stair=Interna Ŝablŝtona Ŝtipa Ŝtupo
|
||||
Outer Sandstone Block Stair=Ekstera Ŝablŝtona Ŝtipa Ŝtupo
|
||||
Sandstone Block Slab=Ŝablŝtona Ŝtipa Plato
|
||||
Desert Sandstone Stair=Dezerta Ŝablŝtona Ŝtupo
|
||||
Inner Desert Sandstone Stair=Interna Dezerta Ŝablŝtona Ŝtupo
|
||||
Outer Desert Sandstone Stair=Ekstera Dezerta Ŝablŝtona Ŝtupo
|
||||
Desert Sandstone Slab=Dezerta Ŝablŝtona Plato
|
||||
Desert Sandstone Brick Stair=Dezerta Ŝablŝtona Brika Ŝtupo
|
||||
Inner Desert Sandstone Brick Stair=Interna Dezerta Ŝablŝtona Brika Ŝtupo
|
||||
Outer Desert Sandstone Brick Stair=Ekstera Dezerta Ŝablŝtona Brika Ŝtupo
|
||||
Desert Sandstone Brick Slab=Dezerta Ŝablŝtona Brika Plato
|
||||
Desert Sandstone Block Stair=Dezerta Ŝablŝtona Ŝtipa Ŝtupo
|
||||
Inner Desert Sandstone Block Stair=Interna Dezerta Ŝablŝtona Brika Ŝtupo
|
||||
Outer Desert Sandstone Block Stair=Ekstera Dezerta Ŝablŝtona Brika Ŝtupo
|
||||
Desert Sandstone Block Slab=Dezerta Ŝablŝtona Ŝtipa Plato
|
||||
Silver Sandstone Stair=Arĝenta Ŝablŝtona Ŝtupo
|
||||
Inner Silver Sandstone Stair=Interna Arĝenta Ŝablŝtona Ŝtupo
|
||||
Outer Silver Sandstone Stair=Ekstera Arĝenta Ŝablŝtona Ŝtupo
|
||||
Silver Sandstone Slab=Arĝenta Ŝablŝtona Plato
|
||||
Silver Sandstone Brick Stair=Arĝenta Ŝablŝtona Brika Ŝtupo
|
||||
Inner Silver Sandstone Brick Stair=Interna Arĝenta Ŝablŝtona Brika Ŝtupo
|
||||
Outer Silver Sandstone Brick Stair=Ekstera Arĝenta Ŝablŝtona Brika Ŝtupo
|
||||
Silver Sandstone Brick Slab=Arĝenta Ŝablŝtona Brika Plato
|
||||
Silver Sandstone Block Stair=Arĝenta Ŝablŝtona Ŝtipa Ŝtupo
|
||||
Inner Silver Sandstone Block Stair=Interna Arĝenta Ŝablŝtona Ŝtipa Ŝtupo
|
||||
Outer Silver Sandstone Block Stair=Ekstera Arĝenta Ŝablŝtona Ŝtipa Ŝtupo
|
||||
Silver Sandstone Block Slab=Arĝenta Ŝablŝtona Ŝtipa Plato
|
||||
Obsidian Stair=Obsidiana Ŝtupo
|
||||
Inner Obsidian Stair=Interna Obsidiana Ŝtupo
|
||||
Outer Obsidian Stair=Ekstera Obsidiana Ŝtupo
|
||||
Obsidian Slab=Obsidiana Plato
|
||||
Obsidian Brick Stair=Obsidiana Brika Ŝtupo
|
||||
Inner Obsidian Brick Stair=Interna Obsidiana Brika Ŝtupo
|
||||
Outer Obsidian Brick Stair=Ekstera Obsidiana Brika Ŝtupo
|
||||
Obsidian Brick Slab=Obsidiana Brika Plato
|
||||
Obsidian Block Stair=Obsidiana Ŝtipa Ŝtupo
|
||||
Inner Obsidian Block Stair=Interna Obsidiana Ŝtipa Ŝtupo
|
||||
Outer Obsidian Block Stair=Ekstera Obsidiana Ŝtipa Ŝtupo
|
||||
Obsidian Block Slab=Obsidiana Ŝtipa Plato
|
||||
Brick Stair=Brika Ŝtupo
|
||||
Inner Brick Stair=Interna Brika Ŝtupo
|
||||
Outer Brick Stair=Ekstera Brika Ŝtupo
|
||||
Brick Slab=Brika Plato
|
||||
Steel Block Stair=Ŝtala Ŝtipa Ŝtupo
|
||||
Inner Steel Block Stair=Interna Ŝtala Ŝtipa Ŝtupo
|
||||
Outer Steel Block Stair=Ekstera Ŝtala Ŝtipa Ŝtupo
|
||||
Steel Block Slab=Ŝtala Ŝtipa Plato
|
||||
Tin Block Stair=Stana Ŝtipa Ŝtupo
|
||||
Inner Tin Block Stair=Interna Stana Ŝtipa Ŝtupo
|
||||
Outer Tin Block Stair=Ekstera Stana Ŝtipa Ŝtupo
|
||||
Tin Block Slab=Stana Ŝtipa Plato
|
||||
Copper Block Stair=Kupra Ŝtipa Ŝtupo
|
||||
Inner Copper Block Stair=Interna Kupra Ŝtipa Ŝtupo
|
||||
Outer Copper Block Stair=Ekstera Kupra Ŝtipa Ŝtupo
|
||||
Copper Block Slab=Kupra Ŝtipa Plato
|
||||
Bronze Block Stair=Bronza Ŝtipa Ŝtupo
|
||||
Inner Bronze Block Stair=Interna Bronza Ŝtipa Ŝtupo
|
||||
Outer Bronze Block Stair=Ekstera Bronza Ŝtipa Ŝtupo
|
||||
Bronze Block Slab=Bronza Ŝtipa Plato
|
||||
Gold Block Stair=Ora Ŝtipa Ŝtupo
|
||||
Inner Gold Block Stair=Interna Ora Ŝtipa Ŝtupo
|
||||
Outer Gold Block Stair=Ekstera Ora Ŝtipa Ŝtupo
|
||||
Gold Block Slab=Ora Ŝtipa Plato
|
||||
Ice Stair=Glacia Ŝtupo
|
||||
Inner Ice Stair=Interna Glacia Ŝtupo
|
||||
Outer Ice Stair=Ekstera Glacia Ŝtupo
|
||||
Ice Slab=Glacia Plato
|
||||
Snow Block Stair=Neĝa Ŝtipa Ŝtupo
|
||||
Inner Snow Block Stair=Interna Neĝa Ŝtipa Ŝtupo
|
||||
Outer Snow Block Stair=Ekstera Neĝa Ŝtipa Ŝtupo
|
||||
Snow Block Slab=Neĝa Ŝtipa Plato
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: tnt
|
||||
Gun Powder=Pulvo
|
||||
TNT Stick=Dinamita Bastono
|
||||
TNT=Dinamito
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: vessels
|
||||
Empty Vessels Shelf=Malplena Vaza Plataĵo
|
||||
Vessels Shelf (@1 items)=Vaza Plataĵo (@1 objektoj)
|
||||
Vessels Shelf=Vaza Plataĵo
|
||||
Empty Glass Bottle=Malplena Vitra Botelo
|
||||
Empty Drinking Glass=Malplena Glaso por Trinkado
|
||||
Empty Heavy Steel Bottle=Malplena Peza Ŝtala Botelo
|
||||
Glass Fragments=Vitra Eroj
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: walls
|
||||
Cobblestone Wall=Pavimŝtona Muro
|
||||
Mossy Cobblestone Wall=Muska Pavimŝtona Muro
|
||||
Desert Cobblestone Wall=Dezerta Pavimŝtona Muro
|
|
@ -0,0 +1,16 @@
|
|||
# textdomain: wool
|
||||
White Wool=Blanka Lano
|
||||
Grey Wool=Griza Lano
|
||||
Dark Grey Wool=Malhela Griza Lano
|
||||
Black Wool=Nigra Lano
|
||||
Violet Wool=Viola Lano
|
||||
Blue Wool=Blua Lano
|
||||
Cyan Wool=Bluverda Lano
|
||||
Dark Green Wool=Malhela Verda Lano
|
||||
Green Wool=Verda Lano
|
||||
Yellow Wool=Flava Lano
|
||||
Brown Wool=Bruna Lano
|
||||
Orange Wool=Oranĝa Lano
|
||||
Red Wool=Ruĝa Lano
|
||||
Magenta Wool=Fuksina Lano
|
||||
Pink Wool=Roza Lano
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: xpanes
|
||||
Glass Pane=Vitra Vitraĵo
|
||||
Obsidian Glass Pane=Obsidiana Vitra Vitraĵo
|
||||
Steel Bars=Ŝtala Baraĵoj
|
||||
Steel Bar Door=Ŝtala Baraĵa Pordo
|
||||
Steel Bar Trapdoor=Ŝtala Baraĵa Plankpordo
|
|
@ -498,13 +498,15 @@ function water_life.hq_attack(self,prty,tgtobj)
|
|||
local meta = nil
|
||||
local poison = 0
|
||||
local pos = mobkit.get_stand_pos(self)
|
||||
-- local tpos = tgtobj:get_pos()
|
||||
local tpos = mobkit.get_stand_pos(tgtobj)
|
||||
local dist = vector.distance(pos,tpos)
|
||||
if tgtobj:is_player() then
|
||||
meta = tgtobj:get_meta()
|
||||
poison = meta:get_int("snakepoison")
|
||||
noob = meta:get_int("bitten")
|
||||
poison = meta:get_int("snakepoison") or 1
|
||||
noob = meta:get_int("bitten") or 1
|
||||
else
|
||||
poison = 1
|
||||
noob = 1
|
||||
end
|
||||
|
||||
if dist > 3 or poison > 0 or noob > 0 then
|
||||
|
|
|
@ -254,3 +254,11 @@ Mod: LessDirt/default
|
|||
origin https://github.com/Treer/LessDirt.git (fetch)
|
||||
* master 59d4434 [origin/master] Update forum link in README.md
|
||||
Mod: LessDirt/default
|
||||
|
||||
origin https://github.com/Treer/LessDirt.git (fetch)
|
||||
* master 59d4434 [origin/master] Update forum link in README.md
|
||||
Mod: LessDirt/default
|
||||
|
||||
origin https://github.com/Treer/LessDirt.git (fetch)
|
||||
* master 59d4434 [origin/master] Update forum link in README.md
|
||||
Mod: LessDirt/default
|
||||
|
|
Loading…
Reference in New Issue