baked0420: getPlane() does as it says… it retrieves the current plane the player is on; there are 4… you may be more familiar with the term floor or level, analogous building terminology. pretty much they are 0 through 3. 0 is ground-level, 1 being up one set of stairs, 2 being up two set of stairs, and 3, up three set of stairs. now, you are wondering… what about dungeons? previously dungeons were in unused chunks of map, but during a recent update, (and by recent i mean since the dawn of 2009), they introduced the concept of underground map files in the cache (um<x>_<y> and ul<x>_<y>). to prove it, open up a decompiled client and grep for "um" +:
Class138_Sub26_Sub13.anIntArray5677[i1] = i2;
Class195.anIntArray2964[i1] = Class138_Sub6.aClass87_4089.method744("m" + j1 + "_" + k1, 0);
Class195.anIntArray2970[i1] = Class138_Sub6.aClass87_4089.method744("l" + j1 + "_" + k1, 0);
Class32.anIntArray492[i1] = Class138_Sub6.aClass87_4089.method744("n" + j1 + "_" + k1, 0);
Class49_Sub1.anIntArray3587[i1] = Class138_Sub6.aClass87_4089.method744("um" + j1 + "_" + k1, 0);
Class168.anIntArray2452[i1] = Class138_Sub6.aClass87_4089.method744("ul" + j1 + "_" + k1, 0);
from a deob from the past, however still conceptially valid. j1 and k1 are map chunk x,y coordinates. i2 is the map chunk hash, and i1 is the loaded map index set pointer. m is for map chunk terrain data, l is for object data, n is for default npc data (used for the login-screen background scene), and um and ul are the same as their counterparts m and l, respectively, however underground. Class138_Sub6.aClass87 is the cache file-system abstraction layer, which adds support for checksum validation and file names, used to give more power than the primitive, raw index-based systems of the old engine clients, instance used for cache 5, or the map cache. method744() hashes the file name using the following algorithm and then uses the hash to look-up the file index in a small, optimized hash table.
s = s.toLowerCase();
int r = 0;
for (int i = 0; i < s.length(); i++)
r = s.charAt(i) + ((r << 5) - r);
where s is the input string and r is the resultant hash. if you'd like any knowledge of the hash table, it's a statically sized, maximum 2:3 load factor ratio, open-addressed hash table of int keys and values.