Qualify all item slugs to the mod which adds them #53
* Change default item URL to fall under /mod/<mod slug>/<item slug> but kept the old URL pattern around with the old behavior (i.e., find the first item with that slug) * Update Item to have a `qualifiedSlug` property which combines the item's own slug with its Mod's slug. Updated a lot of code all over to use this in preference to the plain slug. * Add a `localizeTo` method to Inventory to allow non-qualified slugs to be converted into qualified slugs within the inventory's stacks * Update ModPack to work with either qualified or unqualified slugs for relevant methods * Fix model state changes to happen before related events are triggered * Add a debounce to the CraftingPlan object when triggering a recraft due to changes in related objects (esp. its inventories) * Update the Inventory's sort to keep items sorted by mod before name with the Minecraft items sorted to the top * Fix `ModPack.findItemByName` to actually recursively use the Mod's method instead of slugifying the given name and looking for the slug (since this won't necessarily work anymore). * Ensure each Mod is assigned a reference to its containing ModPack * Fix NameFinder to only consider an item non-gatherable if it is also craftable * Update ModVersionParserV1 to assign qualified slugs to recipes for any items which are in the same mod (leaving any other slugs unqualified) * Add Underscore mixins for composing and decomposing slugs * Update old tests for the use of qualified slugs, and some new tests for the new methods added
This commit is contained in:
@@ -44,25 +44,29 @@ describe 'crafting_plan.coffee', ->
|
||||
plan.want.add 'oak_plank'
|
||||
plan.craft()
|
||||
plan.need.toList().should.eql ['oak_log']
|
||||
plan.result.toList().should.eql [[4, 'oak_plank']]
|
||||
plan.result.toList().should.eql [[4, 'minecraft__oak_plank']]
|
||||
|
||||
it 'can craft a multi-step recipe', ->
|
||||
plan.want.add 'crafting_table'
|
||||
plan.craft()
|
||||
plan.need.toList().should.eql ['oak_log']
|
||||
plan.result.toList().should.eql ['crafting_table']
|
||||
plan.result.toList().should.eql ['minecraft__crafting_table']
|
||||
|
||||
it 'can craft a multi-step recipe using tools', ->
|
||||
plan.want.add 'furnace'
|
||||
plan.craft()
|
||||
plan.need.toList().should.eql [[8, 'cobblestone']]
|
||||
plan.result.toList().should.eql ['furnace']
|
||||
plan.result.toList().should.eql ['minecraft__furnace']
|
||||
|
||||
it 'can craft a multi-step recipe re-using tools', ->
|
||||
plan.want.add 'iron_sword'
|
||||
plan.craft()
|
||||
plan.need.toList().should.eql [[2, 'furnace_fuel'], [2, 'iron_ore'], 'oak_log']
|
||||
plan.result.toList().should.eql ['iron_sword', [2, 'oak_plank'], [3, 'stick']]
|
||||
plan.result.toList().should.eql [
|
||||
'minecraft__iron_sword',
|
||||
[2, 'minecraft__oak_plank'],
|
||||
[3, 'minecraft__stick']
|
||||
]
|
||||
|
||||
describe 'with building tools', ->
|
||||
|
||||
@@ -71,7 +75,7 @@ describe 'crafting_plan.coffee', ->
|
||||
plan.want.add 'furnace'
|
||||
plan.craft()
|
||||
plan.need.toList().should.eql [[8, 'cobblestone'], 'oak_log']
|
||||
plan.result.toList().should.eql ['crafting_table', 'furnace']
|
||||
plan.result.toList().should.eql ['minecraft__crafting_table', 'minecraft__furnace']
|
||||
|
||||
it 'can craft a multi-step recipe re-using tools', ->
|
||||
plan.includingTools = true
|
||||
@@ -82,5 +86,9 @@ describe 'crafting_plan.coffee', ->
|
||||
[8, 'cobblestone'], [2, 'furnace_fuel'], [2, 'iron_ore'], [2, 'oak_log']
|
||||
]
|
||||
plan.result.toList().should.eql [
|
||||
'crafting_table', 'furnace', 'iron_sword', [2, 'oak_plank'], [3, 'stick']
|
||||
'minecraft__crafting_table',
|
||||
'minecraft__furnace',
|
||||
'minecraft__iron_sword',
|
||||
[2, 'minecraft__oak_plank'],
|
||||
[3, 'minecraft__stick']
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user