Prevent using items partially used by Rotary Macerator
This commit is contained in:
parent
cb43a7ab76
commit
6c9c69a308
@ -272,8 +272,9 @@ end
|
||||
|
||||
-- \brief Registers Rotary Macerator recipe modifier
|
||||
-- \param config table
|
||||
-- \param omitPlaceholder bool, for internal use only
|
||||
-- \returns nil
|
||||
function industrialtest.api.registerRotaryMaceratorModifier(config)
|
||||
function industrialtest.api.registerRotaryMaceratorModifier(config,omitPlaceholder)
|
||||
local definition={
|
||||
name=config.name or "",
|
||||
modifier=config.modifier or "",
|
||||
@ -282,6 +283,19 @@ function industrialtest.api.registerRotaryMaceratorModifier(config)
|
||||
uses=config.uses or 1,
|
||||
modifierLeftover=config.modifierLeftover
|
||||
}
|
||||
|
||||
if not omitPlaceholder and not config.modifierLeftover and string.len(definition.modifier)>0 then
|
||||
local delimiter,_=string.find(definition.modifier,":")
|
||||
definition.stackLeftover="industrialtest:"..string.sub(definition.modifier,1,delimiter-1).."_"..string.sub(definition.modifier,delimiter+1,-1).."_leftover"
|
||||
industrialtest.api.registerRotaryMaceratorModifier({
|
||||
name=definition.name,
|
||||
modifier=definition.stackLeftover,
|
||||
output=definition.output,
|
||||
time=definition.time,
|
||||
uses=definition.uses
|
||||
},true)
|
||||
end
|
||||
|
||||
industrialtest.api.rotaryMaceratorModifiers[definition.name.." "..config.modifier]=definition
|
||||
end
|
||||
|
||||
@ -292,3 +306,18 @@ end
|
||||
function industrialtest.api.getRotaryMaceratorModifier(name,modifier)
|
||||
return industrialtest.api.rotaryMaceratorModifiers[name.." "..modifier]
|
||||
end
|
||||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for _,def in pairs(industrialtest.api.rotaryMaceratorModifiers) do
|
||||
if def.stackLeftover then
|
||||
local leftoverDef=table.copy(minetest.registered_items[def.modifier])
|
||||
leftoverDef.groups=leftoverDef.groups or {}
|
||||
leftoverDef.groups.not_in_creative_inventory=1
|
||||
if industrialtest.mclAvailable then
|
||||
leftoverDef._doc_items_create_entry=false
|
||||
end
|
||||
-- Item name starts with : to prevent name checks, because it seems to fail in on_mods_loaded
|
||||
minetest.register_craftitem(":"..def.stackLeftover,leftoverDef)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
@ -237,8 +237,11 @@ function industrialtest.RotaryMacerator.activeUpdate(self,pos,elapsed,meta,inv)
|
||||
local modifierSlot=inv:get_stack("modifier",1)
|
||||
local modifierMeta=modifierSlot:get_meta()
|
||||
local uses=result.uses
|
||||
local replace=false
|
||||
if modifierMeta:contains("uses") then
|
||||
uses=modifierMeta:get_int("uses")
|
||||
else
|
||||
replace=true
|
||||
end
|
||||
uses=math.max(uses-1,0)
|
||||
if uses==0 then
|
||||
@ -250,7 +253,12 @@ function industrialtest.RotaryMacerator.activeUpdate(self,pos,elapsed,meta,inv)
|
||||
uses=result.uses
|
||||
end
|
||||
if not modifierSlot:is_empty() and not result.modifierLeftover then
|
||||
local modifierDef=modifierSlot:get_definition()
|
||||
modifierMeta:set_int("uses",uses)
|
||||
modifierMeta:set_string("description",string.format("%s (%s: %d)",modifierDef.description,S("Uses"),uses))
|
||||
end
|
||||
if replace then
|
||||
modifierSlot:set_name(result.stackLeftover)
|
||||
end
|
||||
inv:set_stack("modifier",1,modifierSlot)
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user