← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug-1618547-wares-queue-order into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1618547-wares-queue-order into lp:widelands.

Commit message:
Changed format of productionsite inputs so we have control over the order in the UI.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1618547 in widelands: "Regression: ordering of ware queues in productionsites"
  https://bugs.launchpad.net/widelands/+bug/1618547

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1618547-wares-queue-order/+merge/304766

I also changed the order a bit to be consistent across buildings & tribes.

I am in favor of adding this to Build 19 for 2 reasons:

- Players' muscle memory. It is annoying if it keeps changing from version to version.
- Modders won't have to change their mods again for this for Build 20.

It needs thorough testing though because of the extensive init file hacking.
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1618547-wares-queue-order into lp:widelands.
=== modified file 'data/tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua	2016-09-02 11:52:40 +0000
@@ -40,10 +40,11 @@
       atlanteans_armorsmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      gold = 8,
-      coal = 8
+      { name = "coal", amount = 8 },
+      { name = "iron", amount = 8 },
+      { name = "gold", amount = 8 }
    },
    outputs = {
       "shield_advanced",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/bakery/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/bakery/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/bakery/init.lua	2016-09-02 11:52:40 +0000
@@ -40,10 +40,11 @@
       atlanteans_baker = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      blackroot_flour = 4,
-      cornmeal = 4,
-      water = 8
+      { name = "water", amount = 8 },
+      { name = "cornmeal", amount = 4 },
+      { name = "blackroot_flour", amount = 4 }
    },
    outputs = {
       "atlanteans_bread"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/charcoal_kiln/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/charcoal_kiln/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/charcoal_kiln/init.lua	2016-09-02 11:52:40 +0000
@@ -38,8 +38,9 @@
       atlanteans_charcoal_burner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      log = 8
+      { name = "log", amount = 8 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/coalmine/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/coalmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/coalmine/init.lua	2016-09-02 11:52:40 +0000
@@ -43,10 +43,11 @@
       atlanteans_miner = 3
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      atlanteans_bread = 10,
-      smoked_fish = 10,
-      smoked_meat = 6
+      { name = "smoked_fish", amount = 10 },
+      { name = "smoked_meat", amount = 6 },
+      { name = "atlanteans_bread", amount = 10 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/crystalmine/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/crystalmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/crystalmine/init.lua	2016-09-02 11:52:40 +0000
@@ -43,10 +43,11 @@
       atlanteans_miner = 3
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      atlanteans_bread = 10,
-      smoked_fish = 10,
-      smoked_meat = 6
+      { name = "smoked_fish", amount = 10 },
+      { name = "smoked_meat", amount = 6 },
+      { name = "atlanteans_bread", amount = 10 }
    },
    outputs = {
       "diamond",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua	2016-09-02 11:52:40 +0000
@@ -38,8 +38,9 @@
       atlanteans_carrier = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      gold = 5
+      { name = "gold", amount = 5 }
    },
    outputs = {
       "gold_thread"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/goldmine/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/goldmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/goldmine/init.lua	2016-09-02 11:52:40 +0000
@@ -43,10 +43,11 @@
       atlanteans_miner = 3
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      atlanteans_bread = 10,
-      smoked_fish = 10,
-      smoked_meat = 6
+      { name = "smoked_fish", amount = 10 },
+      { name = "smoked_meat", amount = 6 },
+      { name = "atlanteans_bread", amount = 10 }
    },
    outputs = {
       "gold_ore"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/horsefarm/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/horsefarm/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/atlanteans/horsefarm/init.lua	2016-09-02 11:52:40 +0000
@@ -38,9 +38,10 @@
       atlanteans_horsebreeder = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      corn = 8,
-      water = 8
+      { name = "water", amount = 8 },
+      { name = "corn", amount = 8 }
    },
    outputs = {
       "atlanteans_horse"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/ironmine/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/ironmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/ironmine/init.lua	2016-09-02 11:52:40 +0000
@@ -43,10 +43,11 @@
       atlanteans_miner = 3
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      atlanteans_bread = 10,
-      smoked_fish = 10,
-      smoked_meat = 6
+      { name = "smoked_fish", amount = 10 },
+      { name = "smoked_meat", amount = 6 },
+      { name = "atlanteans_bread", amount = 10 }
    },
    outputs = {
       "iron_ore"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/mill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/mill/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/mill/init.lua	2016-09-02 11:52:40 +0000
@@ -40,9 +40,10 @@
       atlanteans_miller = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      corn = 6,
-      blackroot = 6
+      { name = "corn", amount = 6 },
+      { name = "blackroot", amount = 6 }
    },
    outputs = {
       "cornmeal",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/sawmill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/sawmill/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/atlanteans/sawmill/init.lua	2016-09-02 11:52:40 +0000
@@ -41,8 +41,9 @@
       atlanteans_sawyer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      log = 8
+      { name = "log", amount = 8 }
    },
    outputs = {
       "planks"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/scouts_house/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/scouts_house/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/scouts_house/init.lua	2016-09-02 11:52:40 +0000
@@ -34,9 +34,10 @@
       atlanteans_scout = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      smoked_fish = 2,
-      atlanteans_bread = 2
+      { name = "smoked_fish", amount = 2 },
+      { name = "atlanteans_bread", amount = 2 }
    },
 
    programs = {

=== modified file 'data/tribes/buildings/productionsites/atlanteans/shipyard/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/shipyard/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/shipyard/init.lua	2016-09-02 11:52:40 +0000
@@ -52,10 +52,11 @@
       atlanteans_shipwright = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      planks = 10,
-      log = 2,
-      spidercloth = 4
+      { name = "log", amount = 2 },
+      { name = "planks", amount = 10 },
+      { name = "spidercloth", amount = 4 }
    },
 
    programs = {

=== modified file 'data/tribes/buildings/productionsites/atlanteans/smelting_works/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/smelting_works/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/smelting_works/init.lua	2016-09-02 11:52:40 +0000
@@ -40,10 +40,11 @@
       atlanteans_smelter = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron_ore = 8,
-      gold_ore = 8,
-      coal = 8
+      { name = "coal", amount = 8 },
+      { name = "iron_ore", amount = 8 },
+      { name = "gold_ore", amount = 8 }
    },
    outputs = {
       "iron",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/smokery/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/smokery/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/smokery/init.lua	2016-09-02 11:52:40 +0000
@@ -42,10 +42,11 @@
       atlanteans_smoker = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      fish = 4,
-      meat = 4,
-      log = 8
+      { name = "fish", amount = 4 },
+      { name = "meat", amount = 4 },
+      { name = "log", amount = 8 }
    },
    outputs = {
       "smoked_meat",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/spiderfarm/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/spiderfarm/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/spiderfarm/init.lua	2016-09-02 11:52:40 +0000
@@ -39,9 +39,10 @@
       atlanteans_spiderbreeder = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      corn = 7,
-      water = 7
+      { name = "water", amount = 7 },
+      { name = "corn", amount = 7 }
    },
    outputs = {
       "spider_silk"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua	2016-09-02 11:52:40 +0000
@@ -40,10 +40,11 @@
       atlanteans_toolsmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 6,
-      log = 6,
-      spidercloth = 4
+      { name = "log", amount = 6 },
+      { name = "spidercloth", amount = 4 },
+      { name = "iron", amount = 6 }
    },
    outputs = {
       "bread_paddle",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua	2016-07-07 09:58:30 +0000
+++ data/tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua	2016-09-02 11:52:40 +0000
@@ -41,11 +41,12 @@
       atlanteans_weaponsmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      gold = 8,
-      coal = 8,
-      planks = 8
+      { name = "planks", amount = 8 },
+      { name = "coal", amount = 8 },
+      { name = "iron", amount = 8 },
+      { name = "gold", amount = 8 }
    },
    outputs = {
       "trident_light",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua	2016-09-02 11:52:40 +0000
@@ -42,9 +42,10 @@
       atlanteans_weaver = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      spider_silk = 8,
-      gold_thread = 4
+      { name = "spider_silk", amount = 8 },
+      { name = "gold_thread", amount = 4 }
    },
    outputs = {
       "spidercloth",

=== modified file 'data/tribes/buildings/productionsites/barbarians/ax_workshop/init.lua'
--- data/tribes/buildings/productionsites/barbarians/ax_workshop/init.lua	2016-07-07 09:58:30 +0000
+++ data/tribes/buildings/productionsites/barbarians/ax_workshop/init.lua	2016-09-02 11:52:40 +0000
@@ -49,9 +49,10 @@
       barbarians_blacksmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      coal = 8
+      { name = "coal", amount = 8 },
+      { name = "iron", amount = 8 }
    },
    outputs = {
       "ax",

=== modified file 'data/tribes/buildings/productionsites/barbarians/bakery/init.lua'
--- data/tribes/buildings/productionsites/barbarians/bakery/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/bakery/init.lua	2016-09-02 11:52:40 +0000
@@ -44,9 +44,10 @@
       barbarians_baker = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      wheat = 6,
-      water = 6
+      { name = "water", amount = 6 },
+      { name = "wheat", amount = 6 }
    },
    outputs = {
       "barbarians_bread"

=== modified file 'data/tribes/buildings/productionsites/barbarians/big_inn/init.lua'
--- data/tribes/buildings/productionsites/barbarians/big_inn/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/big_inn/init.lua	2016-09-02 11:52:40 +0000
@@ -41,12 +41,13 @@
       barbarians_innkeeper = 2
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      fish = 4,
-      barbarians_bread = 4,
-      meat = 4,
-      beer_strong = 4,
-      beer = 4
+      { name = "fish", amount = 4 },
+      { name = "meat", amount = 4 },
+      { name = "barbarians_bread", amount = 4 },
+      { name = "beer", amount = 4 },
+      { name = "beer_strong", amount = 4 }
    },
    outputs = {
       "ration",

=== modified file 'data/tribes/buildings/productionsites/barbarians/brewery/init.lua'
--- data/tribes/buildings/productionsites/barbarians/brewery/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/brewery/init.lua	2016-09-02 11:52:40 +0000
@@ -39,9 +39,10 @@
       barbarians_brewer = 1,
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      water = 8,
-      wheat = 8
+      { name = "water", amount = 8 },
+      { name = "wheat", amount = 8 }
    },
    outputs = {
       "beer_strong"

=== modified file 'data/tribes/buildings/productionsites/barbarians/cattlefarm/init.lua'
--- data/tribes/buildings/productionsites/barbarians/cattlefarm/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/barbarians/cattlefarm/init.lua	2016-09-02 11:52:40 +0000
@@ -38,9 +38,10 @@
       barbarians_cattlebreeder = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      wheat = 8,
-      water = 8
+      { name = "water", amount = 8 },
+      { name = "wheat", amount = 8 }
    },
    outputs = {
       "barbarians_ox"

=== modified file 'data/tribes/buildings/productionsites/barbarians/charcoal_kiln/init.lua'
--- data/tribes/buildings/productionsites/barbarians/charcoal_kiln/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/charcoal_kiln/init.lua	2016-09-02 11:52:40 +0000
@@ -42,8 +42,9 @@
       barbarians_charcoal_burner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      log = 8
+      { name = "log", amount = 8 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/barbarians/coalmine/init.lua'
--- data/tribes/buildings/productionsites/barbarians/coalmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/coalmine/init.lua	2016-09-02 11:52:40 +0000
@@ -48,8 +48,9 @@
       barbarians_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 6
+      { name = "ration", amount = 6 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/barbarians/coalmine_deep/init.lua'
--- data/tribes/buildings/productionsites/barbarians/coalmine_deep/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/coalmine_deep/init.lua	2016-09-02 11:52:40 +0000
@@ -48,8 +48,9 @@
       barbarians_miner_chief = 1,
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      snack = 6
+      { name = "snack", amount = 6 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/barbarians/coalmine_deeper/init.lua'
--- data/tribes/buildings/productionsites/barbarians/coalmine_deeper/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/coalmine_deeper/init.lua	2016-09-02 11:52:40 +0000
@@ -47,8 +47,9 @@
       barbarians_miner_master = 1,
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      meal = 6
+      { name = "meal", amount = 6 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/barbarians/goldmine/init.lua'
--- data/tribes/buildings/productionsites/barbarians/goldmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/goldmine/init.lua	2016-09-02 11:52:40 +0000
@@ -48,8 +48,9 @@
       barbarians_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 6
+      { name = "ration", amount = 6 }
    },
    outputs = {
       "gold_ore"

=== modified file 'data/tribes/buildings/productionsites/barbarians/goldmine_deep/init.lua'
--- data/tribes/buildings/productionsites/barbarians/goldmine_deep/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/goldmine_deep/init.lua	2016-09-02 11:52:40 +0000
@@ -48,8 +48,9 @@
       barbarians_miner_chief = 1,
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      snack = 6
+      { name = "snack", amount = 6 }
    },
    outputs = {
       "gold_ore"

=== modified file 'data/tribes/buildings/productionsites/barbarians/goldmine_deeper/init.lua'
--- data/tribes/buildings/productionsites/barbarians/goldmine_deeper/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/goldmine_deeper/init.lua	2016-09-02 11:52:40 +0000
@@ -47,8 +47,9 @@
       barbarians_miner_master = 1,
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      meal = 6
+      { name = "meal", amount = 6 }
    },
    outputs = {
       "gold_ore"

=== modified file 'data/tribes/buildings/productionsites/barbarians/granitemine/init.lua'
--- data/tribes/buildings/productionsites/barbarians/granitemine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/granitemine/init.lua	2016-09-02 11:52:40 +0000
@@ -46,8 +46,9 @@
       barbarians_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 8
+      { name = "ration", amount = 8 }
    },
    outputs = {
       "granite"

=== modified file 'data/tribes/buildings/productionsites/barbarians/helmsmithy/init.lua'
--- data/tribes/buildings/productionsites/barbarians/helmsmithy/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/helmsmithy/init.lua	2016-09-02 11:52:40 +0000
@@ -51,10 +51,11 @@
       barbarians_helmsmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      gold = 8,
-      coal = 8
+      { name = "coal", amount = 8 },
+      { name = "iron", amount = 8 },
+      { name = "gold", amount = 8 }
    },
    outputs = {
       "helmet",

=== modified file 'data/tribes/buildings/productionsites/barbarians/inn/init.lua'
--- data/tribes/buildings/productionsites/barbarians/inn/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/inn/init.lua	2016-09-02 11:52:40 +0000
@@ -41,11 +41,12 @@
       barbarians_innkeeper = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      fish = 4,
-      barbarians_bread = 4,
-      meat = 4,
-      beer = 4
+      { name = "fish", amount = 4 },
+      { name = "meat", amount = 4 },
+      { name = "barbarians_bread", amount = 4 },
+      { name = "beer", amount = 4 }
    },
    outputs = {
       "ration",

=== modified file 'data/tribes/buildings/productionsites/barbarians/ironmine/init.lua'
--- data/tribes/buildings/productionsites/barbarians/ironmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/ironmine/init.lua	2016-09-02 11:52:40 +0000
@@ -48,8 +48,9 @@
       barbarians_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 6
+      { name = "ration", amount = 6 }
    },
    outputs = {
       "iron_ore"

=== modified file 'data/tribes/buildings/productionsites/barbarians/ironmine_deep/init.lua'
--- data/tribes/buildings/productionsites/barbarians/ironmine_deep/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/ironmine_deep/init.lua	2016-09-02 11:52:40 +0000
@@ -48,8 +48,9 @@
       barbarians_miner_chief = 1,
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      snack = 6
+      { name = "snack", amount = 6 }
    },
    outputs = {
       "iron_ore"

=== modified file 'data/tribes/buildings/productionsites/barbarians/ironmine_deeper/init.lua'
--- data/tribes/buildings/productionsites/barbarians/ironmine_deeper/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/ironmine_deeper/init.lua	2016-09-02 11:52:40 +0000
@@ -47,8 +47,9 @@
       barbarians_miner_master = 1,
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      meal = 6
+      { name = "meal", amount = 6 }
    },
    outputs = {
       "iron_ore"

=== modified file 'data/tribes/buildings/productionsites/barbarians/lime_kiln/init.lua'
--- data/tribes/buildings/productionsites/barbarians/lime_kiln/init.lua	2016-07-07 09:58:30 +0000
+++ data/tribes/buildings/productionsites/barbarians/lime_kiln/init.lua	2016-09-02 11:52:40 +0000
@@ -40,10 +40,11 @@
       barbarians_lime_burner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      granite = 6,
-      water = 6,
-      coal = 3
+      { name = "granite", amount = 6 },
+      { name = "water", amount = 6 },
+      { name = "coal", amount = 3 }
    },
    outputs = {
       "grout"

=== modified file 'data/tribes/buildings/productionsites/barbarians/metal_workshop/init.lua'
--- data/tribes/buildings/productionsites/barbarians/metal_workshop/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/barbarians/metal_workshop/init.lua	2016-09-02 11:52:40 +0000
@@ -52,9 +52,10 @@
       barbarians_blacksmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      log = 8
+      { name = "log", amount = 8 },
+      { name = "iron", amount = 8 }
    },
    outputs = {
       "bread_paddle",

=== modified file 'data/tribes/buildings/productionsites/barbarians/micro_brewery/init.lua'
--- data/tribes/buildings/productionsites/barbarians/micro_brewery/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/micro_brewery/init.lua	2016-09-02 11:52:40 +0000
@@ -41,9 +41,10 @@
       barbarians_brewer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      water = 8,
-      wheat = 8
+      { name = "water", amount = 8 },
+      { name = "wheat", amount = 8 }
    },
    outputs = {
       "beer"

=== modified file 'data/tribes/buildings/productionsites/barbarians/scouts_hut/init.lua'
--- data/tribes/buildings/productionsites/barbarians/scouts_hut/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/scouts_hut/init.lua	2016-09-02 11:52:40 +0000
@@ -39,8 +39,9 @@
       barbarians_scout = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 2
+      { name = "ration", amount = 2 }
    },
 
    programs = {

=== modified file 'data/tribes/buildings/productionsites/barbarians/shipyard/init.lua'
--- data/tribes/buildings/productionsites/barbarians/shipyard/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/shipyard/init.lua	2016-09-02 11:52:40 +0000
@@ -51,10 +51,11 @@
       barbarians_shipwright = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      blackwood = 10,
-      log = 2,
-      cloth = 4
+      { name = "log", amount = 2 },
+      { name = "blackwood", amount = 10 },
+      { name = "cloth", amount = 4 }
    },
 
    programs = {

=== modified file 'data/tribes/buildings/productionsites/barbarians/smelting_works/init.lua'
--- data/tribes/buildings/productionsites/barbarians/smelting_works/init.lua	2016-06-17 07:41:37 +0000
+++ data/tribes/buildings/productionsites/barbarians/smelting_works/init.lua	2016-09-02 11:52:40 +0000
@@ -43,10 +43,11 @@
       barbarians_smelter = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron_ore = 8,
-      gold_ore = 8,
-      coal = 8
+      { name = "coal", amount = 8 },
+      { name = "iron_ore", amount = 8 },
+      { name = "gold_ore", amount = 8 }
    },
    outputs = {
       "iron",

=== modified file 'data/tribes/buildings/productionsites/barbarians/tavern/init.lua'
--- data/tribes/buildings/productionsites/barbarians/tavern/init.lua	2016-07-07 09:58:30 +0000
+++ data/tribes/buildings/productionsites/barbarians/tavern/init.lua	2016-09-02 11:52:40 +0000
@@ -45,10 +45,11 @@
       barbarians_innkeeper = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      fish = 4,
-      barbarians_bread = 4,
-      meat = 4
+      { name = "fish", amount = 4 },
+      { name = "meat", amount = 4 },
+      { name = "barbarians_bread", amount = 4 }
    },
    outputs = {
       "ration"

=== modified file 'data/tribes/buildings/productionsites/barbarians/warmill/init.lua'
--- data/tribes/buildings/productionsites/barbarians/warmill/init.lua	2016-07-08 18:02:28 +0000
+++ data/tribes/buildings/productionsites/barbarians/warmill/init.lua	2016-09-02 11:52:40 +0000
@@ -49,10 +49,11 @@
       barbarians_blacksmith_master = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      coal = 8,
-      gold = 8
+      { name = "coal", amount = 8 },
+      { name = "iron", amount = 8 },
+      { name = "gold", amount = 8 }
    },
    outputs = {
       "ax",

=== modified file 'data/tribes/buildings/productionsites/barbarians/weaving_mill/init.lua'
--- data/tribes/buildings/productionsites/barbarians/weaving_mill/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/barbarians/weaving_mill/init.lua	2016-09-02 11:52:40 +0000
@@ -43,8 +43,9 @@
       barbarians_weaver = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      thatch_reed = 8
+      { name = "thatch_reed", amount = 8 }
    },
    outputs = {
       "cloth"

=== modified file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua'
--- data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2016-07-07 09:58:30 +0000
+++ data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2016-09-02 11:52:40 +0000
@@ -48,8 +48,9 @@
       barbarians_lumberjack = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      log = 8
+      { name = "log", amount = 8 }
    },
    outputs = {
       "blackwood"

=== modified file 'data/tribes/buildings/productionsites/empire/armorsmithy/init.lua'
--- data/tribes/buildings/productionsites/empire/armorsmithy/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/armorsmithy/init.lua	2016-09-02 11:52:40 +0000
@@ -50,11 +50,12 @@
       empire_armorsmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      gold = 8,
-      coal = 8,
-      cloth = 8
+      { name = "coal", amount = 8 },
+      { name = "iron", amount = 8 },
+      { name = "gold", amount = 8 },
+      { name = "cloth", amount = 8 }
    },
    outputs = {
       "armor_helmet",

=== modified file 'data/tribes/buildings/productionsites/empire/bakery/init.lua'
--- data/tribes/buildings/productionsites/empire/bakery/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/bakery/init.lua	2016-09-02 11:52:40 +0000
@@ -44,9 +44,10 @@
       empire_baker = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      flour = 6,
-      water = 6
+      { name = "water", amount = 6 },
+      { name = "flour", amount = 6 }
    },
    outputs = {
       "empire_bread"

=== modified file 'data/tribes/buildings/productionsites/empire/brewery/init.lua'
--- data/tribes/buildings/productionsites/empire/brewery/init.lua	2016-06-17 07:41:37 +0000
+++ data/tribes/buildings/productionsites/empire/brewery/init.lua	2016-09-02 11:52:40 +0000
@@ -41,9 +41,10 @@
       empire_brewer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      water = 7,
-      wheat = 7
+      { name = "water", amount = 7 },
+      { name = "wheat", amount = 7 }
    },
    outputs = {
       "beer"

=== modified file 'data/tribes/buildings/productionsites/empire/charcoal_kiln/init.lua'
--- data/tribes/buildings/productionsites/empire/charcoal_kiln/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/charcoal_kiln/init.lua	2016-09-02 11:52:40 +0000
@@ -39,8 +39,9 @@
       empire_charcoal_burner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      log = 8
+      { name = "log", amount = 8 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/empire/coalmine/init.lua'
--- data/tribes/buildings/productionsites/empire/coalmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/coalmine/init.lua	2016-09-02 11:52:40 +0000
@@ -45,9 +45,10 @@
       empire_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 6,
-      beer = 6
+      { name = "ration", amount = 6 },
+      { name = "beer", amount = 6 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/empire/coalmine_deep/init.lua'
--- data/tribes/buildings/productionsites/empire/coalmine_deep/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/coalmine_deep/init.lua	2016-09-02 11:52:40 +0000
@@ -43,9 +43,10 @@
       empire_miner_master = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      meal = 6,
-      beer = 6
+      { name = "meal", amount = 6 },
+      { name = "beer", amount = 6 }
    },
    outputs = {
       "coal"

=== modified file 'data/tribes/buildings/productionsites/empire/donkeyfarm/init.lua'
--- data/tribes/buildings/productionsites/empire/donkeyfarm/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/empire/donkeyfarm/init.lua	2016-09-02 11:52:40 +0000
@@ -38,9 +38,10 @@
       empire_donkeybreeder = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      wheat = 8,
-      water = 8
+      { name = "water", amount = 8 },
+      { name = "wheat", amount = 8 }
    },
    outputs = {
       "empire_donkey"

=== modified file 'data/tribes/buildings/productionsites/empire/goldmine/init.lua'
--- data/tribes/buildings/productionsites/empire/goldmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/goldmine/init.lua	2016-09-02 11:52:40 +0000
@@ -45,9 +45,10 @@
       empire_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 6,
-      wine = 6
+      { name = "ration", amount = 6 },
+      { name = "wine", amount = 6 }
    },
    outputs = {
       "gold_ore"

=== modified file 'data/tribes/buildings/productionsites/empire/goldmine_deep/init.lua'
--- data/tribes/buildings/productionsites/empire/goldmine_deep/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/goldmine_deep/init.lua	2016-09-02 11:52:40 +0000
@@ -43,9 +43,10 @@
       empire_miner_master = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      meal = 6,
-      wine = 6
+      { name = "meal", amount = 6 },
+      { name = "wine", amount = 6 }
    },
    outputs = {
       "gold_ore"

=== modified file 'data/tribes/buildings/productionsites/empire/inn/init.lua'
--- data/tribes/buildings/productionsites/empire/inn/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/inn/init.lua	2016-09-02 11:52:40 +0000
@@ -39,10 +39,11 @@
       empire_innkeeper = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      fish = 6,
-      empire_bread = 6,
-      meat = 6
+      { name = "fish", amount = 6 },
+      { name = "meat", amount = 6 },
+      { name = "empire_bread", amount = 6 }
    },
    outputs = {
       "ration",

=== modified file 'data/tribes/buildings/productionsites/empire/ironmine/init.lua'
--- data/tribes/buildings/productionsites/empire/ironmine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/ironmine/init.lua	2016-09-02 11:52:40 +0000
@@ -45,9 +45,10 @@
       empire_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 6,
-      beer = 6
+      { name = "ration", amount = 6 },
+      { name = "beer", amount = 6 }
    },
    outputs = {
       "iron_ore"

=== modified file 'data/tribes/buildings/productionsites/empire/ironmine_deep/init.lua'
--- data/tribes/buildings/productionsites/empire/ironmine_deep/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/ironmine_deep/init.lua	2016-09-02 11:52:40 +0000
@@ -43,9 +43,10 @@
       empire_miner_master = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      meal = 6,
-      beer = 6
+      { name = "meal", amount = 6 },
+      { name = "beer", amount = 6 }
    },
    outputs = {
       "iron_ore"

=== modified file 'data/tribes/buildings/productionsites/empire/marblemine/init.lua'
--- data/tribes/buildings/productionsites/empire/marblemine/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/marblemine/init.lua	2016-09-02 11:52:40 +0000
@@ -45,9 +45,10 @@
       empire_miner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 6,
-      wine = 6
+      { name = "ration", amount = 6 },
+      { name = "wine", amount = 6 }
    },
    outputs = {
       "marble",

=== modified file 'data/tribes/buildings/productionsites/empire/marblemine_deep/init.lua'
--- data/tribes/buildings/productionsites/empire/marblemine_deep/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/marblemine_deep/init.lua	2016-09-02 11:52:40 +0000
@@ -43,9 +43,10 @@
       empire_miner_master = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      meal = 6,
-      wine = 6
+      { name = "meal", amount = 6 },
+      { name = "wine", amount = 6 }
    },
    outputs = {
       "marble",

=== modified file 'data/tribes/buildings/productionsites/empire/mill/init.lua'
--- data/tribes/buildings/productionsites/empire/mill/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/empire/mill/init.lua	2016-09-02 11:52:40 +0000
@@ -40,8 +40,9 @@
       empire_miller = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      wheat = 6
+      { name = "wheat", amount = 6 }
    },
    outputs = {
       "flour"

=== modified file 'data/tribes/buildings/productionsites/empire/piggery/init.lua'
--- data/tribes/buildings/productionsites/empire/piggery/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/empire/piggery/init.lua	2016-09-02 11:52:40 +0000
@@ -40,9 +40,10 @@
       empire_pigbreeder = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      wheat = 7,
-      water = 7
+      { name = "wheat", amount = 7 },
+      { name = "water", amount = 7 }
    },
    outputs = {
       "meat"

=== modified file 'data/tribes/buildings/productionsites/empire/sawmill/init.lua'
--- data/tribes/buildings/productionsites/empire/sawmill/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/empire/sawmill/init.lua	2016-09-02 11:52:40 +0000
@@ -41,8 +41,9 @@
       empire_carpenter = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      log = 8
+      { name = "log", amount = 8 }
    },
    outputs = {
       "planks"

=== modified file 'data/tribes/buildings/productionsites/empire/scouts_house/init.lua'
--- data/tribes/buildings/productionsites/empire/scouts_house/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/scouts_house/init.lua	2016-09-02 11:52:40 +0000
@@ -35,8 +35,9 @@
       empire_scout = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      ration = 2
+      { name = "ration", amount = 2 }
    },
 
    programs = {

=== modified file 'data/tribes/buildings/productionsites/empire/sheepfarm/init.lua'
--- data/tribes/buildings/productionsites/empire/sheepfarm/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/empire/sheepfarm/init.lua	2016-09-02 11:52:40 +0000
@@ -38,9 +38,10 @@
       empire_shepherd = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      wheat = 7,
-      water = 7
+      { name = "water", amount = 7 },
+      { name = "wheat", amount = 7 }
    },
    outputs = {
       "wool"

=== modified file 'data/tribes/buildings/productionsites/empire/shipyard/init.lua'
--- data/tribes/buildings/productionsites/empire/shipyard/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/shipyard/init.lua	2016-09-02 11:52:40 +0000
@@ -51,10 +51,11 @@
       empire_shipwright = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      planks = 10,
-      log = 2,
-      cloth = 4
+      { name = "log", amount = 2 },
+      { name = "planks", amount = 10 },
+      { name = "cloth", amount = 4 }
    },
 
    programs = {

=== modified file 'data/tribes/buildings/productionsites/empire/smelting_works/init.lua'
--- data/tribes/buildings/productionsites/empire/smelting_works/init.lua	2016-06-18 07:31:14 +0000
+++ data/tribes/buildings/productionsites/empire/smelting_works/init.lua	2016-09-02 11:52:40 +0000
@@ -45,10 +45,11 @@
       empire_smelter = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron_ore = 8,
-      gold_ore = 8,
-      coal = 8
+      { name = "coal", amount = 8 },
+      { name = "iron_ore", amount = 8 },
+      { name = "gold_ore", amount = 8 }
    },
    outputs = {
       "iron",

=== modified file 'data/tribes/buildings/productionsites/empire/stonemasons_house/init.lua'
--- data/tribes/buildings/productionsites/empire/stonemasons_house/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/empire/stonemasons_house/init.lua	2016-09-02 11:52:40 +0000
@@ -42,8 +42,9 @@
       empire_stonemason = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      marble = 6
+      { name = "marble", amount = 6 }
    },
    outputs = {
       "marble_column"

=== modified file 'data/tribes/buildings/productionsites/empire/tavern/init.lua'
--- data/tribes/buildings/productionsites/empire/tavern/init.lua	2016-07-07 09:58:30 +0000
+++ data/tribes/buildings/productionsites/empire/tavern/init.lua	2016-09-02 11:52:40 +0000
@@ -41,10 +41,11 @@
       empire_innkeeper = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      fish = 5,
-      empire_bread = 5,
-      meat = 5
+      { name = "fish", amount = 5 },
+      { name = "meat", amount = 5 },
+      { name = "empire_bread", amount = 5 }
    },
    outputs = {
       "ration"

=== modified file 'data/tribes/buildings/productionsites/empire/toolsmithy/init.lua'
--- data/tribes/buildings/productionsites/empire/toolsmithy/init.lua	2016-02-09 12:50:52 +0000
+++ data/tribes/buildings/productionsites/empire/toolsmithy/init.lua	2016-09-02 11:52:40 +0000
@@ -40,9 +40,10 @@
       empire_toolsmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      log = 8
+      { name = "log", amount = 8 },
+      { name = "iron", amount = 8 },
    },
    outputs = {
       "felling_ax",

=== modified file 'data/tribes/buildings/productionsites/empire/weaponsmithy/init.lua'
--- data/tribes/buildings/productionsites/empire/weaponsmithy/init.lua	2016-06-17 07:41:37 +0000
+++ data/tribes/buildings/productionsites/empire/weaponsmithy/init.lua	2016-09-02 11:52:40 +0000
@@ -46,11 +46,12 @@
       empire_weaponsmith = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      iron = 8,
-      gold = 8,
-      coal = 8,
-      planks = 8
+      { name = "planks", amount = 8 },
+      { name = "coal", amount = 8 },
+      { name = "iron", amount = 8 },
+      { name = "gold", amount = 8 }
    },
    outputs = {
       "spear_wooden",

=== modified file 'data/tribes/buildings/productionsites/empire/weaving_mill/init.lua'
--- data/tribes/buildings/productionsites/empire/weaving_mill/init.lua	2015-12-11 16:54:00 +0000
+++ data/tribes/buildings/productionsites/empire/weaving_mill/init.lua	2016-09-02 11:52:40 +0000
@@ -47,8 +47,9 @@
       empire_weaver = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      wool = 8
+      { name = "wool", amount = 8 }
    },
    outputs = {
       "cloth"

=== modified file 'data/tribes/buildings/productionsites/empire/winery/init.lua'
--- data/tribes/buildings/productionsites/empire/winery/init.lua	2016-06-17 07:41:37 +0000
+++ data/tribes/buildings/productionsites/empire/winery/init.lua	2016-09-02 11:52:40 +0000
@@ -43,8 +43,9 @@
       empire_vintner = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      grape = 8
+      { name = "grape", amount = 8 }
    },
    outputs = {
       "wine"

=== modified file 'data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua'
--- data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2016-01-02 21:39:43 +0000
+++ data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2016-09-02 11:52:40 +0000
@@ -45,14 +45,15 @@
       atlanteans_trainer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      atlanteans_bread = 10,
-      smoked_fish = 6,
-      smoked_meat = 6,
-      trident_long = 4,
-      trident_steel = 4,
-      trident_double = 4,
-      trident_heavy_double = 4
+      { name = "smoked_fish", amount = 6 },
+      { name = "smoked_meat", amount = 6 },
+      { name = "atlanteans_bread", amount = 10 },
+      { name = "trident_long", amount = 4 },
+      { name = "trident_steel", amount = 4 },
+      { name = "trident_double", amount = 4 },
+      { name = "trident_heavy_double", amount = 4 }
    },
    outputs = {
       "atlanteans_soldier",

=== modified file 'data/tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua'
--- data/tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua	2016-02-21 18:57:49 +0000
+++ data/tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua	2016-09-02 11:52:40 +0000
@@ -45,13 +45,14 @@
       atlanteans_trainer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      atlanteans_bread = 10,
-      smoked_fish = 6,
-      smoked_meat = 6,
-      shield_steel = 4,
-      shield_advanced = 4,
-      tabard_golden = 5
+      { name = "smoked_fish", amount = 6 },
+      { name = "smoked_meat", amount = 6 },
+      { name = "atlanteans_bread", amount = 10 },
+      { name = "tabard_golden", amount = 5 },
+      { name = "shield_steel", amount = 4 },
+      { name = "shield_advanced", amount = 4 },
    },
    outputs = {
       "atlanteans_soldier",

=== modified file 'data/tribes/buildings/trainingsites/barbarians/battlearena/init.lua'
--- data/tribes/buildings/trainingsites/barbarians/battlearena/init.lua	2016-01-02 21:39:43 +0000
+++ data/tribes/buildings/trainingsites/barbarians/battlearena/init.lua	2016-09-02 11:52:40 +0000
@@ -57,11 +57,12 @@
       barbarians_trainer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      barbarians_bread = 10,
-      fish = 6,
-      meat = 6,
-      beer_strong = 6
+      { name = "fish", amount = 6 },
+      { name = "meat", amount = 6 },
+      { name = "barbarians_bread", amount = 10 },
+      { name = "beer_strong", amount = 6 }
    },
    outputs = {
       "barbarians_soldier",

=== modified file 'data/tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua'
--- data/tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua	2016-02-17 22:13:21 +0000
+++ data/tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua	2016-09-02 11:52:40 +0000
@@ -50,18 +50,19 @@
       barbarians_trainer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      barbarians_bread = 10,
-      fish = 6,
-      meat = 6,
-      ax_sharp = 2,
-      ax_broad = 2,
-      ax_bronze = 2,
-      ax_battle = 2,
-      ax_warriors = 2,
-      helmet = 2,
-      helmet_mask = 2,
-      helmet_warhelm = 2
+      { name = "fish", amount = 6 },
+      { name = "meat", amount = 6 },
+      { name = "barbarians_bread", amount = 10 },
+      { name = "ax_sharp", amount = 2 },
+      { name = "ax_broad", amount = 2 },
+      { name = "ax_bronze", amount = 2 },
+      { name = "ax_battle", amount = 2 },
+      { name = "ax_warriors", amount = 2 },
+      { name = "helmet", amount = 2 },
+      { name = "helmet_mask", amount = 2 },
+      { name = "helmet_warhelm", amount = 2 }
    },
    outputs = {
       "barbarians_soldier",

=== modified file 'data/tribes/buildings/trainingsites/empire/arena/init.lua'
--- data/tribes/buildings/trainingsites/empire/arena/init.lua	2016-02-04 21:53:36 +0000
+++ data/tribes/buildings/trainingsites/empire/arena/init.lua	2016-09-02 11:52:40 +0000
@@ -48,10 +48,11 @@
       empire_trainer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      empire_bread = 10,
-      fish = 6,
-      meat = 6
+      { name = "fish", amount = 6 },
+      { name = "meat", amount = 6 },
+      { name = "empire_bread", amount = 10 }
    },
    outputs = {
       "empire_soldier",

=== modified file 'data/tribes/buildings/trainingsites/empire/colosseum/init.lua'
--- data/tribes/buildings/trainingsites/empire/colosseum/init.lua	2016-02-04 21:53:36 +0000
+++ data/tribes/buildings/trainingsites/empire/colosseum/init.lua	2016-09-02 11:52:40 +0000
@@ -44,10 +44,11 @@
       empire_trainer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      empire_bread = 10,
-      fish = 6,
-      meat = 6
+      { name = "fish", amount = 6 },
+      { name = "meat", amount = 6 },
+      { name = "empire_bread", amount = 10 }
    },
    outputs = {
       "empire_soldier",

=== modified file 'data/tribes/buildings/trainingsites/empire/trainingcamp/init.lua'
--- data/tribes/buildings/trainingsites/empire/trainingcamp/init.lua	2016-02-17 22:13:21 +0000
+++ data/tribes/buildings/trainingsites/empire/trainingcamp/init.lua	2016-09-02 11:52:40 +0000
@@ -44,18 +44,19 @@
       empire_trainer = 1
    },
 
+   -- This table is nested so we can define the order in the building's UI.
    inputs = {
-      empire_bread = 10,
-      fish = 6,
-      meat = 6,
-      spear = 2,
-      spear_advanced = 2,
-      spear_heavy = 2,
-      spear_war = 2,
-      armor_helmet = 2,
-      armor = 2,
-      armor_chain = 2,
-      armor_gilded = 2
+      { name = "fish", amount = 6 },
+      { name = "meat", amount = 6 },
+      { name = "empire_bread", amount = 10 },
+      { name = "spear", amount = 2 },
+      { name = "spear_advanced", amount = 2 },
+      { name = "spear_heavy", amount = 2 },
+      { name = "spear_war", amount = 2 },
+      { name = "armor_helmet", amount = 2 },
+      { name = "armor", amount = 2 },
+      { name = "armor_chain", amount = 2 },
+      { name = "armor_gilded", amount = 2 },
    },
    outputs = {
       "empire_soldier",

=== modified file 'src/economy/test/test_routing.cc'
--- src/economy/test/test_routing.cc	2016-08-31 07:18:22 +0000
+++ src/economy/test/test_routing.cc	2016-09-02 11:52:40 +0000
@@ -542,7 +542,7 @@
 
 	TestingRoutingNode* start;
 	TestingRoutingNode* end;
-	TestingRoutingNode *d1, *d2, *d3, *d4, *d5;
+	TestingRoutingNode* d1, *d2, *d3, *d4, *d5;
 };
 BOOST_FIXTURE_TEST_CASE(priced_routing, DistanceRoutingFixture) {
 	Nodes chain;

=== modified file 'src/editor/tools/tool.h'
--- src/editor/tools/tool.h	2016-08-31 07:18:22 +0000
+++ src/editor/tools/tool.h	2016-09-02 11:52:40 +0000
@@ -102,7 +102,7 @@
 	}
 
 protected:
-	EditorTool &second_, &third_;
+	EditorTool& second_, &third_;
 	bool undoable_;
 
 private:

=== modified file 'src/editor/ui_menus/player_menu.h'
--- src/editor/ui_menus/player_menu.h	2016-08-31 07:18:22 +0000
+++ src/editor/ui_menus/player_menu.h	2016-09-02 11:52:40 +0000
@@ -49,7 +49,7 @@
 	UI::Textarea* nr_of_players_ta_;
 	UI::EditBox* plr_names_[MAX_PLAYERS];
 	UI::Button add_player_, remove_last_player_;
-	UI::Button *plr_make_infrastructure_buts_[MAX_PLAYERS], *plr_set_pos_buts_[MAX_PLAYERS],
+	UI::Button* plr_make_infrastructure_buts_[MAX_PLAYERS], *plr_set_pos_buts_[MAX_PLAYERS],
 	   *plr_set_tribes_buts_[MAX_PLAYERS];
 
 	std::vector<std::string> tribenames_;

=== modified file 'src/io/fileread.cc'
--- src/io/fileread.cc	2016-08-31 07:18:22 +0000
+++ src/io/fileread.cc	2016-09-02 11:52:40 +0000
@@ -96,7 +96,7 @@
 	if (i >= length_)
 		throw FileBoundaryExceeded();
 	char* const result = data_ + i;
-	for (char *p = result; *p; ++p, ++i) {
+	for (char* p = result; *p; ++p, ++i) {
 	}
 	++i;                    //  beyond the null
 	if (i > (length_ + 1))  // allow EOF as end marker for string

=== modified file 'src/logic/backtrace.cc'
--- src/logic/backtrace.cc	2016-08-31 07:18:22 +0000
+++ src/logic/backtrace.cc	2016-09-02 11:52:40 +0000
@@ -36,7 +36,7 @@
 	void* stack[BACKTRACE_STACKSIZE];
 	size_t size = backtrace(stack, BACKTRACE_STACKSIZE);
 	char** const list = backtrace_symbols(stack, size);
-	for (char *const *it = list; size; --size, ++it) {
+	for (char* const * it = list; size; --size, ++it) {
 		result += *it;
 		result += '\n';
 	}

=== modified file 'src/logic/map_objects/tribes/production_program.cc'
--- src/logic/map_objects/tribes/production_program.cc	2016-08-31 07:18:22 +0000
+++ src/logic/map_objects/tribes/production_program.cc	2016-09-02 11:52:40 +0000
@@ -67,7 +67,7 @@
 ///    bool const result = match(candidate, "return");
 /// now candidate points to "   75" and result is true
 bool match(char*& candidate, const char* pattern) {
-	for (char *p = candidate;; ++p, ++pattern)
+	for (char* p = candidate;; ++p, ++pattern)
 		if (!*pattern) {
 			candidate = p;
 			return true;
@@ -113,7 +113,7 @@
 ///    bool const result = match_force_skip(candidate, "return");
 /// throws WException
 bool match_force_skip(char*& candidate, const char* pattern) {
-	for (char *p = candidate;; ++p, ++pattern)
+	for (char* p = candidate;; ++p, ++pattern)
 		if (!*pattern) {
 			force_skip(p);
 			candidate = p;

=== modified file 'src/logic/map_objects/tribes/productionsite.cc'
--- src/logic/map_objects/tribes/productionsite.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/productionsite.cc	2016-09-02 11:52:40 +0000
@@ -106,12 +106,14 @@
 	}
 
 	if (table.has_key("inputs")) {
-		items_table = table.get_table("inputs");
-		for (const std::string& ware_name : items_table->keys<std::string>()) {
-			int amount = items_table->get_int(ware_name);
+		std::vector<std::unique_ptr<LuaTable>> input_entries =
+		   table.get_table("inputs")->array_entries<std::unique_ptr<LuaTable>>();
+		for (std::unique_ptr<LuaTable>& entry_table : input_entries) {
+			const std::string& ware_name = entry_table->get_string("name");
+			int amount = entry_table->get_int("amount");
 			try {
 				if (amount < 1 || 255 < amount) {
-					throw wexception("count is out of range 1 .. 255");
+					throw wexception("amount is out of range 1 .. 255");
 				}
 				DescriptionIndex const idx = egbase.tribes().ware_index(ware_name);
 				if (egbase.tribes().ware_exists(idx)) {


Follow ups