Achievement "Adventuring Time" doesn't work.
I visited all biomes including the variants and the achievement was not unlocked.
I suspect it is because the biomes 10 "Frozen Ocean" and 20 "Extreme Hills Edge" don't generate in this snapshot.
Steps to Reproduce:
1. Visit all biomes and variants (there are two different "Mega Spruce Taiga"
2. You will not get the achievement
Edit: It only works if the ONLY biomes visited are the existing non-variant biomes except Nether and End.
Linked issues
is duplicated by 1
Attachments
Comments 44
im sorry but im pretty sure its because you've missed a biome/have not properly been in a certain biome
@@unknown: Have you actually got the achievement without visiting Frozen Ocean and Extreme Hills Edge?
no... good point that could be it, but i think Frozen Ocean does generate does it not?
in the mean time though you should probably check for any other missed biomes such as the ones i listed above
@Atom clark, I just used AMIDST and teleported around a world, visiting every single biome and variant... and I still didn't get the achievement. And Frozen Ocean does not generate anymore, along with Extreme Hills Edge.
Uploaded screenshots of the json file from the world mentioned above. As you can see I've explored every biome except Frozen Ocean and Extreme Hills Edge and the "value" (number of times achievement has been gained) is still on 0. I think that another problem is that the Mega Spruce Taiga is only registered once in the json file, seeing as there are actually two different Mega Spruce Taiga biomes with the same name.
I did not miss a biome. I even used MCEdit to cheat and get Frozen Ocean and Extreme Hills Edge. And I didn't miss any of the rare variants (Ms and others - checked the wiki). I checked twice. I even checked my .json file.
no change in 13w39a.
Now it's worse. 13w42b - The progress made in biomes is reset every time I leave minecraft and restart the launcher. more precise: the json file looses all biome progress on restart.
Still occurs in 1.7 Prerelease and in 1.7.1
Does this work? I still can't get it.
It's not resolved. Please reopen!
Correct, it is not solved.
I've done all biomes except the number "161, Mega Taiga Spruce Hills" because I could not find it.
I used the MCEdit program to put the biome "161 Mega Taiga Spruce Hills" and I played again. The Json file only records the "Mega Spruce Taiga" but never the "Mega Taiga Spruce Hills"
I can also confirm this is still not working. I, however, did manage to find a natural 'Mega Spruce Taiga (Hills)' by using AMIDST. However, I had the same issue with the .json file not recording it.
Seeing as no one wants to reopen this report, I created a new ticket last night, MC-42457. Maybe we'll get some attention.
Reopened
After many requests that this is still not working.
Information from MC-42457:
For starters, yes, I AM aware of the fact that this is technically a duplicate of MC-30527. However, after seeing that multiple requests over the last month for that issue to be reopened have been ignored, I've decided to open a new ticket anyway, with the hope it will finally bring a little light to the issue. I apologize if this duplicate causes any mods or admins to have a little extra added to their workload for the day.
Anyway, here is the problem: there seems to still be an issue in obtaining the Adventuring Time achievement. I have all biomes listed as 'explored' in my <playername>.json file, located in the 'Stats' subfolder of my world's save folder.
Well, ALMOST every biome, that is. I am still missing three of them. 'FrozenOcean' (biome 10) and 'ExtremeHillsEdge' (biome 20), as is well known, do not generate in the new world types. As far as the third one, it would either be 'Mega Spruce Taiga' (biome 160) or 'Mega Spruce Taiga (Hills)' (biome 161).
I have visited at least six of both the 'MST' biomes, after using AMIDST to locate them. I have made sure, in both biomes, to have 'g:true', as well as destroying and placing blocks within the biomes.
Regardless of actions taken, only one of the 'MST' biomes appears in the .json file. As it is only labeled as 'Mega Spruce Taiga', and doesn't contain the ID number with it, I'm not sure if it's biome 160 or 161 that is not triggering, though my bet is on 161.
I've included a screenshot of my unedited .json, as proof I have every other biome on the list.
I attempted to edit my .json file (after making a backup, of course) by adding the three missing names to the list. But, seeing as I'm just a chef, not a programmer, I failed in that endeavor, and still did not get the achievement. I WAS, however, able to get it by changing the value of the achievement from '0' to '1', and relaunching Minecraft. This tells me that it IS actually possible to force-trigger the achievement; the issue lies in getting Minecraft to trigger it instead. I do not have MCEdit, or I would force the other two biomes (10 and 20) to appear in my world, and test again. Anyone want to try this for me and leave some comments?
I would suggest to Mojang, either changing the requirements of the achievement by removing the three missing biomes from being required to trigger it, or make sure they all show up in the world generation in the next update, at the very least.
I apologize again to the mods and admins for the long-winded duplicate ticket. However, seeing as Minecraft is about the only life I have outside of work right now, and I'm a hardcore completionist, it's been driving me crazy ever since the first 1.7 snapshot. I want to have earned this achievement legitimately in survival. And I want it really bad, if you can't tell.
Jeb? Dinnerbone? Someone help me out here? Fix this little issue, and I'll see to it that you get fed REALLY well the next time (if ever) you happen to pass through the Western North Carolina area of the USA.
-JVSatterwhite
It seems to me that biomes are added per play (Once you logout and log in).
I would guess the bug is when the playername.json is loaded in to memory it parses all the numbers/counts in properly, only it has no idea how to parse the list. The list is then recreated with your current biome, and as you explore biomes are added to the list. Once you exit or leave the server the file is written.
Then it repeats when you log back it, the list is cleared and you start from scratch. So unless you can hit up all the biomes in one play it prolly wont work. (This is just my theory, I havent peeked at the source code)
It would be a good test to have a map will on the biomes in small zones that you can walk through. That way someone can see if my theory is valid.
@Michael Salim
This ticket is not about not finding certain biomes in a world resp. worldgen not creating certain biomes, it's about not recording visitied biomes in the player statistic.
Oh, it does record all biomes in the json file, it just doesn't complete the achievement even if all existing biomes (and two non-existing ones) are recorded.
It may be because there are two biomes named the same: "Mega Spruce Taiga" (biomes 160 and 161).
The code concerning biome 161 appears to be a bit of a hack. The below code (from BiomeBase) creates all the "M" biomes.
/* 27: 60 */ private static final BiomeBase[] biomes = new BiomeBase[256];
/* 28: 61 */ public static final Set n = Sets.newHashSet();
/* <snip> */
static
/* 71: */ {
/* 72:129 */ PLAINS.k();
/* 73:130 */ DESERT.k();
/* 74:131 */ FOREST.k();
/* 75:132 */ TAIGA.k();
/* 76:133 */ SWAMPLAND.k();
/* 77:134 */ ICE_PLAINS.k();
/* 78:135 */ JUNGLE.k();
/* 79:136 */ JUNGLE_EDGE.k();
/* 80:137 */ COLD_TAIGA.k();
/* 81:138 */ SAVANNA.k();
/* 82:139 */ SAVANNA_PLATEAU.k();
/* 83:140 */ MESA.k();
/* 84:141 */ MESA_PLATEAU_F.k();
/* 85:142 */ MESA_PLATEAU.k();
/* 86:143 */ BIRCH_FOREST.k();
/* 87:144 */ BIRCH_FOREST_HILLS.k();
/* 88:145 */ ROOFED_FOREST.k();
/* 89:146 */ MEGA_TAIGA.k();
/* 90:147 */ EXTREME_HILLS.k();
/* 91:148 */ EXTREME_HILLS_PLUS.k();
/* 92: */
/* 93: */
/* 94:151 */ biomes[(MEGA_TAIGA_HILLS.id + 128)] = biomes[(MEGA_TAIGA.id + 128)];
/* 95:153 */ for (BiomeBase localBiomeBase : biomes) {
/* 96:154 */ if ((localBiomeBase != null) && (localBiomeBase.id < 128)) {
/* 97:155 */ n.add(localBiomeBase);
/* 98: */ }
/* 99: */ }
/* 100:159 */ n.remove(HELL);
/* 101:160 */ n.remove(SKY);
/* 102: */ }
The subroutine "k()" is responsible for creating all of the "M" biomes except for the MEGA_TAIGA_HILLS one. It results in constructing a new BiomeBase object with the new id (normal biome + 128). It appears as if an attempt has been made to create an "M" version of MEGA_TAIGA_HILLS which is identical to the "M" version of MEGA_TAIGA, however as this is done with just the assignment in the above code. A new BiomeBase object is not created and so the biome does not have a new id.
That is "BiomeBase.biomes[161].id == 160". Pretty sure that's a bug right there 😉
However, it is not what is stopping the achievement from being gained! It is the HashSet named "n" in the code above which is used to check if all biomes have been visited. Only biomes with id < 128 are added.
The bug preventing the biome achievement from being set is actually a bit more tricky. See the below code snippet from EntityPlayer.
/* 312: */ protected void j()
/* 313: */ {
/* 314: 303 */ BiomeBase biomebase = this.world.getBiome(MathHelper.floor(this.locX), MathHelper.floor(this.locZ));
/* 315: 305 */ if (biomebase != null)
/* 316: */ {
/* 317: 306 */ String s = biomebase.af;
/* 318: 307 */ AchievementSet achievementset = (AchievementSet)x().b(AchievementList.L);
/* 319: 309 */ if (achievementset == null) {
/* 320: 310 */ achievementset = (AchievementSet)x().a(AchievementList.L, new AchievementSet());
/* 321: */ }
/* 322: 313 */ achievementset.add(s);
/* 323: 314 */ if ((x().b(AchievementList.L)) && (achievementset.size() == BiomeBase.n.size()))
/* 324: */ {
/* 325: 315 */ HashSet hashset = Sets.newHashSet(BiomeBase.n);
/* 326: 316 */ Iterator iterator = achievementset.iterator();
/* 327: 318 */ while (iterator.hasNext())
/* 328: */ {
/* 329: 319 */ String s1 = (String)iterator.next();
/* 330: 320 */ Iterator iterator1 = hashset.iterator();
/* 331: 322 */ while (iterator1.hasNext())
/* 332: */ {
/* 333: 323 */ BiomeBase biomebase1 = (BiomeBase)iterator1.next();
/* 334: 325 */ if (biomebase1.af.equals(s1)) {
/* 335: 326 */ iterator1.remove();
/* 336: */ }
/* 337: */ }
/* 338: 330 */ if (hashset.isEmpty()) {
/* 339: */ break;
/* 340: */ }
/* 341: */ }
/* 342: 335 */ if (hashset.isEmpty()) {
/* 343: 336 */ a(AchievementList.L);
/* 344: */ }
/* 345: */ }
/* 346: */ }
/* 347: */ }
Forgive me if I have read it all wrong (decompiled code isn't the easiest to work with) but I believe the error (or at least an error) is the check "achievementset.size() == BiomeBase.n.size()". Every biome is added to achievementset but only those with id < 128 are added to BiomeBase.n. So the size and contents of these can only be equal if you visit every biome with id < 128 WITHOUT visiting any biome with id > 128. I'd be interested to know if someone could test this theory by editing their json file.
So this is not 1 bug but 3.
1) Not all biomes generate (10 "Frozen Ocean" and 20 "Extreme Hills Edge") – yet they are checked for in this achievement
2) The id of biome 161 is wrong "BiomeBase.biomes[161].id == 160"
3) All biomes are stored in the achievement set yet only those with id < 128 are expected.
There are 2 possible solutions to the last bug (which is actually prevent the achievement).
1) If it is intentional that players do not have to visit the "M" biomes for the achievement: biomes with id < 128 should not be added to the achievementset.
2) Otherwise, ALL biomes should be added to "BiomeBaes.n"
I hope this information and code snippets is useful in fixing these 3 issues 🙂
#Daniel Simmons: Nice!
I tried your idea to only visit all biomes < 128, but it didn't work.
I used a world where I edited in the two missing biomes, then I also edited my json-file, but still.
Hmm, thanks for trying that! I guess it's even more complicated... I'll take a deeper look.
EDIT 30 Jan 2014:
I have now also tried my theory, and I get the same result as you. I forgot to mention that the HELL and SKY biomes are removed from the list, so you should not visit them either. Here is the json file I used (note this still did not allow me to obtain the achievement). I also made sure I was in one of the right biomes before I logged out to update the file.
{"achievement.theEnd2":2,
"stat.useItem.119":21,
"stat.useItem.381":24,
"achievement.acquireIron":2,
"achievement.openInventory":29,
"stat.craftItem.278":16,
"achievement.exploreAllBiomes":{"value":0,
"progress":
["Ocean",
"Plains",
"Desert",
"Extreme Hills",
"Forest",
"Taiga",
"Swampland",
"River",
"FrozenOcean",
"FrozenRiver",
"Ice Plains",
"Ice Mountains",
"MushroomIsland",
"MushroomIslandShore",
"Beach",
"DesertHills",
"ForestHills",
"TaigaHills",
"Extreme Hills Edge",
"Jungle",
"JungleHills",
"JungleEdge",
"Deep Ocean",
"Stone Beach",
"Cold Beach",
"Birch Forest",
"Birch Forest Hills",
"Roofed Forest",
"Cold Taiga",
"Cold Taiga Hills",
"Mega Taiga",
"Mega Taiga Hills",
"Extreme Hills+",
"Savanna",
"Savanna Plateau",
"Mesa",
"Mesa Plateau F",
"Mesa Plateau"]
},
"stat.useItem.49":14,
"stat.useItem.259":1,
"stat.craftItem.58":16,
"stat.craftItem.5":256,
"achievement.portal":2,
"stat.flyOneCm":270343,
"achievement.buildWorkBench":32,
"achievement.buildPickaxe":32,
"achievement.buildFurnace":16,
"achievement.theEnd":1,
"stat.drop":8,
"achievement.diamonds":1,
"stat.useItem.120":31,
"achievement.buildBetterPickaxe":32,
"stat.playOneMinute":8204,
"stat.useItem.61":2,
"achievement.mineWood":1,
"stat.jump":11,
"stat.useItem.58":1,
"stat.mobKills":1,
"stat.craftItem.265":1,
"stat.walkOneCm":7139,
"stat.craftItem.61":8,
"stat.useItem.276":11,
"achievement.blazeRod":1}
Affects snapshot 14w06b.
I did the following to confirm that the bug still exists:
Created a new world in 14w06b called Adventuring Time Test, with seed “1495024308156064375” (no quotes), Creative mode, default generator, structures and cheats on, and bonus chest off.
Started flying, and did a relative teleport to y=128.
Gave myself the achievement “The End?” using the command, which also gave me all prerequisite achievements.
Teleported to the x and z coordinates from http://www.minecraftforum.net/topic/1972850-achievement-adventuring-time-doesnt-work/#entry28405292 in order.
For the Hell and Sky biomes, after teleporting to the River biome I made a Nether portal, went through it and back, then made an End portal, went through it, and jumped into the void to get back into the Overworld. I then teleported back to y=128 and continued down the list of coordinates.
After each teleport, I waited until some of the world was loaded in and made sure that the biome name displayed in F3 matched the biome name I expected to find there based on dinizintheoven's forum post. I noticed that biome 160 has been renamed from “Mega Spruce Taiga” to “Redwood Taiga Hills M”.
I did not get the achievement. If anyone can find an error in my test, please say so.
I have attached my .minecraft/saves/Adventuring Time Test/stats/Fenhl.json, both the unmodified version from after I exited Minecraft (Fenhl.json.orig) and a formatted version for easier reading (Fenhl.json).
I have repeated my test in 14w10c and a new world with the same seed, still no achievement. A definitive list of exactly which biomes (id, name) are supposed to be required for the achievement would be very helpful for further debugging.
The code checks the list against 38 biomes (which is wrong, as there will be more in the visited biomes list -first issue). This is the list of expected biomes (extracted from 1.7.2 using MCP 9):
23 JungleEdge
15 MushroomIslandShore
35 Savanna
39 Mesa Plateau
29 Roofed Forest
31 Cold Taiga Hills
3 Extreme Hills
24 Deep Ocean
19 TaigaHills
32 Mega Taiga
26 Cold Beach
18 ForestHills
13 Ice Mountains
22 JungleHills
38 Mesa Plateau F
16 Beach
27 Birch Forest
6 Swampland
17 DesertHills
1 Plains
10 FrozenOcean
14 MushroomIsland
21 Jungle
0 Ocean
25 Stone Beach
33 Mega Taiga Hills
36 Savanna Plateau
30 Cold Taiga
7 River
2 Desert
34 Extreme Hills+
4 Forest
28 Birch Forest Hills
11 FrozenRiver
20 Extreme Hills Edge
12 Ice Plains
5 Taiga
37 Mesa
So, on top of that, the 10 FrozenOcean and 20 Extreme Hills Edge are nowhere to be found in my world seed -at least. I have not investigated whether they are naturally generated or not, but I suspect they are not -second issue.
No need to go crazy finding "JungleEdge M" and others -not required!!
Unlike JungleEdge M (which does generate), FrozenOcean and Extreme Hills Edge are confirmed not to generate in 1.7 or higher. This second issue might however be fixed in the snapshots already, I'll try teleporting to all the biomes you listed minus these two and will report back on whether that triggers the achievement.
Negative. Affects 14w11b.
Success!
(Sort of)
I cleared my list of visited biomes in the .json file and visited ONLY the list of biomes above (i.e. excluding 8 Hell (The Nether), 9 Sky (The End), 10 FrozenOcean, 20 Extreme Hills Edge, also excluding all variants) and I got the achievement.
Including even one of the other biomes prohibits you from getting the achievement.
And that's the problem. In Survival you can't get to the achievement without visiting Nether and End, also you will not be able to miss all variant biomes and sometimes you even visit only a variant, because it is almost indistinguisheable from a non-variant: e.g. Swampland and Swampland M.
To work right, this achievement should check if you visited a biome or its variant (or both) and ignore all visits to Nether and End.
Strange. In which version did you get that Markus?
While I agree with the part of not visiting any other biome, in 1.7.2 it cannot work (according to the code) without actually visiting FrozenOcean and Extreme Hills Edge.
The algorithm in EntityPlayerMP.func_147098_j() will only give the achievement if:
1. the list of visited biomes is 38 and
2. if it can remove from the list of expected biomes all of them after finding them in the visited biomes... -so actually visiting the 38 expected.
Technically two issues are causing not getting the achievement. That said, I ignore if snapshots have removed 10 and 20 from the expected biome list and reduced the size to 36? That would explain what you see. I think that this bug is pretty clear looking at the code -they just need to fix it 🙂 (the fix is easy, actually).
@unknown: The latest snapshot is the version we're supposed to be testing bugs in, so I'm assuming @unknown is referring to 14w11b.
It's the latest snapshot 14w11b I was using. I did try the same in earlier snapshots (with and without 10/20 or 8/9), but this is the first time where it worked. It's quite possible that I goofed at my earlier attempts.
In that case the remaining fix is as easy as a change of "==" to ">=" in the method I mentioned in my comment above. I mentioned 1.7.2 because it is the latest version currently with MCP. I know it fails in 1.7.9 still.
Mojang should find a (supervised and standarized) way of letting the community apply fixes... it is a pity to see all these bugs with fixes available left stranded.
Mojang has explained on multiple occasions that letting the community contribute fixes is impossible due to copyright/licensing issues. That said, it would be nice if they took the time to change a single character in order to fix the game's achievement system. That is, of course, unless the “fix one bug, encounter a new one” pattern that has been going on with Adventuring Time continues after this.
From a programming standpoint, simply changing to an inequality is the minimal fix. However, from a gameplay standpoint, having such a specific, 38-biome list makes no sense. What if the achievement were any 38 (or other arbitrary number) of distinct biomes? Why should an achievement have such a specific list? Visiting 38 different biomes is quite a feat!
Confirmed fixed, thanks. Screenshot from a mostly legit survival world, my stats file shows the following 56 biomes, although I gather from the comments here it wasn't necessary to get every variation...
"Beach",
"Birch Forest Hills M",
"Birch Forest Hills",
"Birch Forest M",
"Birch Forest",
"Cold Beach"
"Cold Taiga Hills",
"Cold Taiga M",
"Cold Taiga",
"Deep Ocean",
"Desert M",
"Desert",
"DesertHills",
"Extreme Hills M",
"Extreme Hills",
"Extreme Hills+ M",
"Extreme Hills+",
"Flower Forest",
"Forest",
"ForestHills",
"FrozenRiver",
"Hell",
"Ice Mountains",
"Ice Plains Spikes",
"Ice Plains",
"Jungle",
"JungleEdge",
"JungleHills",
"Mega Spruce Taiga",
"Mega Taiga Hills",
"Mega Taiga",
"Mesa (Bryce)",
"Mesa Plateau F M",
"Mesa Plateau F",
"Mesa Plateau M",
"Mesa Plateau",
"Mesa",
"MushroomIsland",
"MushroomIslandShore",
"Ocean",
"Plains",
"River",
"Roofed Forest M",
"Roofed Forest",
"Savanna M",
"Savanna Plateau M",
"Savanna Plateau",
"Savanna",
"Stone Beach",
"Sunflower Plains",
"Swampland M",
"Swampland",
"Taiga M",
"Taiga",
"TaigaHills",
"The End",
Jeffry R. Fisher added a comment - Yesterday 11:28 PM
From a programming standpoint, simply changing to an inequality is the minimal fix. However, from a gameplay standpoint, having such a specific, 38-biome list makes no sense. What if the achievement were any 38 (or other arbitrary number) of distinct biomes? Why should an achievement have such a specific list? Visiting 38 different biomes is quite a feat!
The 38 biome list is the same as the left hand column of this table: http://minecraft.gamepedia.com/Biome#Biome_IDs, except for FrozenOcean and Extreme Hills Edge which don't generate. I was thinking it should be the complete list with all variations (because that's what I did), but then that would be basically impossible to achieve without external mappers.
Also, my world is about 1.4GB now and still doesn't have JungleEdge M, can anyone confirm if that generates or not?
JungleEdge does generate, albeit very rarely. It's always near Jungle M, but appears only rarely even there.
So this is fixed now?
It is fixed. You have to visit all the non-variant biomes though. I don't think the variants are registering as the proper biomes.
What is the official list of biomes that you need to visit?
The official list, ripped from the page on the wiki includes the following biomes (can be done in no particular order):
Beach, Birch Forest, Birch Forest Hills, Cold Beach, Cold Taiga, Cold Taiga Hills, Deep Ocean, Desert, Desert Hills, Extreme Hills, Extreme Hills+, Forest, ForestHills, FrozenRiver, Ice Mountains, Ice Plains, Jungle, Jungle Edge, Jungle Hills, Mega Taiga, Mega Taiga Hills, Mesa, Mesa Plateau, Mesa Plateau F, Mushroom Island, MushroomIslandShore, Ocean, Plains, River, Roofed Forest, Savanna, Savanna Plateau, Stone Beach, Swampland, Taiga, and Taiga Hills
possible missed biomes: Mesa (Bryce), Jungle Edge, Jungle Edge M, Cold Beach, Desert M, Birch Forest Hills M, Mesa Plateau F M, Savanna Plateau M, Mega Spruce Taiga, Mega Taiga M...