Upgrade show_wielded_item mod to 1.2.1
This commit is contained in:
parent
d47fabb32d
commit
c9bbf3235d
@ -1,11 +1,24 @@
|
|||||||
# Show Wielded Item [`show_wielded_item`]
|
# Show Wielded Item [`show_wielded_item`]
|
||||||
This Luanti mod displays the name of the wielded item above the hotbar and
|
This mod displays the name of the wielded item above the hotbar and
|
||||||
statbars.
|
statbars.
|
||||||
|
|
||||||
This mod is compatible with the HUD Bars [`hudbars`] mod.
|
This mod is compatible with the HUD Bars [`hudbars`] mod.
|
||||||
Compability with other HUD-related mods is possible, but not guaranteed.
|
This mod *disables* itself if Unified Inventory is detected to show item names.
|
||||||
|
Compatibility with other HUD-related mods is possible, but not guaranteed.
|
||||||
|
|
||||||
Version: 1.0.0
|
Version: 1.2.1
|
||||||
|
|
||||||
|
## A note for Unified Inventory users
|
||||||
|
|
||||||
|
The mod Unified Inventory adds its own wielded item display (as of 16/08/2024).
|
||||||
|
So if you use that mod and have the item names features of that mod
|
||||||
|
enabled, then Unified Inventory takes precedence.
|
||||||
|
|
||||||
|
If the Unified Inventory mod was detected, and the setting
|
||||||
|
`unified_inventory_item_names` is set to `true`, then
|
||||||
|
`show_wielded_item` won’t do anything and let Unified Inventory
|
||||||
|
display the wielded item instead. A message will appear in
|
||||||
|
the debug log if this happens.
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
Released by Wuzzy.
|
Released by Wuzzy.
|
||||||
|
2
mods/show_wielded_item/depends.txt
Normal file
2
mods/show_wielded_item/depends.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
hudbars?
|
||||||
|
unified_inventory?
|
@ -7,6 +7,23 @@ local dtimes = {}
|
|||||||
local dlimit = 3 -- HUD element will be hidden after this many seconds
|
local dlimit = 3 -- HUD element will be hidden after this many seconds
|
||||||
|
|
||||||
local hudbars_mod = minetest.get_modpath("hudbars")
|
local hudbars_mod = minetest.get_modpath("hudbars")
|
||||||
|
local unified_inventory_mod = minetest.get_modpath("unified_inventory")
|
||||||
|
|
||||||
|
-- Legacy support: Name of the HUD type field for 'hud_add'.
|
||||||
|
local hud_type_field_name
|
||||||
|
if minetest.features.hud_def_type_field then
|
||||||
|
-- engine version 5.9.0 and later
|
||||||
|
hud_type_field_name = "type"
|
||||||
|
else
|
||||||
|
-- All engine versions before 5.9.0
|
||||||
|
hud_type_field_name = "hud_elem_type"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Disable mod if Unified Inventory item names feature is enabled
|
||||||
|
if unified_inventory_mod and minetest.settings:get_bool("unified_inventory_item_names") ~= false then
|
||||||
|
minetest.log("action", "[show_wielded_item] Unified Inventory's item names feature was detected! Running show_wielded_item is pointless now, so it won't do anything")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local function set_hud(player)
|
local function set_hud(player)
|
||||||
if not player:is_player() then return end
|
if not player:is_player() then return end
|
||||||
@ -36,12 +53,13 @@ local function set_hud(player)
|
|||||||
end
|
end
|
||||||
|
|
||||||
huds[player_name] = player:hud_add({
|
huds[player_name] = player:hud_add({
|
||||||
hud_elem_type = "text",
|
[hud_type_field_name] = "text",
|
||||||
position = {x=0.5, y=1},
|
position = {x=0.5, y=1},
|
||||||
offset = off,
|
offset = off,
|
||||||
alignment = {x=0, y=0},
|
alignment = {x=0, y=0},
|
||||||
number = 0xFFFFFF ,
|
number = 0xFFFFFF ,
|
||||||
text = "",
|
text = "",
|
||||||
|
z_index = 100,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -59,6 +77,15 @@ minetest.register_on_leaveplayer(function(player)
|
|||||||
wieldindex[name] = nil
|
wieldindex[name] = nil
|
||||||
end)
|
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)
|
minetest.register_globalstep(function(dtime)
|
||||||
for _, player in pairs(minetest.get_connected_players()) do
|
for _, player in pairs(minetest.get_connected_players()) do
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
@ -81,26 +108,43 @@ minetest.register_globalstep(function(dtime)
|
|||||||
|
|
||||||
if huds[player_name] then
|
if huds[player_name] then
|
||||||
|
|
||||||
|
-- Get description (various fallback checks for old Luanti/Minetest versions)
|
||||||
local def = minetest.registered_items[wname]
|
local def = minetest.registered_items[wname]
|
||||||
local meta = wstack:get_meta()
|
local desc
|
||||||
|
if wstack.get_short_description then
|
||||||
--[[ Get description. Order of preference:
|
-- get_short_description()
|
||||||
* description from metadata
|
desc = wstack:get_short_description()
|
||||||
* description from item definition
|
|
||||||
* itemstring ]]
|
|
||||||
local desc = meta:get_string("description")
|
|
||||||
if (desc == nil or desc == "") and def then
|
|
||||||
desc = def.description
|
|
||||||
end
|
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
|
desc = wname
|
||||||
end
|
end
|
||||||
-- Cut off item description after first newline
|
|
||||||
local firstnewline = string.find(desc, "\n")
|
-- Print description
|
||||||
if firstnewline then
|
if desc then
|
||||||
desc = string.sub(desc, 1, firstnewline-1)
|
-- 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
|
end
|
||||||
player:hud_change(huds[player_name], 'text', desc)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
4
mods/show_wielded_item/locale/show_wielded_item.de.tr
Normal file
4
mods/show_wielded_item/locale/show_wielded_item.de.tr
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# textdomain: show_wielded_item
|
||||||
|
Show Wielded Item=Getragenen Gegenstand anzeigen
|
||||||
|
Displays the name of the wielded item.=Zeigt den Namen des getragenen Gegenstands an.
|
||||||
|
|
4
mods/show_wielded_item/locale/template.txt
Normal file
4
mods/show_wielded_item/locale/template.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# textdomain: show_wielded_item
|
||||||
|
Show Wielded Item=
|
||||||
|
Displays the name of the wielded item.=
|
||||||
|
|
@ -1,3 +1,4 @@
|
|||||||
name = show_wielded_item
|
name = show_wielded_item
|
||||||
|
title = Show Wielded Item
|
||||||
description = Displays the name of the wielded item.
|
description = Displays the name of the wielded item.
|
||||||
optional_depends = hudbars
|
optional_depends = hudbars, unified_inventory
|
||||||
|
@ -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
|
#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
|
#the name of the wielded item. The offset is in pixels from the bottom of the
|
||||||
#screen.
|
#screen.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user