Rename get_stack_meta_compat and add non-compat version

This commit is contained in:
cx384 2024-01-09 17:27:40 +01:00
parent 15ced081e3
commit 287b3676b4
11 changed files with 31 additions and 19 deletions

View File

@ -65,12 +65,24 @@ function technic.swap_node(pos, name)
end end
--- Returns the meta of an item
-- Gets overridden when legacy.lua is loaded
function technic.get_stack_meta(itemstack)
return itemstack:get_meta()
end
--- Same as technic.get_stack_meta for cans
function technic.get_stack_meta_cans(itemstack)
return itemstack:get_meta()
end
--- Fully charge RE chargeable item. --- Fully charge RE chargeable item.
-- Must be defined early to reference in item definitions. -- Must be defined early to reference in item definitions.
function technic.refill_RE_charge(stack) function technic.refill_RE_charge(stack)
local max_charge = technic.power_tools[stack:get_name()] local max_charge = technic.power_tools[stack:get_name()]
if not max_charge then return stack end if not max_charge then return stack end
local meta = technic.get_stack_meta_compat(stack) local meta = technic.get_stack_meta(stack)
meta:set_int("technic:charge", max_charge) meta:set_int("technic:charge", max_charge)
technic.set_RE_wear(stack, max_charge, max_charge) technic.set_RE_wear(stack, max_charge, max_charge)
return stack return stack

View File

@ -47,7 +47,7 @@ technic.legacy_meta_keys = {
} }
-- Converts legacy itemstack metadata string to itemstack meta and returns the ItemStackMetaRef -- Converts legacy itemstack metadata string to itemstack meta and returns the ItemStackMetaRef
function technic.get_stack_meta_compat(itemstack) function technic.get_stack_meta(itemstack)
local meta = itemstack:get_meta() local meta = itemstack:get_meta()
local legacy_string = meta:get("") -- Get deprecated metadata local legacy_string = meta:get("") -- Get deprecated metadata
if legacy_string then if legacy_string then
@ -69,9 +69,9 @@ function technic.get_stack_meta_compat(itemstack)
return meta return meta
end end
-- Same as technic.get_stack_meta_compat for cans. -- Same as technic.get_stack_meta for cans.
-- (Cans didn't store a serialized table in the legacy metadata string, but just a number.) -- (Cans didn't store a serialized table in the legacy metadata string, but just a number.)
function technic.get_stack_meta_compat_cans(itemstack) function technic.get_stack_meta_cans(itemstack)
local meta = itemstack:get_meta() local meta = itemstack:get_meta()
local legacy_string = meta:get("") -- Get deprecated metadata local legacy_string = meta:get("") -- Get deprecated metadata
if legacy_string then if legacy_string then

View File

@ -415,7 +415,7 @@ local function default_get_charge(itemstack)
if not technic.power_tools[tool_name] then if not technic.power_tools[tool_name] then
return 0, 0 return 0, 0
end end
local item_meta = technic.get_stack_meta_compat(itemstack) local item_meta = technic.get_stack_meta(itemstack)
return item_meta:get_int("technic:charge"), technic.power_tools[tool_name] return item_meta:get_int("technic:charge"), technic.power_tools[tool_name]
end end
@ -424,7 +424,7 @@ local function default_set_charge(itemstack, charge)
if technic.power_tools[tool_name] then if technic.power_tools[tool_name] then
technic.set_RE_wear(itemstack, charge, technic.power_tools[tool_name]) technic.set_RE_wear(itemstack, charge, technic.power_tools[tool_name])
end end
local item_meta = technic.get_stack_meta_compat(itemstack) local item_meta = technic.get_stack_meta(itemstack)
item_meta:set_int("technic:charge", charge) item_meta:set_int("technic:charge", charge)
end end

View File

@ -25,7 +25,7 @@ function technic.register_can(d)
if pointed_thing.type ~= "node" then return end if pointed_thing.type ~= "node" then return end
local node = minetest.get_node(pointed_thing.under) local node = minetest.get_node(pointed_thing.under)
if node.name ~= data.liquid_source_name then return end if node.name ~= data.liquid_source_name then return end
local meta = technic.get_stack_meta_compat_cans(itemstack) local meta = technic.get_stack_meta_cans(itemstack)
local charge = meta:get_int("can_level") local charge = meta:get_int("can_level")
if charge == data.can_capacity then return end if charge == data.can_capacity then return end
if minetest.is_protected(pointed_thing.under, user:get_player_name()) then if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
@ -56,7 +56,7 @@ function technic.register_can(d)
-- Try to place node above the pointed source, or abort. -- Try to place node above the pointed source, or abort.
if not def.buildable_to or node_name == data.liquid_source_name then return end if not def.buildable_to or node_name == data.liquid_source_name then return end
end end
local meta = technic.get_stack_meta_compat_cans(itemstack) local meta = technic.get_stack_meta_cans(itemstack)
local charge = meta:get_int("can_level") local charge = meta:get_int("can_level")
if charge == 0 then return end if charge == 0 then return end
if minetest.is_protected(pos, user:get_player_name()) then if minetest.is_protected(pos, user:get_player_name()) then
@ -73,7 +73,7 @@ function technic.register_can(d)
return itemstack return itemstack
end, end,
on_refill = function(stack) on_refill = function(stack)
local meta = technic.get_stack_meta_compat_cans(stack) local meta = technic.get_stack_meta_cans(stack)
meta:set_int("can_level", data.can_capacity) meta:set_int("can_level", data.can_capacity)
set_can_wear(stack, data.can_capacity, data.can_capacity) set_can_wear(stack, data.can_capacity, data.can_capacity)
return stack return stack

View File

@ -313,7 +313,7 @@ minetest.register_tool("technic:chainsaw", {
return itemstack return itemstack
end end
local meta = technic.get_stack_meta_compat(itemstack) local meta = technic.get_stack_meta(itemstack)
local charge = meta:get_int("technic:charge") local charge = meta:get_int("technic:charge")
local name = user:get_player_name() local name = user:get_player_name()

View File

@ -38,7 +38,7 @@ local function check_for_flashlight(player)
local hotbar = inv:get_list("main") local hotbar = inv:get_list("main")
for i = 1, 8 do for i = 1, 8 do
if hotbar[i]:get_name() == "technic:flashlight" then if hotbar[i]:get_name() == "technic:flashlight" then
local meta = technic.get_stack_meta_compat(hotbar[i]) local meta = technic.get_stack_meta(hotbar[i])
local charge = meta:get_int("technic:charge") local charge = meta:get_int("technic:charge")
if charge >= 2 then if charge >= 2 then
if not technic.creative_mode then if not technic.creative_mode then

View File

@ -248,7 +248,7 @@ end
local function mining_drill_mkX_setmode(user, itemstack, drill_type, max_modes) local function mining_drill_mkX_setmode(user, itemstack, drill_type, max_modes)
local player_name = user:get_player_name() local player_name = user:get_player_name()
local meta = technic.get_stack_meta_compat(itemstack) local meta = technic.get_stack_meta(itemstack)
if not meta:contains("mode") then if not meta:contains("mode") then
minetest.chat_send_player(player_name, minetest.chat_send_player(player_name,
@ -267,7 +267,7 @@ end
local function mining_drill_mkX_handler(itemstack, user, pointed_thing, drill_type, max_modes) local function mining_drill_mkX_handler(itemstack, user, pointed_thing, drill_type, max_modes)
local keys = user:get_player_control() local keys = user:get_player_control()
local meta = technic.get_stack_meta_compat(itemstack) local meta = technic.get_stack_meta(itemstack)
-- Mode switching (if possible) -- Mode switching (if possible)
if max_modes > 1 then if max_modes > 1 then

View File

@ -101,7 +101,7 @@ for _, m in pairs(mining_lasers_list) do
wear_represents = "technic_RE_charge", wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge, on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user) on_use = function(itemstack, user)
local meta = technic.get_stack_meta_compat(itemstack) local meta = technic.get_stack_meta(itemstack)
local charge = meta:get_int("technic:charge") local charge = meta:get_int("technic:charge")
if charge == 0 then if charge == 0 then
return return

View File

@ -22,7 +22,7 @@ minetest.register_tool("technic:prospector", {
on_use = function(toolstack, user, pointed_thing) on_use = function(toolstack, user, pointed_thing)
if not user or not user:is_player() or user.is_fake_player then return end if not user or not user:is_player() or user.is_fake_player then return end
if pointed_thing.type ~= "node" then return end if pointed_thing.type ~= "node" then return end
local meta = technic.get_stack_meta_compat(toolstack) local meta = technic.get_stack_meta(toolstack)
local toolmeta = meta_to_table(meta) local toolmeta = meta_to_table(meta)
local look_diameter = toolmeta.look_radius * 2 + 1 local look_diameter = toolmeta.look_radius * 2 + 1
local charge_to_take = toolmeta.look_depth * (toolmeta.look_depth + 1) * look_diameter * look_diameter local charge_to_take = toolmeta.look_depth * (toolmeta.look_depth + 1) * look_diameter * look_diameter
@ -80,7 +80,7 @@ minetest.register_tool("technic:prospector", {
end, end,
on_place = function(toolstack, user, pointed_thing) on_place = function(toolstack, user, pointed_thing)
if not user or not user:is_player() or user.is_fake_player then return end if not user or not user:is_player() or user.is_fake_player then return end
local meta = technic.get_stack_meta_compat(toolstack) local meta = technic.get_stack_meta(toolstack)
local toolmeta = meta_to_table(meta) local toolmeta = meta_to_table(meta)
local pointed local pointed
if pointed_thing.type == "node" then if pointed_thing.type == "node" then
@ -129,7 +129,7 @@ minetest.register_on_player_receive_fields(function(user, formname, fields)
if not user or not user:is_player() or user.is_fake_player then return end if not user or not user:is_player() or user.is_fake_player then return end
local toolstack = user:get_wielded_item() local toolstack = user:get_wielded_item()
if toolstack:get_name() ~= "technic:prospector" then return true end if toolstack:get_name() ~= "technic:prospector" then return true end
local meta = technic.get_stack_meta_compat(toolstack) local meta = technic.get_stack_meta(toolstack)
for field, value in pairs(fields) do for field, value in pairs(fields) do
if field:sub(1, 7) == "target_" then if field:sub(1, 7) == "target_" then
meta:set_string("target", field:sub(8)) meta:set_string("target", field:sub(8))

View File

@ -41,7 +41,7 @@ local function screwdriver_handler(itemstack, user, pointed_thing, mode)
-- contrary to the default screwdriver, do not check for can_dig, to allow rotating machines with CLU's in them -- contrary to the default screwdriver, do not check for can_dig, to allow rotating machines with CLU's in them
-- this is consistent with the previous sonic screwdriver -- this is consistent with the previous sonic screwdriver
local meta = technic.get_stack_meta_compat(itemstack) local meta = technic.get_stack_meta(itemstack)
local charge = meta:get_int("technic:charge") local charge = meta:get_int("technic:charge")
if charge < 100 then if charge < 100 then
return return

View File

@ -14,7 +14,7 @@ minetest.register_tool("technic:vacuum", {
wear_represents = "technic_RE_charge", wear_represents = "technic_RE_charge",
on_refill = technic.refill_RE_charge, on_refill = technic.refill_RE_charge,
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
local meta = technic.get_stack_meta_compat(itemstack) local meta = technic.get_stack_meta(itemstack)
local charge = meta:get_int("technic:charge") local charge = meta:get_int("technic:charge")
if charge < vacuum_charge_per_object then if charge < vacuum_charge_per_object then
return return