mirror of
https://github.com/minetest-mods/hopper.git
synced 2024-11-19 22:03:47 +01:00
add option to disable the "eject item" button
This commit is contained in:
parent
ee89ae4734
commit
ebf05de397
26
init.lua
26
init.lua
@ -16,6 +16,11 @@ if single_craftable_item == nil then
|
|||||||
single_craftable_item = true
|
single_craftable_item = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local eject_button_enabled = minetest.setting_getbool("hopper_eject_button")
|
||||||
|
if eject_button_enabled == nil then
|
||||||
|
eject_button_enabled = true
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------
|
||||||
-- API
|
-- API
|
||||||
|
|
||||||
@ -219,7 +224,7 @@ end
|
|||||||
local function send_item_to(hopper_pos, target_pos, target_node, target_inventory_name)
|
local function send_item_to(hopper_pos, target_pos, target_node, target_inventory_name)
|
||||||
local hopper_meta = minetest.get_meta(hopper_pos)
|
local hopper_meta = minetest.get_meta(hopper_pos)
|
||||||
local target_def = minetest.registered_nodes[target_node.name]
|
local target_def = minetest.registered_nodes[target_node.name]
|
||||||
local eject_item = hopper_meta:get_string("eject") == "true" and target_def.buildable_to
|
local eject_item = eject_button_enabled and hopper_meta:get_string("eject") == "true" and target_def.buildable_to
|
||||||
|
|
||||||
if not eject_item and not target_inventory_name then
|
if not eject_item and not target_inventory_name then
|
||||||
return
|
return
|
||||||
@ -268,12 +273,18 @@ end
|
|||||||
-------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------
|
||||||
-- Nodes
|
-- Nodes
|
||||||
|
|
||||||
local function get_eject_button_texts(pos)
|
local function get_eject_button_texts(pos, loc_X, loc_Y)
|
||||||
|
if not eject_button_enabled then return "" end
|
||||||
|
|
||||||
|
local eject_button_text, eject_button_tooltip
|
||||||
if minetest.get_meta(pos):get_string("eject") == "true" then
|
if minetest.get_meta(pos):get_string("eject") == "true" then
|
||||||
return S("Don't\nEject"), S("This hopper is currently set to eject items from its output\neven if there isn't a compatible block positioned to receive it.\nClick this button to disable this feature.")
|
eject_button_text = S("Don't\nEject")
|
||||||
|
eject_button_tooltip = S("This hopper is currently set to eject items from its output\neven if there isn't a compatible block positioned to receive it.\nClick this button to disable this feature.")
|
||||||
else
|
else
|
||||||
return S("Eject\nItems"), S("This hopper is currently set to hold on to item if there\nisn't a compatible block positioned to receive it.\nClick this button to have it eject items instead.")
|
eject_button_text = S("Eject\nItems")
|
||||||
|
eject_button_tooltip = S("This hopper is currently set to hold on to item if there\nisn't a compatible block positioned to receive it.\nClick this button to have it eject items instead.")
|
||||||
end
|
end
|
||||||
|
return string.format("button_exit[%i,%i;1,1;eject;%s]tooltip[eject;%s]", loc_X, loc_Y, eject_button_text, eject_button_tooltip)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_string_pos(pos)
|
local function get_string_pos(pos)
|
||||||
@ -289,14 +300,12 @@ end
|
|||||||
|
|
||||||
-- formspec
|
-- formspec
|
||||||
local function get_hopper_formspec(pos)
|
local function get_hopper_formspec(pos)
|
||||||
local eject_button_text, eject_button_tooltip = get_eject_button_texts(pos)
|
|
||||||
local spos = get_string_pos(pos)
|
local spos = get_string_pos(pos)
|
||||||
local formspec =
|
local formspec =
|
||||||
"size[8,9]"
|
"size[8,9]"
|
||||||
.. formspec_bg
|
.. formspec_bg
|
||||||
.. "list[nodemeta:" .. spos .. ";main;2,0.3;4,4;]"
|
.. "list[nodemeta:" .. spos .. ";main;2,0.3;4,4;]"
|
||||||
.. "button_exit[7,2;1,1;eject;"..eject_button_text.."]"
|
.. get_eject_button_texts(pos, 7, 2)
|
||||||
.. "tooltip[eject;"..eject_button_tooltip.."]"
|
|
||||||
.. "list[current_player;main;0,4.85;8,1;]"
|
.. "list[current_player;main;0,4.85;8,1;]"
|
||||||
.. "list[current_player;main;0,6.08;8,3;8]"
|
.. "list[current_player;main;0,6.08;8,3;8]"
|
||||||
.. "listring[nodemeta:" .. spos .. ";main]"
|
.. "listring[nodemeta:" .. spos .. ";main]"
|
||||||
@ -518,8 +527,7 @@ local function get_chute_formspec(pos)
|
|||||||
"size[8,7]"
|
"size[8,7]"
|
||||||
.. formspec_bg
|
.. formspec_bg
|
||||||
.. "list[nodemeta:" .. spos .. ";main;3,0.3;2,2;]"
|
.. "list[nodemeta:" .. spos .. ";main;3,0.3;2,2;]"
|
||||||
.. "button_exit[7,1;1,1;eject;"..eject_button_text.."]"
|
.. get_eject_button_texts(pos, 7, 1)
|
||||||
.. "tooltip[eject;"..eject_button_tooltip.."]"
|
|
||||||
.. "list[current_player;main;0,2.85;8,1;]"
|
.. "list[current_player;main;0,2.85;8,1;]"
|
||||||
.. "list[current_player;main;0,4.08;8,3;8]"
|
.. "list[current_player;main;0,4.08;8,3;8]"
|
||||||
.. "listring[nodemeta:" .. spos .. ";main]"
|
.. "listring[nodemeta:" .. spos .. ";main]"
|
||||||
|
@ -5,4 +5,10 @@ hopper_texture_size (Hopper texture size) enum 16 16,32
|
|||||||
#a top hopper or side hopper depending on the context the player places it in.
|
#a top hopper or side hopper depending on the context the player places it in.
|
||||||
#When false, top hoppers and side hoppers are explicitly craftable as separate
|
#When false, top hoppers and side hoppers are explicitly craftable as separate
|
||||||
#items.
|
#items.
|
||||||
hopper_single_craftable_item (Single craftable item) bool true
|
hopper_single_craftable_item (Single craftable item) bool true
|
||||||
|
|
||||||
|
#This enables a toggle button in the hopper formspecs that allows a hopper
|
||||||
|
#to be set to "eject" items out into the world if there's no suitable node
|
||||||
|
#in their target location to receive them. By default hoppers do not eject
|
||||||
|
#items like this, the player must set this on a per-hopper basis.
|
||||||
|
hopper_eject_button (Eject items button) bool true
|
Loading…
Reference in New Issue
Block a user