diff --git a/src/scripts/models/item_page.coffee b/src/scripts/models/item_page.coffee index 92971a74f..b3c992fca 100644 --- a/src/scripts/models/item_page.coffee +++ b/src/scripts/models/item_page.coffee @@ -34,7 +34,7 @@ module.exports = class ItemPage extends BaseModel if not @params?.name? @params = null else - item = @modPack.findItemByName @params.name + item = @modPack.findItemByName @params.name, enableAsNeeded:true return unless item? and item.isCraftable quantity = if @params.quantity? then parseInt(@params.quantity) else 1 diff --git a/src/scripts/models/mod.coffee b/src/scripts/models/mod.coffee index 166fbebe9..0cdd47978 100644 --- a/src/scripts/models/mod.coffee +++ b/src/scripts/models/mod.coffee @@ -64,14 +64,19 @@ module.exports = class Mod extends BaseModel findItem: (slug, options={})-> options.includeDisabled ?= false + options.enableAsNeeded ?= false if not options.includeDisabled return unless @_activeModVersion? return @_activeModVersion.findItem slug else for modVersion in @_modVersions + modVersion.fetch() + item = modVersion.findItem slug - return item if item? + if item? + if options.enableAsNeeded then @setActiveVersion modVersion.version + return item return null @@ -121,6 +126,8 @@ module.exports = class Mod extends BaseModel return @_activeVersion setActiveVersion: (version)-> + return if version is @_activeVersion + version ?= Mod.Version.None if version is Mod.Version.Latest then version = _.last(@_modVersions).version diff --git a/src/scripts/models/mod_pack.coffee b/src/scripts/models/mod_pack.coffee index e7f1d29a2..ddd787141 100644 --- a/src/scripts/models/mod_pack.coffee +++ b/src/scripts/models/mod_pack.coffee @@ -32,12 +32,14 @@ module.exports = class ModPack extends BaseModel return null - findItemByName: (name)-> - slug = _.slugify name + findItemByName: (name, options={})-> + options.enableAsNeeded ?= false + options.includeDisabled = true if options.enableAsNeeded + slug = _.slugify name for mod in @_mods - continue unless mod.enabled? - item = mod.findItem slug + continue unless mod.enabled or options.includeDisabled + item = mod.findItem slug, options return item if item? return null