Compare commits

...

5 Commits

Author SHA1 Message Date
fluxionary aca720dc0f
Change moreblocks stair craft to use blocks instead of ingots (#18)
required for compatibility with https://github.com/minetest-mods/moreblocks/pull/191
2022-07-21 21:42:33 -07:00
LoneWolfHT d3a0da6921 Fix .luacheckrc warnings 2022-02-23 21:18:07 -08:00
Герхард PICCORO Lenz McKAY 3eacc17e73
Fix 0.4 compatibility (#16)
* added minetest 0.4 compatibility due the trasnlation missing support

* if translation is not supported use english on compat/mtg.lua
* improved the code of translation of the already init.lua
* this solves: closes https://github.com/minetest-mods/lavastuff/issues/13
* this solves: closes https://codeberg.org/minenux/lavastuff/issues/1
* close https://codeberg.org/minenux/lavastuff/issues/1

* real fix for compatibility later trasnlations

* real fix for https://github.com/minetest-mods/lavastuff/issues/13
* use native translator or intlib property as must be, but mock if both fails

* fix modname and use intlib depennds only in older engines

* autodetect mod name from minetest api
* added only intllib in depends.txt for older 0.4.X, mod.conf its for 5+
  so due 5+ has built in internationalization its not necesary in that file

* added the depends only when necesary for intllib

* Update init.lua usage or MODNAME and MODPATH

Co-authored-by: LoneWolfHT <lonewolf04361@gmail.com>

* puff also uage ot the MODNAME in get translator

* update luacheck as suggested by lonewolf

i dont know how to avoid the usage of those variables.. but he suggested to just put those .. https://github.com/minetest-mods/lavastuff/pull/16#issuecomment-1036497969

* move intllib to others to do not fail in checks agains moderns engine

also added ',' at the en of the line

Co-authored-by: LoneWolfHT <lonewolf04361@gmail.com>
2022-02-23 21:13:38 -08:00
LoneWolfHT 94d6bd9b44 Properly handle multiple cookable drops 2022-02-02 12:22:05 -08:00
LoneWolfHT 4cef3ba46f Fix segfault 2022-01-24 19:14:56 -08:00
4 changed files with 67 additions and 27 deletions

View File

@ -2,7 +2,7 @@ unused_args = false
max_line_length = 999
globals = {
"minetest", "lavastuff", "armor",
"minetest", "lavastuff", "armor", "gettext", "intllib", "ngettext",
}
read_globals = {

View File

@ -6,6 +6,7 @@ mobs_monster?
3d_armor?
toolranks?
moreblocks?
intllib?
vessels?
nc_fire?
mcl_armor?

View File

@ -1,15 +1,41 @@
lavastuff = {}
local MODPATH = minetest.get_modpath("lavastuff")
local MODNAME = minetest.get_current_modname()
local MODPATH = minetest.get_modpath(MODNAME)
local COOLDOWN = dofile(MODPATH.."/cooldowns.lua")
local S
if minetest.get_translator ~= nil then
S = minetest.get_translator(minetest.get_current_modname())
S = minetest.get_translator(MODNAME)
else
S = function(str)
return(str)
if minetest.get_modpath("intllib") then
dofile(minetest.get_modpath("intllib").."/init.lua")
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
S = gettext
else
-- mock the translator function for MT 0.4
function minetest.translate(textdomain, str, ...)
local arg = {n=select('#', ...), ...}
return str:gsub("@(.)", function(matched)
local c = string.byte(matched)
if string.byte("1") <= c and c <= string.byte("9") then
return arg[c - string.byte("0")]
else
return matched
end
end)
end
function minetest.get_translator(textdomain)
return function(str, ...) return minetest.translate(textdomain or "", str, ...) end
end
S = minetest.get_translator(MODNAME)
end
end
@ -113,28 +139,41 @@ function lavastuff.burn_drops(tool)
-- loop through current node drops
for _, drop in pairs(drops) do -- get cooked output of current drops
local stack = ItemStack(drop)
local output = minetest.get_craft_result({
method = "cooking",
width = 1,
items = {drop}
})
local safety = 0
for _, name in pairs(lavastuff.blacklisted_items) do
if name == drop then
return old_handle_node_drops(pos, drops, digger, ...)
repeat
local output, leftover = minetest.get_craft_result({
method = "cooking",
width = 1,
items = {stack:to_string()}
})
for _, name in pairs(lavastuff.blacklisted_items) do
if name == drop then
return old_handle_node_drops(pos, drops, digger, ...)
end
end
end
-- if we have cooked result then add to new list
if output and output.item and not output.item:is_empty() and output.time <= lavastuff.cook_limit then
table.insert(hot_drops,
ItemStack({
name = output.item:get_name(),
count = output.item:to_table().count,
})
)
else -- if not then return normal drops
table.insert(hot_drops, stack)
-- if we have cooked result then add to new list
if output and output.item and not output.item:is_empty() and output.time <= lavastuff.cook_limit then
table.insert(hot_drops,
ItemStack({
name = output.item:get_name(),
count = output.item:to_table().count,
})
)
stack = leftover.items[1]
else -- if not then return normal drops
table.insert(hot_drops, stack)
stack = nil
end
safety = safety + 1
until (safety > 999 or not stack or stack:get_count() <= 0)
if safety > 999 then
minetest.log("error", "[lavastuff]: Something went wrong with drop cooking")
end
end
@ -411,7 +450,7 @@ minetest.register_node("lavastuff:block", {
})
if minetest.get_modpath("moreblocks") then
stairsplus:register_all("lavastuff", "lava", "lavastuff:ingot", {
stairsplus:register_all("lavastuff", "lava", "lavastuff:block", {
description = "Lava",
tiles = {"lavastuff_block.png"},
groups = {cracky = 2, level = 2},
@ -511,4 +550,4 @@ else
end
end
minetest.log("action", "[lavastuff]: Mod Loaded!")
minetest.log("action", "[lavastuff]: Mod Loaded!")

View File

@ -2,7 +2,7 @@ name = lavastuff
description = Adds lava tools, armor, and blocks
title = Lava Stuff
optional_depends = """
mobs_monster, 3d_armor, toolranks, moreblocks,
mobs, mobs_monster, 3d_armor, toolranks, moreblocks,
fire, stairs, vessels, default, bucket,
mcl_armor, mcl_fire, mcl_buckets, mcl_nether, mcl_potions, mcl_core, mcl_mobitems, mcl_tools,
nc_fire, nc_api_all, nc_lux, nc_optics