|
“ |
|
„ |
| — Dinnerbone on the advancements system[1] |
The popup that appears when an advancement is completed.
The popup that appears when a goal advancement is completed.
The popup that appears when special challenge advancements are completed.
Advancements are an upcoming feature set to replace achievements.
Obtaining
Advancements are completed much in the same fashion that achievements are. They can be completed in any game mode, and are obtained and saved per world. Advancements can also be granted (and revoked) using the /advancement command.
Although advancements guide players logically through the game, they are independent of each other; an advancement can be completed without having completed the advancements "before" it.
When an advancement is obtained, a sliding toast notification displays in the top right corner. The color of the header text in the notification depends on the advancement; normal advancements have yellow header text, while special "challenge" advancements have pink header text. When a final "goal" advancement is completed, the header text will display Goal Reached! instead of the typical Advancement Made! text.
Interface
The advancements interface. One advancement ("Isn't It Iron Pick") is selected.
The button to access the Advancements screen is found on the pause menu screen.
The advancement system involves several trees composed of advancements, beginning with a root advancement, and ending with goal or challenge advancements. By clicking and dragging, you can view different branches of an advancement tree. Each tree is categorized into different tabs (which are, themselves, advancements). There are currently four tabs in vanilla Minecraft (although more may possibly be added[2][3]):
- Minecraft: The heart and story of the game.
- Adventure: Adventure, exploration, and combat.
- Nether: Bring summer clothes.
- The End: Or the beginning?
Each tab has a different background with a repeating texture.
Advancement icons display a header name and description when hovered over. They only appear in a tree when the advancement before it is completed, although, as stated before, advancements can be completed in any order. The icon frames of goal advancements are more rounded, while challenge advancements have a sharper appearance. Advancement icons begin as light-gray but turn dark-golden when completed.
Extra advancements and tabs can be added and customized with the use of JSON files, as detailed below.
List of advancements
| Icon | Advancement | In-game description | Parent | Actual requirements (if different) | Resource location | |
|---|---|---|---|---|---|---|
![]() | Minecraft | The heart and story of the game | — | Pick up a crafting table from your inventory's crafting field output or a crafting table output. | minecraft:story/root
| |
![]() | Stone Age | Mine stone with your new pickaxe | Minecraft | Pick up cobblestone from the ground. | minecraft:story/mine_stone
| |
![]() | Getting an Upgrade | Construct a better pickaxe | Stone Age | Pick up a stone pickaxe from a crafting table output. | minecraft:story/upgrade_tools
| |
![]() | Acquire Hardware | Smelt an iron ingot | Getting an Upgrade | Pick up an iron ingot from a furnace output. | minecraft:story/smelt_iron
| |
![]() | Suit Up | Protect yourself with a piece of iron armor | Acquire Hardware | Pick up any type of iron armor from a crafting table output. | minecraft:story/obtain_armor
| |
![]() | Hot Stuff | Fill a bucket with lava | Acquire Hardware | Use a lava with a bucket to fill it up. | minecraft:story/lava_bucket
| |
![]() | Isn't It Iron Pick | Upgrade your pickaxe | Acquire Hardware | Pick up an iron pickaxe from a crafting table output. | minecraft:story/iron_tools
| |
![]() | Not Today, Thank You | Deflect an arrow with a shield | Suit Up | Use a shield while an arrow is being shot to you. | minecraft:story/deflect_arrow
| |
![]() | Ice Bucket Challenge | Form and mine a block of Obsidian | Hot Stuff | Pick up obsidian from the ground. | minecraft:story/form_obsidian
| |
![]() | Diamonds! | Acquire diamonds | Isn't It Iron Pick | Pick up a diamond from the ground. | minecraft:story/mine_diamond
| |
![]() | We Need to Go Deeper | Build, light and enter a Nether Portal | Ice Bucket Challenge | Enter the Nether using a Nether Portal. | minecraft:story/enter_the_nether
| |
![]() | Cover Me With Diamonds | Diamond armor saves lives | Diamonds! | Pick up any type of diamond armor from a crafting table output. | minecraft:story/shiny_gear
| |
![]() | Enchanter | Enchant an item at an Enchanting Table | Diamonds! | Enchant an item at an enchantment table. | minecraft:story/enchant_item
| |
![]() | Zombie Doctor | Weaken and then cure a zombie villager | We Need to Go Deeper | Throw a splash potion of weakness at a zombie villager and give it a golden apple (by facing the zombie and pressing the use key with a golden apple in your hand). | minecraft:story/cure_zombie_villager
| |
![]() | Eye Spy | Follow an Ender Eye | We Need to Go Deeper | Find a stronghold. | minecraft:story/follow_ender_eye
| |
![]() | The End? | Enter the End Portal | Eye Spy | Enter The End using an End Portal. | minecraft:story/enter_the_end
| |
| File:Grid Nether Wart.png Nether | ||||||
|---|---|---|---|---|---|---|
| Icon | Advancement | In-game description | Parent | Actual requirements (if different) | Resource location | |
![]() | Nether | Bring summer clothes | - | Enter the nether using a Nether Portal. | minecraft:nether/root
| |
![]() | A Terrible Fortress | Break your way into a Nether Fortress | Nether | Find a Nether Fortress. | minecraft:nether/find_fortress
| |
![]() | Return to Sender | Destroy a Ghast with a fireball | Nether | Kill a ghast using a ghast fireball. | minecraft:nether/return_to_sender
| |
![]() | Into Fire | Relieve a Blaze of its rod | A Terrible Fortress | Pick up a blaze rod from the ground. | minecraft:nether/obtain_blaze_rod
| |
![]() | Spooky Scary Skeleton | Obtain a wither skeleton's skull | A Terrible Fortress | Pick up a wither skeleton skull from the ground. | minecraft:nether/get_wither_skull
| |
![]() | Local Brewery | Brew a potion | Into Fire | Pick up a potion from a brewing stand potion slot. An already-created potion placed and removed qualifies. | minecraft:nether/brew_potion
| |
![]() | Withering Heights | Summon the Wither | Spooky Scary Skeleton | Be within a 100.9×100.9×103.5 cuboid centered on the Wither when it is spawned. | minecraft:nether/summon_wither
| |
![]() | Bring Home the Beacon | Construct and place a Beacon | Withering Heights | Place a beacon on top of a pyramid where the beacon block will realize that it has become powered. | minecraft:nether/create_beacon
| |
![]() | Beaconator | Bring a beacon to full power | Bring Home the Beacon | Be within a 20×20×14 cuboid centered on the pyramid when the beacon block realizes it is fully powered. | minecraft:nether/create_full_beacon
| |
| File:Grid End Stone.png The End | ||||||
|---|---|---|---|---|---|---|
| Icon | Advancement | In-game description | Parent | Actual requirements (if different) | Resource location | |
![]() | The End | Or the beginning? | — | Enter The End using an End Portal. | minecraft:end/root
| |
![]() | Free the End | Good luck | The End | Kill the ender dragon. | minecraft:end/kill_dragon
| |
![]() | The Next Generation | Hold the Dragon Egg | Free the End | Pick up a dragon egg from the ground. | minecraft:end/dragon_egg
| |
![]() | Remote Getaway | Escape the island | Free the End | Throw an ender pearl through an End gateway. | minecraft:end/enter_end_gateway
| |
![]() | The End... Again... | Respawn the ender dragon. | Free the End | Place four end crystals on the end exit portal, one on each side. | minecraft:end/respawn_dragon
| |
![]() | You Need a Mint | Collect dragon's breath in a glass bottle. | Free the End | - | minecraft:end/dragon_breath
| |
![]() | The City at the End of the Game | Go on in, what could happen? | Remote Getaway | Enter an End City. | minecraft:end/find_end_city
| |
![]() | Bring Home the Beacon | Find an Elytra | The City at the End of the Game | Pick up a pair of elytra from the ground. | minecraft:end/elytra
| |
![]() | Great View From Up Here | Levitate for at least 30 seconds | The City at the End of the Game | Have the levitation effect applied for greater than 30 seconds. | minecraft:end/levitate
| |
| Icon | Advancement | In-game description | Parent | Actual requirements (if different) | Resource location | |
|---|---|---|---|---|---|---|
![]() | Adventure | Adventure, exploration, and combat | - | - | minecraft:adventure/root
| |
![]() | Monster Hunter | Kill any hostile monster | Adventure | - | minecraft:adventure/kill_a_mob
| |
![]() | What a Deal! | Successfully trade with a Villager | Adventure | - | minecraft:adventure/trade
| |
![]() | Sweet dreams | Change your respawn point | Adventure | Successfully sleep in a bed | minecraft:adventure/sleep_in_bed
| |
![]() | Take Aim | Shoot something with a bow and arrow | Monster Hunter | Fire a bow | minecraft:adventure/shoot_arrow
| |
![]() | Monsters Hunted | Kill one of every hostile monster | Monster Hunter | - | minecraft:adventure/kill_all_mobs
| |
![]() | Adventuring Time | Discover every biome | Sweet dreams | Enter each of the 36 main biomes | minecraft:adventure/adventuring_time
| |
![]() | Sniper Duel | Kill a skeleton with an arrow from more than 50 meters | Take Aim | - | minecraft:adventure/sniper_duel
| |
JSON Format
The advancements in the 'data/advancements' folder of a Minecraft world store the advancement data for that world as separate JSON files:
One of these JSON files is structured according to the following format: For story advancements:
- The root tag.
- display: The optional display data.
- icon: An item or block id to represent the icon in the advancements window.
- title: The title for this story advancement.
- title: A JSON text component (containing text and formatting like used in /tellraw and various other commands)
- frame: The optional type of frame for the icon.
challengefor a tile with a more fancy spiked border as it is used for the kill all mobs advancement,goalfor a tile with a rounded border as it is used for the full beacon advancement,taskfor a normal tile (default). - background: The optional directory for the background to use in this advancement tab (only for the root advancement).
- description: The description of the advancement
- parent: The optional parent advancement directory of this advancement (does not apply for the root advancement).
- criteria: The required criteria that have to be met.
- <criteriaName>: A name given to the criteria (can be any string, must be unique).
- trigger: The trigger for this advancement; specifies what the game should check for the advancement.
- conditions: All the conditions that need to be met when the trigger gets activated.
- <criteriaName>: A name given to the criteria (can be any string, must be unique).
- requirements: An optional list of requirements (all the <criteriaName>). If all criteria are required, this may be omitted. With multiple criteria: requirements contains a list of lists with criteria (all criteria need to be mentioned). If all the criteria within any of the lists is met, it will complete the advancement. (basically AND grouping and OR grouping the criteria)
- rewards: An optional collection of the rewards provided when this advancement is obtained.
- recipes: A list of crafting recipes (strings).
- loot: A list of loot tables (strings).
- experience: An amount of experience.
- commands: A list of commands (strings). These are run in order by the player, with full privileges.
- display: The optional display data.
Triggers
| Trigger Name | Triggered when: | Available Conditions |
|---|---|---|
| minecraft:bred_animals | Player breeds 2 animals | "parent", "partner", "child" |
| minecraft:brewed_potion | Player brews a potion | "potion" |
| minecraft:construct_beacon | Player changes the structure of a beacon. (When the beacon updates itself) | "level" |
| minecraft:cured_zombie_villager | Player cures a zombie villager | "zombie", "villager" |
| minecraft:enchanted_item | Player enchants an item through an enchanting table (does not get triggered through an anvil, or through commands) | "item", "levels" |
| minecraft:enter_block | Player enters a block (such as a portal) player needs to be standing in the same block space as the block | "block", "state" |
| minecraft:entity_killed_player | Entity kills a player | "entity" |
| minecraft:impossible | Only using commands | |
| minecraft:inventory_changed | Any changes happen to the player's inventory. | "items", "slots" |
| minecraft:item_durability_changed | Any item being damaged in any form. | "item", "durability", "delta" |
| minecraft:location | Checks every 20 ticks (1 second) where the player is | "position", "biome", "feature" |
| minecraft:player_damaged | Player receives damage | "damage" |
| minecraft:player_hurt_entity | Player hurts an entity (including itself) | "damage" |
| minecraft:player_killed_entity | Player kills an entity | "entity" |
| minecraft:recipe_unlocked | Player unlocks a recipe (using a knowledge book for example) | "recipe" |
| minecraft:slept_in_bed | Player enters a bed | "location" |
| minecraft:summoned_entity | Player summons an entity through for example wither skulls (needs to yet be tested thoroughly, e.g. will it work when spawning from dispenser, using spawn eggs, with pumpkins, ender dragon, etc.) | "entity" |
| minecraft:used_ender_eye | Player uses an ender eye (in a world where strongholds generate) | "distance" |
| minecraft:villager_trade | Player trades with a villager | "villager", "item" |
| minecraft:changed_dimension | Player enters to or from a dimension | "to", "from" |
Conditions
Available conditions are listed below:
- conditions:
- biome: The biome the player is currently in.
- block: A block ID.
- child:
- type: An entity ID.
- damage:
- blocked: Checks if the damage was successfully blocked.
- bypasses_armor: Checks if the damage bypasses the armor of a player.
- bypasses_invulnerability: Checks if the damage bypasses the invulnerability status of a player.
- bypasses_magic: Checks if the damage is caused by starvation.
- dealt: Checks the amount of incoming damage against the player before damage reduction.
- dealt
- min: Minimum value.
- max: Maximum value.
- is_explosion: Checks if the damage originates from an explosion.
- is_fire: Checks if the damage originates from fire.
- is_magic: Checks if the damage originates from magic.
- is_projectile: Checks if the damage originates from a projectile.
- source_entity: Checks the entity that dealt damage.
- type: An entity ID.
- taken: Checks the amount of incoming damage against the player after damage reduction.
- taken
- min: Minimum value.
- max: Maximum value.
- distance: The distance to an origin.
- distance
- min: Minimum value.
- max: Maximum value.
- entity:
- type: An entity ID.
- distance: (same as above, trigger dependant)
- feature: Name of a structure (see /locate command)
- item: An item.
- count: Amount of the item.
- data: Data of the item.
- enchantments: List of enchantments.
- An enchantment
- enchantment: An enchantment ID.
- levels: The level of the enchantment.
- levels
- min: Minimum value.
- max: Maximum value.
- An enchantment
- item: An item ID.
- potion: A brewed potion ID.
- items: A list of items.
-
- count: Amount of the item.
- data: Data of the item.
- enchantments: List of enchantments.
- An enchantment
- enchantment: An enchantment ID.
- levels: The level of the enchantment.
- levels
- min: Minimum value.
- max: Maximum value.
- An enchantment
- item: An item ID.
- potion: A brewed potion ID.
-
- level: The tier of beacon.
- level
- min: Minimum value.
- max: Maximum value.
- levels: The levels spent on an enchantment.
- levels
- min: Minimum value.
- max: Maximum value.
- parent: A parent.
- type: An entity ID.
- partner: A partner (the entity the parent above was bred with, useful for checking horses + donkey = mule breeding)
- type: An entity ID.
- position
- x: The x position.
- x
- min: Minimum value.
- max: Maximum value.
- y: The y position.
- y
- min: Minimum value.
- max: Maximum value.
- z: The z position.
- z
- min: Minimum value.
- max: Maximum value.
- potion: A brewed potion ID.
- recipe: A recipe.
- state: The blockstates of a block.
- <state_name>: A single blockstate, with the key name being the state name and the value being the required value of that state.
- slots
- empty: The amount of slots empty in the inventory.
- empty
- min: Minimum value.
- max: Maximum value.
- full: The amount of slots completely filled (stacksize) in the inventory.
- full
- min: Minimum value.
- max: Maximum value.
- occupied: The amount of slots occupied in the inventory.
- occupied
- min: Minimum value.
- max: Maximum value.
- villager: information stored about the villager upon conversion from a zombie.
- distance
- zombie: information stored about the zombie upon conversion to a villager.
- distance
History
| upcoming | |||||
|---|---|---|---|---|---|
1.12{{Extension DPL}}<ul><li>[[White Dye|White Dye]]<br/>{{Item
| image = White Dye.png
| renewable = Yes
| stackable = Yes (64)
}}
'''White dye''' is a [[Dye#Primary|primary color dye]] similar to [[bone meal]].
== Obtaining ==
=== Crafting ===
{{Crafting
|showname=0
|Bone Meal
|Output=White Dye
|type=Material
|head=1
}}
{{Crafting
|Lily of the Valley
|Output=White Dye
|type=Material
|foot=1
}}
=== Loot chest ===
{{#invoke:LootChest|base3|white-dye}}
== Usage ==
{{dye usage}}
=== Crafting ingredient ===
{{crafting usage|ignore=Banner|continue=1}}
{{banner crafting usage}}
=== Loom ingredient ===
{{Banner loom usage|White Dye}}
=== Trading ===
Apprentice-level shepherd villagers have a 20% chance to buy 12 white dye for an emerald.
== Data values ==
=== ID ===
{{edition|java}}:
{{ID table
|edition=java
|showforms=y
|generatetranslationkeys=y
|displayname=White Dye
|spritetype=item
|nameid=white_dye
|form=item
|foot=1}}
{{edition|bedrock}}:
{{ID table
|edition=bedrock
|showaliasids=y
|shownumericids=y
|showforms=y
|notshowbeitemforms=y
|generatetranslationkeys=y
|displayname=White Dye
|spritetype=item
|nameid=white_dye
|aliasid=dye / 19
|id=410
|form=item
|translationkey=item.dye.white_new.name
|foot=1}}
== History ==
{{History|java}}
{{History||1.14|snap=18w43a|[[File:White Dye JE1 BE1.png|32px]] Added white dye.}}
{{History|||snap=18w44a|White dye can now change the text color on [[sign]]s to white.}}
{{History|||snap=19w05a|Added the [[wandering trader]], which sells white dye.}}
{{History|||snap=19w11a|White dye can now be [[trading|bought]] by shepherd villagers.}}
{{History||1.17|snap=20w45a|White dye can now be used to craft [[white candle]]s.}}
{{History|||snap=21w19a|White dyes can no longer be used to craft white candles.}}
{{History|||snap=Pre-release 1|White dye can once again be used to craft white candles.}}
{{History||1.20<br>(Experimental)|link=1.19.3|snap=22w42a|White dye can now change the text color on [[hanging sign]]s to white.}}
{{History||1.20|snap=23w12a|White dye can now be found in [[suspicious gravel]] and [[suspicious sand]] in [[trail ruins]].}}
{{History|||snap=23w16a|White dye no longer generates in [[suspicious sand]] in [[trail ruins]].|Due to the split of the archaeological loot tables for suspicious gravel within the [[trail ruins]]; white dye is now common loot.}}
{{History|bedrock}}
{{History||1.8.0|snap=beta 1.8.0.10|[[File:White Dye JE1 BE1.png|32px]] Added white dye.}}
{{History||1.9.0|snap=beta 1.9.0.0|Added [[flower|lilies of the valley]], which can be used to [[crafting|craft]] white dye.}}
{{History||1.11.0|snap=beta 1.11.0.4|White dye can now be [[trading|sold]] to shepherd [[villager]]s.}}
{{History||1.16.100|snap=beta 1.16.100.56|The ID of white dye has been changed from <code>dye/19</code> to <code>white_dye</code>.}}
{{History|ps4}}
{{History||1.83|[[File:White Dye JE1 BE1.png|32px]] Added white dye.}}
{{History|foot}}
== Issues ==
{{issue list}}
{{Items}}
[[Category:Items]]
[[Category:Dyes]]
[[Category:Renewable resources]]
[[de:Weißer Farbstoff]]
[[es:Tinte blanco]]
[[fr:Teinture blanche]]
[[ja:白色の染料]]
[[ko:하얀색 염료]]
[[pl:Biały barwnik]]
[[pt:Corante branco]]
[[zh:白色染料]]</li><li>[[Echo Shard|Echo Shard]]<br/>{{Item
| title = Echo Shard
| image = Echo Shard.png
| renewable = No
| stackable = Yes (64)
}}
An '''echo shard''' is an item found in [[ancient cities]] which can be used to craft [[recovery compass]]es.
== Obtaining ==
=== Chest loot ===
{{LootChestItem|echo-shard}}
== Usage ==
=== Crafting ingredient ===
{{crafting usage|Echo Shard}}
== History ==
{{History|java}}
{{History||1.19|snap=22w14a|[[File:Echo Shard JE1 BE1.png|32px]] Added echo shards.}}
{{History|bedrock}}
{{History||1.19.0|snap=beta 1.19.0.24|[[File:Echo Shard JE1 BE1.png|32px]] Added echo shards.
|Currently cannot be found inside [[ancient city]] chests due to outdated structures and loot chests.}}
{{History||1.19.0|snap=beta 1.19.0.26|Echo shards now generate inside [[ancient city]] loot chests.}}
{{History|foot}}
== Issues ==
{{issue list}}
{{Items}}
[[Category:Non-renewable resources]]
[[de:Echoscherbe]]
[[es:Fragmento resonante]]
[[fr:Éclat d'écho]]
[[ja:残響の欠片]]
[[lzh:回音殘片]]
[[pt:Fragmento de eco]]
[[pl:Odłamek pogłosu]]
[[ru:Осколок эха]]
[[th:เศษเอคโค]]
[[uk:Уламок відлуння]]
[[zh:回响碎片]]</li></ul> | February 16, 2017 | Dinnerbone tweets that he had spent an entire day designing "a new thing" with Darngeek. | |||
| February 20, 2017 | The design on "this thing" is now done and can begin to be implemented; he later hints at the feature's name.[4] | ||||
| February 22, 2017 | He states that he is "advancing" on the feature; "So. Many. Json. Files." he adds. | ||||
Later that day he states that the project is growing bigger, and that he may need a command "even more complicated than /scoreboard" | |||||
| March 06, 2017 | The backend of the mysterious feature is finished, but the UI needs work, he tweets. | ||||
| "I made a tabthulhu today," he later adds,[5] indicating this feature may use a large number of tabs. | |||||
| March 13, 2017 | He again references the name of the feature in a tweet, stating that he is almost done with "this new feature advancement". | ||||
| March 14, 2017 | He tweets that the UI is now working, and that the project took many days and a few research papers to accomplish. | ||||
| March 22, 2017 | The feature now "awards players with things", he states while making another reference to the feature name. | ||||
| March 23, 2017 | Dinnerbone states that the feature requires around 500 JSON files. | ||||
| He later tweets a teaser of what the feature holds,[6] though it is hidden behind an encrypted .zip file disguised as a .png image, which he clarifies in later tweets.[7][8][9] This .zip file contains custom recipe JSON files. | |||||
| He posts another encrypted .zip file soon afterwards, containing a few more recipes.[10] | |||||
| March 24, 2017 | "A deafening metallic condor keeps distracting me", Dinnerbone states. Users quickly pinpointed this bizarre message to this Gfycat URL officially showcasing advancements for the first time. | ||||
| He reveals that the UI can have several tabs with advancement trees that are themselves advancements.[11] He clarifies that that's what he meant by "tabthulhu."[12] | |||||
| All of the UI is data-driven, including positioning and layout, with no hardcoded data or positions.[13] | |||||
| 17w13a | Advancements added. | ||||
| 17w14a | Added new advancements, including a new "adventure" tab. | ||||
| Added new notifications for when players advance, which have a sliding effect, and come in two colors: yellow for normal advancements, and pink for special challenges. | |||||
| 17w15a | Added the description of an advancement & changed the title of some advancements. | ||||
| 17w16b | Added trigger minecraft:item_durability_changed. | ||||
| 17w17a | Added new advancements and two new tabs: "The End" and "Nether" | ||||
Added trigger levitation. | |||||
Added feature condition to the location trigger. | |||||
| Advancements can now execute commands when achieved. | |||||
| Advancement icons now allow data values. | |||||
Added five modifiers to the /advancement grant and /advancement revoke commands: "everything", "from", "until", "through", and "only". | |||||
| 17w17b | The default advancements now all receive their titles and descriptions from the localization files. | ||||
| Added a new number display to track progress while completing certain advancements | |||||
Added the changed_dimension trigger, which takes two optional conditions: to and from, both being strings that accept "overworld", "the_nether", or "the_end". | |||||
The "location" shared object has a new dimension string (same values as above). | |||||
Issues
Issues relating to "Advancement" are maintained on the bug tracker. Report issues there.
Gallery
References
- ↑ https://www.reddit.com/r/Minecraft/comments/64pk6r/dinnerbone_working_on_giving_advancements/dg4uiou?context=1
- ↑ "The tabs are alternate trees that are themselves advancements too. We support a lot, but we'll use 4/5 in vanilla. http://media.dinnerbone.com/uploads/2017-03/screenshots/24_09-23-41_rYLfqg0Q52.png" – @Dinnerbone (Nathan Adams) on X, March 24, 2017
- ↑ "4 or 5 tabs. Probably: "mine & craft", "nether", "end", "combat", "engineering" or some variant of." – @Dinnerbone (Nathan Adams) on X, March 27, 2017
- ↑ "Getting this implemented in a nice way would be a real advancement for the game." – @Dinnerbone (Nathan Adams) on X, February 20, 2017
- ↑ "I made a tabthulhu at work today. This is an interesting project!" – @Dinnerbone (Nathan Adams) on X, March 6, 2017
- ↑ "This is a super big spoiler of what I'm working on. Totally unfinished and may change a lot, but gives you an idea. http://media.dinnerbone.com/uploads/2017-03/screenshots/23_15-00-52_ttcfj9tDnV.png" – @Dinnerbone (Nathan Adams) on X, March 23, 2017
- ↑ "(No I'm not adding emoji.)" – @Dinnerbone (Nathan Adams) on X, March 23, 2017
- ↑ "(P.s. there was more to that picture than meets the eye. May need a bit of trickery.)" – @Dinnerbone (Nathan Adams) on X, March 23, 2017
- ↑ "Did the filesize seem a bit big?" – @Dinnerbone (Nathan Adams) on X, March 23, 2017
- ↑ "Okay so I think my webserver proxy messed that up. Technology is difficult. Here's a more fun image, in a zip: http:// media.dinnerbone.com/uploads/2017-0 3/screenshots/23_15-00-52_ttcfj9tDnV.zip" – @Dinnerbone (Nathan Adams) on X, March 23, 2017
- ↑ "The tabs are alternate trees that are themselves advancements too. We support a lot, but we'll use 4/5 in vanilla. http://media.dinnerbone.com/uploads/2017-03/screenshots/24_09-23-41_rYLfqg0Q52.png" – @Dinnerbone (Nathan Adams) on X, March 24, 2017
- ↑ "(Thus "tabthulu" tweets from a few weeks back. :D)" – @Dinnerbone (Nathan Adams) on X, March 24, 2017
- ↑ "Also worth noting: all of that UI is data driven. Positioning and layout included. No hardcoded data in UI, no hardcoded positions in data." – @Dinnerbone (Nathan Adams) on X, March 24, 2017





