Remove the "map 1" option (see the help file); you can even remove all the arguments so it will search a random seed* within 1024 blocks of 0,0, or add "radius #" to search a larger radius (up to 8192 blocks; maps are limited to 2048, 1024 if the scale is 2), and more (the included batch file is more to show how to use it):
// Searches a random seed within 1024 blocks of 0,0:
java -jar CaveFinder.jar
// Searches a random seed within 4096 blocks of 0,0:
java -jar CaveFinder.jar radius 4096
// Searches a random seed within 1024 blocks of 0,0 and outputs a map with a scale of 2:1:
java -jar CaveFinder.jar map 2
// Searches a random seed within 1024 blocks of 0,0 and does not list coordinates (useful for finding a seed without knowing exactly where things are):
java -jar CaveFinder.jar nocoords
// Searches a random seed within 1024 blocks of 0,0 with the exclusion of larger caves from near the origin disabled:
java -jar CaveFinder.jar noex
Note that you can also use the runtime that comes with the game by replacing "java" with the path to it, so you don't need to install it on your system just to use this.
*I just realized that this was not working properly because I replaced Java's Random with a much faster equivalent which did not randomize the seed when created as it is usually unnecessary; it should work now though.
This is not an official release yet but I've decided to release a preview of TMCWv4.5, which combines TMCWv4 with many of the bugfixes and optimizations added to TMCWv5 as well as what I call "World1", a set of mainly fixes and optimizations that I use to play my first world on (most of them came from this mod, which I'd been using for years to fix things like rendering bugs, formerly by using a personal modified copy of Optifine before I separated my code so it could be made public. I do include some features based on Optifine, including a zoom function and graphics customization).
Despite being by far the largest update I've ever made, double the size of TMCWv4, this is not a content update but it does add a few features and makes some changes, for example, the attack cooldown was replaced with the one in TMCWv5 (you now get penalized for spam-clicking empty air and the penalty applies to all mobs, not just the one you hit; this includes if you attack a mob while it is damage-immune). Also, dark caves are totally pitch black - you better make sure you always have a source of light on hand (the light level at night also varies with moon phase so it is darker during a new moon, but not totally dark, around 1 light level lower. You can also further adjust brightness with the "gamma offset" setting on the second page of video settings but it doesn't affect complete darkness). You can also generate caves in Superflat worlds by adding "cave" to the preset and change the number of dungeons with (count=number). Otherwise, this is fully compatible with worlds created in TMCWv4 (the only changes to world generation, aside from some possible changes to decorations, is a new biome, Rocky Mountains River, to improve river interaction with them, and a bugfix which fixes one of the branches of large caves not being as wide as it should be, which has no impact on their overall structure).
Here are some screenshots (some were taken with my "World1" mod but both are the same):
A Mega Mixed Forest biome at maximum settings - 375 FPS, 0.66 ms client tick, 2.89 ms server tick, 256 MB memory used, the last probably quite insane compared to newer versions where the default allocation is 2 GB (you could probably even allocate just 256 MB at lower settings without any issues):
An explanation of the settings:
Render distance is now in chunks, ranging from 2-16 and defaulting to 8 (instead of 2,4,8,16) and render distances above 10 work properly (even Optifine did not increase the server view distance past 10 or chunk render distance past 12 until you exceeded 16 chunks). The server view distance ranges from 8-16, avoiding issues like MC-2536 (mob (de)spawning is within 6 chunks while random block updates are within 7 chunks).
Framerate limit is now adjustable from 30-200 FPS in intervals of 5 FPS, with the lowest setting enabling vsync and highest setting unlimited.
Added a slider to control the time allotted to chunk updates, from 0-100% of the frame time (worst-case FPS reduction is 50%; if you can get 200 FPS but limit it to 100 FPS then up to 10 ms will be allotted, giving a worst-case frame time of 15 ms or 67 FPS; the default setting of 25% will not cause a reduction if uncapped FPS is at least 33% higher than the limit unless a single update takes longer). This is superior to Optifine's "chunk updates per frame" since the number of chunk updates is based on how long they take and how much time they have (at least one will be done even if the time is 0); with Vsync enabled a minimum of 60 or the actual framerate is assumed so it scales with higher framerates.
Smooth lighting now only has two settings, on or off, as performance improvements negate any need for a "min/max" setting, which only affected certain blocks like stairs.
Added an ambient occlusion setting which controls the shadows that appear in corners (distinct from smooth lighting, the setting for which toggles both effects).
Brightness now defaults to Bright instead of Moody and an additional "gamma offset" slider was added which adjusts how light levels are rescaled for a smoother transition to total darkness (this was a debug setting I used when tweaking lighting but I decided to keep the slider in; the effects are similar but different from "brightness". Note that total darkness is unaffected by either setting).
Clouds can now be set to Off, Default, Fast, or Fancy, where Default is determined by the main Fast/Fancy setting, and cloud height can be adjusted from 96 to 256 blocks (defaults to 128).
Items, leaves, rain/snow, and translucent blocks (e.g. water) can individually be set to Default, Fast, or Fancy.
Grass can be set to Default, Fast, Fancy, or Full Side, the last of which is similar to Optifine's Better Grass option (the side textures of grass, mycelium, and podzol are replaced with the top texture; if there is snow on top the snow texture is used instead of the normal snowy side texture).
Added individual on/off settings for potion particles, water particles, lava mix particles (e.g. when water touches lava), and entity shadows.
Added a setting for biome blend radius, defaulting to 5x5 and adjustable from 0 (off) to 15x15; note that this setting only affects the time chunk updates take, not static framerate, same for many other settings like smooth lighting.
Changed the range of FOV from 70-110 to 30-110 to accommodate users who need a lower FOV.
Fog distance can be varied from 0 to 0.9, and off, defaulting to 0.8, similar to vanilla 1.7+, which greatly improves the appearance of the game (vanilla 1.6.4 uses 0.25).
Replaced "Advanced OpenGL" with "Culling", which has 3 options, Off, Advanced OpenGL, Height Based, with the last being my own culling method which does not render the underground unless you are below sea level or the lowest solid block is lower, or above sea level if you are underground and the sky light level is 0 (this can cause rendering artifacts under overhangs, deep buried ravines that extend above sea level, but generally not common, or in Superflat worlds with a ceiling, it is also disabled in the Nether).
Added an "AO Fix Mode" setting to change how faces are rendered to fix MC-138211 (example of correct AO: https://i.imgur.com/MLUVCUy.png); this is necessary because different GPU drivers split "quads" into triangles differently (mode 1, the default, appears to be correct for NVIDIA. You can also use the "wrong" setting to make shadows more apparent around corners (appearing as a square instead of octagon around a block).
Added a "Fast Render" option which uses a faster method of sending chunks to the GPU; however, it will cause floating point rounding errors to noticeably affect rendering far from the origin (well past the point most players will explore); for this reason it is turned off by default.
Removed 3D anaglyph as it was rarely used and not even implemented properly, enabling code to be simplified. Likewise, the server textures option was removed since support was not implemented until 1.7 (MC-18569); removing both of these frees up space for new settings.
Changes to video settings that require a chunk reload only take effect after exiting video settings to prevent unnecessary chunk reloads; pressing Esc instead of the "Done" button also properly saves changes to settings (there are two screens due to the number of settings, Esc will go back to the game from either). There is also an option to reset all video settings to default values.
Settings are now saved to "optionstmcw.txt" and are validated when loading to ensure that none are ever out of bounds (loading invalid settings is a leading cause of crashes. Note that you should still use a separate game directory to ensure that you do not load a world in the wrong version).
Chunks are now rendered in a circle instead of square, reducing the amount of geometry rendered by about 20% with no visual effect unless fog is turned off.
Added a zoom function similar to Optifine's. Zoom and "inventory stats" also have keybindings so they can be changed (defaults to "R" for inventory stats and LCTRL for zoom).
(there are now proper keybindings for the "inventory stats", previously hardcoded to R, and zoom keys)
(16 chunk render distance with fog turned off, which normally hides the fact that chunks render in a square in vanilla, this has no effect on visibility with fog since it is circular/fixed distance)
(https://bugs.mojang.com/browse/MC-138211; the shadows are supposed to be symmetrical. I have a setting which switches between two modes since different GPUs render "quads" differently, not known if any render in such a way that my fix doesn't work)
(smooth lighting on water is currently only available in Bedrock Edition, I also added it to some other blocks like rails)
(the dark areas are totally black, or lacking any detail no matter what the brightness/monitor settings are)
(various particles which did not render due to the server not sending them to the client have been fixed; I changed the particles when water flows over lava to white steam as that is more realistic, with black smoke when lava flows into a block and destroys it)
(particles, breaking animations, and selection boxes properly render behind and in front of water. Note that I did not fix translucent blocks themselves; e.g water can't be seen behind a Nether portal and I'm not even sure how that could be fixed without re-rendering everything all the time, and whatever was done in 1.7+ causes a lot of its own issues which IMO are much more noticeable)
(transparent full-cube blocks like glass cause water to use a special texture against them so you can see through them more easily. The block model is also rendered full-size unless it needs to be rendered against a block in order to fix gaps between the corners (this is done to avoid z-fighting but vanilla always applies a 0.001 reduction. This is not applied to lava in any case since it has an opaque texture so you can't see z-fighting)
(clouds were also fixed, in addition to rendering so much faster that Fancy clouds are faster than vanilla Fast clouds)
(two new "blocks" (actually, variants of other blocks, as most of the blocks in TMCW are) were added; compressed cobblestone and compressed mossy cobblestone, which can be uncrafted into 4 of their respective blocks; as with rail blocks and cobweb blocks I mainly added these so I can compact them while caving to make more room)
Note that there are some major changes to fundamental game mechanics which many players will find totally game-breaking if the response to Mojang's past attempts to make similar changes are any indication - spawn chunks no longer exist at all, except during initial world creation (just to pregenerate the chunks before the world loads in as otherwise you'd spawn in a void until chunks are generated. This area also varies with render distance so worlds will generate faster at lower distances), iron golems only drop iron if directly (melee attacks only) killed by a player and other "mineral" mob drops (gold, redstone, coal, etc) require a player kill and Looting only works if on a melee weapon (fixing MC-3304, so this is not intended behavior in vanilla). Mobs only spawn in 25% of chunks per spawn cycle so they spawn 4 times slower, but still more than fast enough for normal spawning, and mobs will never spawn above the Nether ceiling, which also deals void damage to players in Survival (not that you can even break bedrock as I added a check that prevents that at the lowest level of chunk data access, and that aside, it doesn't look like 1.6.4 had much in the way of bedrock-breaking).
However, some of the changes can be helpful, such as TNT explosions having a 100% drop rate; amethyst pickaxes also mine amethyst ore twice as fast and obsidian 20% faster than diamond (applied after enchantments), and tools with Mending will slow down just before they break (probably not that useful considering most good items, including amethyst items, will be repaired with units). Amethyst armor also has armor toughness against axes (the only form of armor penetration aside from sources that bypass armor entirely, this works the same way as the current vanilla mechanic so 2 toughness per piece reduces penetration by half). Mob spawning is also based on the height of blocks, not chunks (in particular, once a chunk section was loaded in vanilla it would never be removed server-side; I garbage-collect empty sections (no blocks or light, fixing vanilla lighting bugs) at the top of a column to conserve memory), and leaves are ignored unless there is no air or leaves below them (e.g. jungle groundcover). It is also easy to check the mob cap as I show the number of mobs loaded server-side, as opposed to the client-side "E:" number which only shows entities sent to the client, and only within 80 blocks for most entities (as seen in the first screenshot above, the numbers are M = Monster, P = Passive, O = Ocelot (these have their own mob cap, set to 25, due to their special spawn rules), A = Ambient, W = Water).
Most notably, some major bugs have been fixed, such as MC-2025 and the related MC-9568, possibly the most notorious bug of all time, as well as ugly lighting errors, which were particularly common in TMCW due to the more rugged terrain and regular trees (these are not immediately fixed, I use the same code that vanilla uses to gradually fix lighting, but it runs much faster (pressing F4 will restart the checks and run them faster) and saves whether it has finished; because of this, existing worlds will automatically be relit when loaded for the first time). I also patched the chunk loading/saving code to fix a potential source of chunk corruption (a serious issue in the latest vanilla releases, though that is probably due to something else as I've never seen this particular issue in 1.6.4, vanilla or otherwise) and fixed scheduled block updates (blocks will never be ticked in lazy chunks, fixing the biggest source of lag in the Nether).
There are also some changes to the included utilities; the AMIDST files were removed and replaced with my own biome mapping tool which can properly map everything (there is no legend showing which colors correspond to which biomes as I didn't make one yet but many use the same colors as AMIDST or similar to their blocks, such as Rocky Mountains, Mesa, Extreme Hills, Desert, Plains, Swampland; Winter Forest and Taiga are light green and blue respectively, Savanna is similar in color to the grass in-game, and so on):
I also removed the "MLG" files as there isn't much benefit to them anymore (they were used with Minecraft Land Generator to create a Superflat-like world with caves and structures, which can now be done in-game with Superflat, and otherwise the CaveFinder utility can generate maps of the underground without having to run the game or use 3rd party tools) and I don't even know if you can run this on a server at all (a lot of my fixes won't work in multiplayer either as they rely on direct communication between threads, in part due to being simpler and not having to modify more vanilla classes, besides not having the ability to fully test multiplayer).
Having just tried a bit of this in a test world, I really like it. I tend to categorize Minecraft versions by era, counting the SMP/SSP code merge up until the Update that Changed the World (1.3.x-1.6.x) as the Adventure Update Expansion era. From what I'm seeing, this mod fixes a bunch of the errors Mojang made in that era, and expands things in the direction (IMO) they should have gone, instead of what they've done in the modern themed content update era.
It makes me really excited to try what you're making for v5, and I think this is going to become my other primary Minecraft version (the other being a custom-modded Alpha 1.2.6+ version I've put together).
Note that there are some major changes to fundamental game mechanics which many players will find totally game-breaking if the response to Mojang's past attempts to make similar changes are any indication - [...] iron golems only drop iron if directly (melee attacks only) killed by a player
The funny thing is, first generation (pre-hopper) iron farms like work almost perfectly with this change. There are some adjustments needed to the lava blades due to golems being able to swim now (they'll usually fight the current and die in lava, so you have to massively shorten the lava blade and put a roof over it to keep them down in the water), and you need to remove the crusher and use your sword instead, but you can still have a (much smaller than in modern versions) almost-passive iron source inside your base. Not enough to build with iron, but maybe enough to keep your iron supplies topped up while you're farming wood and crops, until you have time to go mining again.
(Apologies if I seem spammy) Is there anywhere to see a complete changelog up to the current v4.5? I'm trying to get a handle on what's changed from vanilla 1.6.4, and from just reading the thread it's hard to filter out what's not yet implemented from v5 discussion. The v4.5 changelog only seems to include the differences from v4, but I didn't see a changelog in the v1-4 zip files.
The first post contains spoilers which describe the changes and additions in previous versions, some of which may not be entirely accurate for the latest version but they are generally mostly relevant; for example, I looked through the entry for version 1 and the only things that have since changed are the frequencies of biomes, as more have since been added, and underground generation, again due to more variants of caves, and changes to strongholds so an unlimited number generate anywhere in the world; and changing the protection of armor from 3.5% per armor point for players and mobs to 4% for mobs (back to the vanilla value) and 3.3% for players; and normal ender chests, which were made double-chest size, changed back to vanilla, with a "diamond ender chest" added to get the double chest functionality. Likewise, not much that was added in versions 2 and 3 has since changed.
I've made an update which has significant implications for resource packs, as well as future development - biome colors are now palette-based, meaning that instead of using the vanilla colormaps and internal temperature/rainfall values to select a color which is not obvious just from looking at the colormap colors are now directly read from pixels whose location is based on the biome ID, meaning that biomes with the same temperature/rainfall can now have different colors (all biome colors are currently the same as before). Not only that, you can also change the water color using the colormap, and water colors vary more between biomes (currently, mostly just "normal" (most biomes), "cold" (snowy), and "tropical" (jungle, tropical swamp, oasis), in addition to swamps, which were made darker for more contrast), as well as the colors of spruce and birch leaves (currently not biome-based), lilypads, cauldron water, and held items (e.g. grass, vines, etc. Note that the oak/jungle leaf color only applies to held items, with actual blocks using the foliage colormap):
(the actual image is 64x16, with 16x16 areas for foliage, grass, water, and another for miscellaneous things)
Here is a comparison of water colors in a jungle (tropical) river (normal) and ice plains (cold), the normal water color is similar to the default water color in 1.13, with custom water textures (not entirely grayscale) added:
Water colors also affect water particles (drip, splash, bubble) and underwater fog, which was also tweaked slightly (density increased from 0.02 to 0.03, compared to 0.1 in vanilla, except in swamps, which is 0.09 (3x factor), reflecting the "dirty" water color. This also affects the effectiveness of Respiration, which reduces fog density to 0.01 in most biomes and 0.03 in swamps):
(note the color of the splash particles from left to right)
(normal)
(swamp; biome blend was turned off, which also affects the blending of fog color and density, with an additional smoothing applied to density changes)
Also, I added the ability for blocks to render on both render passes (fully opaque or transparent and translucent), which currently only affects cauldrons but this will enable me to do things like rendering water around water plants in TMCWv5 so they don't need to be surrounded by water or solid blocks (as otherwise they would cause gaps in the water; I could just render them entirely on the translucent pass but then they would be invisible from above water as I haven't fixed translucent block rendering, and vanilla 1.7's "fix" still causes artifacts which are IMO more noticeable):
(I spawned a silverfish inside the cauldron, which would normally not be visible due to the water being opaque)
There are also some bug fixes, mostly caused by unrelated changes to rendering (for example, packed ice was rendering sides adjacent to other packed ice blocks, making them extremely expensive to render in large amounts), or replaced code with that from "World1" (an unrelated mod from which I ported many of the changes in TMCWv4.5), such as snow accumulating on packed ice and quartz path (as a bonus, I added a couple features from TCMWv5; snow can now accumulate on upper half slabs and upside-down stairs).
(the change to the colormaps was spurred by a previous change breaking Roofed Forests, which turned blue-green due to an otherwise unnoticeable shift in the base color causing the color mixing to break, which I only discovered after seeing one while playing as everything else was correct; I temporarily patched this a while ago by hardcoding in the proper color)
Also, the CaveFinder utility will now show large caves and ravines with a volume of at least 25000, down from 50000 before (this is still quite large, especially for caves, which never reach this size in vanilla while only the largest ravines do), as well as large cave clusters (2-4 large caves in the same chunk) with a volume of at least 25000 for 2 caves to 35000 for 4 caves and no single cave exceeding 25000 (otherwise, only cave(s) at least this large will be listed under "largest caves"); these changes roughly double the number of results:
These are the results for the seed "10", using a 1024 block radius centered at 0,0 and NoExclusion enabled (otherwise any area more than 512 blocks away from 0,0 will give similar results)
This is an example of a cave which would not have been found before, with a volume of about 33,000:
There is also now a "Documentation" folder in the download, which currently has a changelog (new additions are listed separately at the end), the colormap guide shown above, a list of biomes by ID, and a list of repair costs for various items (I made it several years ago for the items I use but it is still valid); I'll be adding documentation for new/changed blocks, items, and recipes later.
I felt bad for birch not having a large tree variant, so here's an unsolicited suggestion (feel free to use, adapt, ignore, or do whatever you like with it): what about a coppiced birch? Birch trees with their trunks cut or broken can re-grow multiple straight trunks from the stump:
Using the Poplar variant, here's a mock-up using 3x3 birch trees, each 1-3 blocks above the "stump" and with the outer trunks offset by 1 from the base:
java.lang.NullPointerException
at WorldGenOre.genRubyOre(WorldGenOre.java:345)
at BiomeGenRockyMountains.a(BiomeGenRockyMountains.java:48)
at ChunkProviderTMCW.a(ChunkProviderTMCW.java:1287)
at ChunkProviderServerFix.a(ChunkProviderServerFix.java:66)
at adr.a(Chunk.java:1007)
at jr.c(SourceFile:105)
at jq.<init>(SourceFile:29)
at jp.a(PlayerManager.java:73)
at jp.d(PlayerManager.java:192)
at hn.d(SourceFile:197)
at ka.a(NetServerHandler.java:276)
at eu.a(SourceFile:136)
at cn.b(SourceFile:64)
at ka.e(NetServerHandler.java:46)
at kd.b(SourceFile:37)
at blc.b(SourceFile:84)
at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.s(MinecraftServer.java:562)
at bkz.s(SourceFile:124)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at hi.run(SourceFile:583)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at WorldGenOre.genRubyOre(WorldGenOre.java:345)
at BiomeGenRockyMountains.a(BiomeGenRockyMountains.java:48)
at ChunkProviderTMCW.a(ChunkProviderTMCW.java:1287)
at ChunkProviderServerFix.a(ChunkProviderServerFix.java:66)
at adr.a(Chunk.java:1007)
at jr.c(SourceFile:105)
at jq.<init>(SourceFile:29)
at jp.a(PlayerManager.java:73)
at jp.d(PlayerManager.java:192)
at hn.d(SourceFile:197)
at ka.a(NetServerHandler.java:276)
at eu.a(SourceFile:136)
at cn.b(SourceFile:64)
at ka.e(NetServerHandler.java:46)
-- Ticking connection --
Details:
Connection: [email protected]
Stacktrace:
at kd.b(SourceFile:37)
at blc.b(SourceFile:84)
at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.s(MinecraftServer.java:562)
at bkz.s(SourceFile:124)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at hi.run(SourceFile:583)
-- System Details --
Details:
Minecraft Version: 1.6.4
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 163326000 bytes (155 MB) / 402653184 bytes (384 MB) up to 2147483648 bytes (2048 MB)
JVM Flags: 8 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
AABB Pool Size: 3188 (178528 bytes; 0 MB) allocated, 2292 (128352 bytes; 0 MB) used
Suspicious classes: ParticleRenderer, GuiIngameTMCW, GuiInventoryTMCW, ...]
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
Profiler Position: N/A (disabled)
Vec3 Pool Size: 565 (31640 bytes; 0 MB) allocated, 426 (23856 bytes; 0 MB) used
Player Count: 1 / 8; [jv['FruitVegetables'/1, l='The New Start 2', x=10095.89, y=117.37, z=10561.04]]
Type: Integrated Server (map_client.txt)
Is Modded: Very likely; Jar signature invalidated
java.lang.NullPointerException
at WorldGenOre.genRubyOre(WorldGenOre.java:345)
at BiomeGenRockyMountains.a(BiomeGenRockyMountains.java:48)
at ChunkProviderTMCW.a(ChunkProviderTMCW.java:1287)
at ChunkProviderServerFix.a(ChunkProviderServerFix.java:66)
at adr.a(Chunk.java:1007)
at jr.c(SourceFile:105)
at jq.<init>(SourceFile:29)
at jp.a(PlayerManager.java:73)
at jp.d(PlayerManager.java:192)
at hn.d(SourceFile:197)
at ka.a(NetServerHandler.java:276)
at eu.a(SourceFile:136)
at cn.b(SourceFile:64)
at ka.e(NetServerHandler.java:46)
at kd.b(SourceFile:37)
at blc.b(SourceFile:84)
at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.s(MinecraftServer.java:562)
at bkz.s(SourceFile:124)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at hi.run(SourceFile:583)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at WorldGenOre.genRubyOre(WorldGenOre.java:345)
at BiomeGenRockyMountains.a(BiomeGenRockyMountains.java:48)
at ChunkProviderTMCW.a(ChunkProviderTMCW.java:1287)
at ChunkProviderServerFix.a(ChunkProviderServerFix.java:66)
at adr.a(Chunk.java:1007)
at jr.c(SourceFile:105)
at jq.<init>(SourceFile:29)
at jp.a(PlayerManager.java:73)
at jp.d(PlayerManager.java:192)
at hn.d(SourceFile:197)
at ka.a(NetServerHandler.java:276)
at eu.a(SourceFile:136)
at cn.b(SourceFile:64)
at ka.e(NetServerHandler.java:46)
-- Ticking connection --
Details:
Connection: [email protected]
Stacktrace:
at kd.b(SourceFile:37)
at blc.b(SourceFile:84)
at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.s(MinecraftServer.java:562)
at bkz.s(SourceFile:124)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at hi.run(SourceFile:583)
-- System Details --
Details:
Minecraft Version: 1.6.4
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 163326000 bytes (155 MB) / 402653184 bytes (384 MB) up to 2147483648 bytes (2048 MB)
JVM Flags: 8 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
AABB Pool Size: 3188 (178528 bytes; 0 MB) allocated, 2292 (128352 bytes; 0 MB) used
Suspicious classes: ParticleRenderer, GuiIngameTMCW, GuiInventoryTMCW, ...]
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
Profiler Position: N/A (disabled)
Vec3 Pool Size: 565 (31640 bytes; 0 MB) allocated, 426 (23856 bytes; 0 MB) used
Player Count: 1 / 8; [jv['FruitVegetables'/1, l='The New Start 2', x=10095.89, y=117.37, z=10561.04]]
Type: Integrated Server (map_client.txt)
Is Modded: Very likely; Jar signature invalidated
I can't reproduce the error, either in a normal world or a Superflat world using the Overworld preset with the biome changed to Rocky Mountains and caves added, which should be the same as a normal world, and the line number mentioned (WorldGenOre:345) doesn't correspond to anything that would cause a NullPointerException, either in the original source or decompiled code (in case the line numbers are different but they were the same):
I don't see any indication of runaway world generation either, which is the only cause I can think of (a chunk causes another chunk to be loaded while being generated, which will corrupt the internal state of WorldGenOre, in particular, the reference to World can be made null since it is set before generating any ores and cleared afterwards. However, ore generation should not cause this, and the stack trace would otherwise make it obvious).
ETA: I've made an update that may fix the issue (although as mentioned I can't reproduce it, I changed the code so "world" is not set to null after a chunk is generated, only when you quit the world). A more proper fix, as I did in TMCWv5, is to refactor the ore generator class to remove the fields that store the world and chunk coordinates (a legacy from vanilla's BiomeDecorator class which WorldGenOre was originally part of).
I just wanted to mention that I frequently make updates; for example, I just added a "better snow" option which makes grass blocks, as well as mycelium and podzol, render with a snowy texture when plants and various other partial blocks on on top and they are next to snow (this is similar to Optifine's feature, except Optifine renders a snow block on top of the grass while I made grass blocks use the snow texture on top, as well as a snowy side texture; this means that there will be a depression around the blocks but it isn't that noticeable from a distance, and short blocks won't be buried):
There are also additional bugfixes, including fixing MC-1713 for hoes (you couldn't repair them in the anvil with units, only with another hoe; notably, MC-1713 was actually resolved as "works as intended", but hoes are able to be repaired with units since some later vanilla version). I never noticed this until recently since I'd never tried repairing a hoe in the anvil until then (I use a diamond hoe with Fortune III, Unbreaking III, Mending to harvest crops, which is too expensive (43 levels) to be repaired with a sacrifice unless it is down by 300-400 durability, which is much worse for amethyst as only a highly damaged sacrifice would work). Other items, like shears, were not changed since they wouldn't benefit much from item repairs (you'd spend not only twice as many resources but more levels since a sacrifice only costs 2 levels for the actual repair, while units cost (1 + enchantments) per unit and 4 are required to make a full repair).
I've released a significant update which fixes more bugs and adds more variants of rail blocks, fences, walls, and smooth "double slabs" as their own blocks, as well as giving rubies, formerly with no use other than crafting blocks, the ability to reduce the prior work penalty of items which are otherwise too expensive to put Mending on so you can indefinitely repair them (you'll need to find a Rocky Mountains biome though), and many other changes:
1. Added variants of rail blocks for all types of rails (normal, activator, detector, powered); texture was also changed to include separate end and side textures (side textures are all the same while end texture matches the top and bottom textures) and block model is sized to the width of rails so they look like a stack of rails (before the same texture was used on all sides and they were full cubes). They can also be placed in two orientations depending on the direction you are facing, north-south or east-west.
All new blocks added (fun fact: there are actually no new blocks added; they are all variants of existing blocks, and otherwise only rail blocks are an actual new block, the same is true of the majority of blocks added by TMCW so there are still plenty of IDs left):
2. Burning zombies can now set the player on fire while they are holding an item (this is/was intended not to happen in vanilla, MC-14396, but it adds difficulty).
3. Rubies reduce the prior work penalty by up to 6 levels per ruby, for a cost of up to 6 levels plus the prior work penalty and number of enchantments, times 2 for diamond and 3 for amethyst (e.g. one ruby on an unenchanted item with a prior work penalty of 8 will cost 14 levels, or 6 + 8; two rubies will cost 16 levels, or 6 + 2 + 8. If the item also has 3 enchantments the costs will be 17 and 22 for iron or lower, 20 and 28 for diamond, and 23 and 34 for amethyst). This enables indefinitely repairing items which would be too expensive with Mending (e.g. an amethyst pickaxe with Efficiency V, Fortune III, Unbreaking III, Mending would cost 56 levels; without Mending the cost is 43 levels and you get 4 repairs before it becomes too expensive; with rubies you can use one every 3 repairs to reset the penalty to 0 for a cost of 43, 45, 47 per repair, then 15 for a ruby). Note that the cost of using rubies is capped to 39 levels, even for amethyst items (normally 49) and they do not work on enchanted books:
This pickaxe has 3 prior workings for a prior work penalty of 6 levels; it costs 7 levels to repair:
The cost for a ruby is 12 levels, or 6 plus the prior work penalty:
After using a ruby; it only costs 1 level since the penalty is now 0:
Here is an example with enchanted items (all with 3 enchantments and 6 prior work penalty from adding them with books); each enchantment increases the cost by 1 level, 2 for diamond and 3 for amethyst:
Rubies can also be used on a stack of items for the same cost as a single item:
4. Reduced cost of Thorns from 8 to 4 per level and reduced durability penalty to 1 extra durability lost and only when reflecting damage, making it more viable to use (previously Thorns III would increase the base cost by 24 levels and take an average of 2.9 times the durability away; now it costs 12 levels and 1.45 times durability, 0.725 times with Unbreaking III compared to no Thorns/Unbreaking). Multiple items with Thorns will also lose durability at random instead of just the bottommost item. Also reduced the cost of Blast Protection from 4 to 2 per level (from 16 to 8 for Blast Protection IV), giving it the same cost as the other specialized protection enchantments.
5. Renaming an item now only costs 1 level regardless of the item or the stack size (plus the prior work penalty and enchantment costs, if applicable; because of this, it is best to rename an item you want to enchant before doing so, or while adding new enchantments, combining, or repairing):
6. There is a chance (3.226% of slimes or 1/10 as common as each smaller size, which have equal chances) of a size 8 "mega slime" spawning in swamps, which has double the aggro range (32 blocks), 64 health, deals 8 damage (on Normal difficulty), can jump over obstacles 4 blocks high, fall up to 8 blocks with no fall damage, and drops 8 XP and splits into 2-4 large slimes when killed (up to 85 slimes and 120 XP total):
7. If a medium or larger slime is killed by lava it will split into magma cubes instead of slimes:
8. Oak/spruce bushes (like the ones in Bushlands or Jungle) now only grow if there are only 2 blocks of clearance above a sapling (a non-air/leaves/wood block 3 blocks above sapling; previously, spruce saplings only grew bushes in Bushlands, making spruce less viable in that biome):
9. All-bark logs are now craftable; 4 normal logs give you 4 bark logs (instead of 3 like 1.13+ does so there is no loss) and Silk Touch is needed to harvest them (they naturally generate in trees, even unbranched trees (topmost block so the inside of the log is not visible on Fancy graphics), so it would be a bit of pain if they dropped themselves; Silk Touch is basically just a convenience since you can easily recraft them in the inventory). They can also be directly crafted into planks.
10. Smooth stone, sandstone, and quartz double slabs (named as Smooth Stone, Full Smooth Sandstone, and Smooth Quartz Block) can be crafted using 2x2 of their respective half slabs, giving you two of their full blocks. They also drop themselves when mined, thus act like normal blocks and not double slabs. Smooth quartz blocks also use the bottom texture on all sides (instead of the top texture, which makes it look too much like normal quartz blocks).
11. Petrified Oak Wood Slabs (the original wood slabs) can be crafted with a stone slab sandwiched between 2 oak wood slabs on top of each other, giving you 2 petrified slabs, which look like wood but are mined with a pickaxe and do not burn.
12. Added spruce, birch, and jungle wood fences, which have the same crafting recipe as 1.8+ except you get 4 fences instead of 3, or slightly less than one fence per plank block. Villages also use different types of wood for fences; Plains = oak, Savanna = jungle, Meadow = spruce, Ice Plains and Desert = birch.
13. Added 12 new wall variants for stone, granite, diorite, andesite, sandstone, brick, stone brick, mossy stone brick, end stone, nether quartz, netherrack, and hardened clay.
14. Snow layers drop up to two snowballs per layer instead of one when harvested with Fortune (similarly to glowstone higher levels give a higher chance of two; Fortune I-III = 1.25, 1.5, 1.75). Also, multi-layer blocks melt by one layer at a time instead of all at once:
15. Silk Touch can now pick up an intact (uneaten) cake; only right-clicking now consumes cake so as to not interfere with mining action, also consitent with eating other foods.
16. Fixed MC-190, most noticeable when using custom textures on blocks like stairs (hard to see with default textures), and MC-41825 (some entities render black with no light and Night Vision).
17. Shears and shovels can now be fully repaired with 2 units instead of 4, making repairs twice as efficient in terms of both materials and XP (it is still cheaper XP-wise to repair shears with new shears instead of units but it can be more convenient, e.g. running out of durability halfway through clearing a cave spider spawner and not having enough levels, which can be avoided by repairing with a unit when durability falls below 50%. For shovels the benefit can be much greater, especially for amethyst, e.g. Efficiency V, Unbreaking III, Mending costs 43 levels for a one unit repair, which now restores twice the durability):
Both the shovel and pickaxe have the same enchantments but the shovel gets twice as much durability per unit for the same level cost:
18. Leaves have a 5% chance of dropping a stick, increased to 10% with Fortune III; jungle leaves have 2/3 the drop rate.
19. Fixed brightness of XP orbs so they do not appear dimmer from certain angles (MC-108003, unfixed as of 1.16.2).
20. Bows now cost twice as much to repair, up to 8 instead of 4 levels for an intact sacrifice; this is to bring up the cost to match vanilla in the case of a bow with Power V, Flame, Infinity, Unbreaking III, and Mending (39 levels in vanilla 1.6.4; previously, such a bow cost 35 levels in TMCW):
(the cost with Flame is 4 levels higher; you could also add Punch II or Flame and Punch I for 8 levels and be able to repair it with damaged bows for as low as 36 levels since the repair cost can be as low as 1 if the sacrifice is damaged. This also means that even if your bow now costs more than 39 levels to repair with an intact sacrifice you can still repair it)
21. Slimes will now randomly despawn when more than 32 blocks away from a player, but after 5 minutes instead of 30 seconds, preserving some of their original tendency to accumulate.
22. Fixed incorrect rendering of hinges on doors (MC-106697, "works as intended"; they would appear on the side with the knob and sometimes both sides).
23. Slimes now have their own mob cap, set to 25, similar to ocelots (slime spawning is controlled by the hostile mob cap but it does not include slimes). Slimes also now spawn twice as often (removed 50% failure rate for surface and reduced failure rate from 90% to 80% for slime chunks) and is also no longer reduced by an additional 75% in Superflat worlds if the ground level is at least 40 (this affects both slime chunks and surface spawning in swamps):
The number of slimes is displayed next to "mob counts" on the left (M = monster, S = slime, P = passive, O = ocelot, A = ambient, W = water); there are a total of 94 hostile mobs including slimes present:
A bit of an odd request, but perhaps you can help:
I'm trying to fix MC-50640 (the oak worldgen/sapling differences) in Alpha, but haven't quite nailed down where the problem is. I see that you've fixed it. Do you perhaps have a specific change notation available? (Looking for the official fix didn't help, due to the sheer level of refactoring between Alpha and 1.13 where it was fixed.)
A bit of an odd request, but perhaps you can help:
I'm trying to fix MC-50640 (the oak worldgen/sapling differences) in Alpha, but haven't quite nailed down where the problem is. I see that you've fixed it. Do you perhaps have a specific change notation available? (Looking for the official fix didn't help, due to the sheer level of refactoring between Alpha and 1.13 where it was fixed.)
I don't know how much the code changed between Alpha and 1.6.4* but the issue is that there is a method called "setScale" which is only called during world generation (in what MCP calls "BiomeDecorator" in 1.6.4, with an note that this code was in ChunkProviderGenerate prior to Beta 1.8), with the code for player-grown trees in BlockSapling:
Since setScale() is always called with all parameters set to 1 you can simply set the indicated fields to the corresponding values (heightLimitLimit = 12, leafDistanceLimit = 5, scaleWidth = 1, leafDensity = 1. The only field that is actually changed from its default is leafDistanceLimit, which is initially set to 4 and controls the height of leaf clusters).
Also, another issue is that the height limit is only set once per biome instance, resulting in little or no height variation in trees generated within the same session. I don't know if this affects Alpha but the game uses a single copy of the tree generator during world generation and it only sets the height if it is 0, which is only the case the first time it is called (the fix here is to remove the "if" so it always sets the height to a new value):
In addition, the generate() method sets a World field which needs to be set to null afterwards to fix a memory leak when switching worlds (if it isn't freed it will remain in memory until the field is set to a new World instance):
public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
{
this.worldObj = par1World;
Also, I don't know if the same thing happens in Alpha due to changes to leaf decay but the leaf clusters need additional logs in the center to prevent them from decaying near the top edges (some don't even have branches); I'm not sure if this is the correct location due to completely rewriting the code that places leaves but the following appears to be correct (based on the 1.6.4 source), which places a log in the center, plus another log if there is a branch below it so they connect:
void generateLeaves()
{
int var1 = 0;
for (int var2 = this.leafNodes.length; var1 < var2; ++var1)
{
int x = this.leafNodes[var1][0];
int y = this.leafNodes[var1][1];
int z = this.leafNodes[var1][2];
this.generateLeafNode(x, y, z);
// Places logs to avoid leaf decay. Note that lower log is only placed if there is a
// branch under it, otherwise, only one log is placed in the center
if (this.worldObj.getBlockId(x, y + 1, z) == Block.leaves.blockID && this.worldObj.getBlockId(x, y, z) == Block.wood.blockID) this.worldObj.setBlock(x, y + 1, z, Block.wood.blockID, 0, 2);
if (this.worldObj.getBlockId(x, y + 2, z) == Block.leaves.blockID) this.worldObj.setBlock(x, y + 2, z, Block.wood.blockID, 0, 2);
}
}
*I did find source which appears to be for Beta 1.1_02 which shows that the code has been nearly unchanged since at least then:
Many thanks! I found the equivalent code, and it was in fact untouched (as I expected based on my dive into the history of Minecraft's BigTrees). Those tweaks were the exact fixes needed. I'm doing all of my Alpha work in bytecode via JByteMod, so I'd been figuring everything out from context. I've fixed a bunch of silly bugs in terrain gen, but I hadn't followed that trail yet.
I already had the log fixes (as well as some other tweaks to the branch generation) but the rest was very helpful!
Remove the "map 1" option (see the help file); you can even remove all the arguments so it will search a random seed* within 1024 blocks of 0,0, or add "radius #" to search a larger radius (up to 8192 blocks; maps are limited to 2048, 1024 if the scale is 2), and more (the included batch file is more to show how to use it):
Note that you can also use the runtime that comes with the game by replacing "java" with the path to it, so you don't need to install it on your system just to use this.
*I just realized that this was not working properly because I replaced Java's Random with a much faster equivalent which did not randomize the seed when created as it is usually unnecessary; it should work now though.
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
This is not an official release yet but I've decided to release a preview of TMCWv4.5, which combines TMCWv4 with many of the bugfixes and optimizations added to TMCWv5 as well as what I call "World1", a set of mainly fixes and optimizations that I use to play my first world on (most of them came from this mod, which I'd been using for years to fix things like rendering bugs, formerly by using a personal modified copy of Optifine before I separated my code so it could be made public. I do include some features based on Optifine, including a zoom function and graphics customization).
https://www.dropbox.com/s/ioa73iyby4nl3sg/tmcwv4.5.zip?dl=0
Despite being by far the largest update I've ever made, double the size of TMCWv4, this is not a content update but it does add a few features and makes some changes, for example, the attack cooldown was replaced with the one in TMCWv5 (you now get penalized for spam-clicking empty air and the penalty applies to all mobs, not just the one you hit; this includes if you attack a mob while it is damage-immune). Also, dark caves are totally pitch black - you better make sure you always have a source of light on hand (the light level at night also varies with moon phase so it is darker during a new moon, but not totally dark, around 1 light level lower. You can also further adjust brightness with the "gamma offset" setting on the second page of video settings but it doesn't affect complete darkness). You can also generate caves in Superflat worlds by adding "cave" to the preset and change the number of dungeons with (count=number). Otherwise, this is fully compatible with worlds created in TMCWv4 (the only changes to world generation, aside from some possible changes to decorations, is a new biome, Rocky Mountains River, to improve river interaction with them, and a bugfix which fixes one of the branches of large caves not being as wide as it should be, which has no impact on their overall structure).
Here are some screenshots (some were taken with my "World1" mod but both are the same):
An explanation of the settings:
(there are now proper keybindings for the "inventory stats", previously hardcoded to R, and zoom keys)
(16 chunk render distance with fog turned off, which normally hides the fact that chunks render in a square in vanilla, this has no effect on visibility with fog since it is circular/fixed distance)
(https://bugs.mojang.com/browse/MC-43968; compare to current vanilla versions, which are worse than older versions)
(https://bugs.mojang.com/browse/MC-68129; smooth lighting is broken underwater because water is not seen as transparent to the smooth lighting code)
(https://bugs.mojang.com/browse/MC-138211; the shadows are supposed to be symmetrical. I have a setting which switches between two modes since different GPUs render "quads" differently, not known if any render in such a way that my fix doesn't work)
(smooth lighting on water is currently only available in Bedrock Edition, I also added it to some other blocks like rails)
(the dark areas are totally black, or lacking any detail no matter what the brightness/monitor settings are)
(various particles which did not render due to the server not sending them to the client have been fixed; I changed the particles when water flows over lava to white steam as that is more realistic, with black smoke when lava flows into a block and destroys it)
(particles, breaking animations, and selection boxes properly render behind and in front of water. Note that I did not fix translucent blocks themselves; e.g water can't be seen behind a Nether portal and I'm not even sure how that could be fixed without re-rendering everything all the time, and whatever was done in 1.7+ causes a lot of its own issues which IMO are much more noticeable)
(transparent full-cube blocks like glass cause water to use a special texture against them so you can see through them more easily. The block model is also rendered full-size unless it needs to be rendered against a block in order to fix gaps between the corners (this is done to avoid z-fighting but vanilla always applies a 0.001 reduction. This is not applied to lava in any case since it has an opaque texture so you can't see z-fighting)
(clouds were also fixed, in addition to rendering so much faster that Fancy clouds are faster than vanilla Fast clouds)
(two new "blocks" (actually, variants of other blocks, as most of the blocks in TMCW are) were added; compressed cobblestone and compressed mossy cobblestone, which can be uncrafted into 4 of their respective blocks; as with rail blocks and cobweb blocks I mainly added these so I can compact them while caving to make more room)
Note that there are some major changes to fundamental game mechanics which many players will find totally game-breaking if the response to Mojang's past attempts to make similar changes are any indication - spawn chunks no longer exist at all, except during initial world creation (just to pregenerate the chunks before the world loads in as otherwise you'd spawn in a void until chunks are generated. This area also varies with render distance so worlds will generate faster at lower distances), iron golems only drop iron if directly (melee attacks only) killed by a player and other "mineral" mob drops (gold, redstone, coal, etc) require a player kill and Looting only works if on a melee weapon (fixing MC-3304, so this is not intended behavior in vanilla). Mobs only spawn in 25% of chunks per spawn cycle so they spawn 4 times slower, but still more than fast enough for normal spawning, and mobs will never spawn above the Nether ceiling, which also deals void damage to players in Survival (not that you can even break bedrock as I added a check that prevents that at the lowest level of chunk data access, and that aside, it doesn't look like 1.6.4 had much in the way of bedrock-breaking).
However, some of the changes can be helpful, such as TNT explosions having a 100% drop rate; amethyst pickaxes also mine amethyst ore twice as fast and obsidian 20% faster than diamond (applied after enchantments), and tools with Mending will slow down just before they break (probably not that useful considering most good items, including amethyst items, will be repaired with units). Amethyst armor also has armor toughness against axes (the only form of armor penetration aside from sources that bypass armor entirely, this works the same way as the current vanilla mechanic so 2 toughness per piece reduces penetration by half). Mob spawning is also based on the height of blocks, not chunks (in particular, once a chunk section was loaded in vanilla it would never be removed server-side; I garbage-collect empty sections (no blocks or light, fixing vanilla lighting bugs) at the top of a column to conserve memory), and leaves are ignored unless there is no air or leaves below them (e.g. jungle groundcover). It is also easy to check the mob cap as I show the number of mobs loaded server-side, as opposed to the client-side "E:" number which only shows entities sent to the client, and only within 80 blocks for most entities (as seen in the first screenshot above, the numbers are M = Monster, P = Passive, O = Ocelot (these have their own mob cap, set to 25, due to their special spawn rules), A = Ambient, W = Water).
Most notably, some major bugs have been fixed, such as MC-2025 and the related MC-9568, possibly the most notorious bug of all time, as well as ugly lighting errors, which were particularly common in TMCW due to the more rugged terrain and regular trees (these are not immediately fixed, I use the same code that vanilla uses to gradually fix lighting, but it runs much faster (pressing F4 will restart the checks and run them faster) and saves whether it has finished; because of this, existing worlds will automatically be relit when loaded for the first time). I also patched the chunk loading/saving code to fix a potential source of chunk corruption (a serious issue in the latest vanilla releases, though that is probably due to something else as I've never seen this particular issue in 1.6.4, vanilla or otherwise) and fixed scheduled block updates (blocks will never be ticked in lazy chunks, fixing the biggest source of lag in the Nether).
There are also some changes to the included utilities; the AMIDST files were removed and replaced with my own biome mapping tool which can properly map everything (there is no legend showing which colors correspond to which biomes as I didn't make one yet but many use the same colors as AMIDST or similar to their blocks, such as Rocky Mountains, Mesa, Extreme Hills, Desert, Plains, Swampland; Winter Forest and Taiga are light green and blue respectively, Savanna is similar in color to the grass in-game, and so on):
I also removed the "MLG" files as there isn't much benefit to them anymore (they were used with Minecraft Land Generator to create a Superflat-like world with caves and structures, which can now be done in-game with Superflat, and otherwise the CaveFinder utility can generate maps of the underground without having to run the game or use 3rd party tools) and I don't even know if you can run this on a server at all (a lot of my fixes won't work in multiplayer either as they rely on direct communication between threads, in part due to being simpler and not having to modify more vanilla classes, besides not having the ability to fully test multiplayer).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
Having just tried a bit of this in a test world, I really like it. I tend to categorize Minecraft versions by era, counting the SMP/SSP code merge up until the Update that Changed the World (1.3.x-1.6.x) as the Adventure Update Expansion era. From what I'm seeing, this mod fixes a bunch of the errors Mojang made in that era, and expands things in the direction (IMO) they should have gone, instead of what they've done in the modern themed content update era.
It makes me really excited to try what you're making for v5, and I think this is going to become my other primary Minecraft version (the other being a custom-modded Alpha 1.2.6+ version I've put together).
The funny thing is, first generation (pre-hopper) iron farms like work almost perfectly with this change. There are some adjustments needed to the lava blades due to golems being able to swim now (they'll usually fight the current and die in lava, so you have to massively shorten the lava blade and put a roof over it to keep them down in the water), and you need to remove the crusher and use your sword instead, but you can still have a (much smaller than in modern versions) almost-passive iron source inside your base. Not enough to build with iron, but maybe enough to keep your iron supplies topped up while you're farming wood and crops, until you have time to go mining again.
(Apologies if I seem spammy) Is there anywhere to see a complete changelog up to the current v4.5? I'm trying to get a handle on what's changed from vanilla 1.6.4, and from just reading the thread it's hard to filter out what's not yet implemented from v5 discussion. The v4.5 changelog only seems to include the differences from v4, but I didn't see a changelog in the v1-4 zip files.
The first post contains spoilers which describe the changes and additions in previous versions, some of which may not be entirely accurate for the latest version but they are generally mostly relevant; for example, I looked through the entry for version 1 and the only things that have since changed are the frequencies of biomes, as more have since been added, and underground generation, again due to more variants of caves, and changes to strongholds so an unlimited number generate anywhere in the world; and changing the protection of armor from 3.5% per armor point for players and mobs to 4% for mobs (back to the vanilla value) and 3.3% for players; and normal ender chests, which were made double-chest size, changed back to vanilla, with a "diamond ender chest" added to get the double chest functionality. Likewise, not much that was added in versions 2 and 3 has since changed.
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
I've made an update which has significant implications for resource packs, as well as future development - biome colors are now palette-based, meaning that instead of using the vanilla colormaps and internal temperature/rainfall values to select a color which is not obvious just from looking at the colormap colors are now directly read from pixels whose location is based on the biome ID, meaning that biomes with the same temperature/rainfall can now have different colors (all biome colors are currently the same as before). Not only that, you can also change the water color using the colormap, and water colors vary more between biomes (currently, mostly just "normal" (most biomes), "cold" (snowy), and "tropical" (jungle, tropical swamp, oasis), in addition to swamps, which were made darker for more contrast), as well as the colors of spruce and birch leaves (currently not biome-based), lilypads, cauldron water, and held items (e.g. grass, vines, etc. Note that the oak/jungle leaf color only applies to held items, with actual blocks using the foliage colormap):

(the actual image is 64x16, with 16x16 areas for foliage, grass, water, and another for miscellaneous things)
Here is a comparison of water colors in a jungle (tropical) river (normal) and ice plains (cold), the normal water color is similar to the default water color in 1.13, with custom water textures (not entirely grayscale) added:
Water colors also affect water particles (drip, splash, bubble) and underwater fog, which was also tweaked slightly (density increased from 0.02 to 0.03, compared to 0.1 in vanilla, except in swamps, which is 0.09 (3x factor), reflecting the "dirty" water color. This also affects the effectiveness of Respiration, which reduces fog density to 0.01 in most biomes and 0.03 in swamps):
(note the color of the splash particles from left to right)
(normal)
(swamp; biome blend was turned off, which also affects the blending of fog color and density, with an additional smoothing applied to density changes)
Also, I added the ability for blocks to render on both render passes (fully opaque or transparent and translucent), which currently only affects cauldrons but this will enable me to do things like rendering water around water plants in TMCWv5 so they don't need to be surrounded by water or solid blocks (as otherwise they would cause gaps in the water; I could just render them entirely on the translucent pass but then they would be invisible from above water as I haven't fixed translucent block rendering, and vanilla 1.7's "fix" still causes artifacts which are IMO more noticeable):
(I spawned a silverfish inside the cauldron, which would normally not be visible due to the water being opaque)
There are also some bug fixes, mostly caused by unrelated changes to rendering (for example, packed ice was rendering sides adjacent to other packed ice blocks, making them extremely expensive to render in large amounts), or replaced code with that from "World1" (an unrelated mod from which I ported many of the changes in TMCWv4.5), such as snow accumulating on packed ice and quartz path (as a bonus, I added a couple features from TCMWv5; snow can now accumulate on upper half slabs and upside-down stairs).
(the change to the colormaps was spurred by a previous change breaking Roofed Forests, which turned blue-green due to an otherwise unnoticeable shift in the base color causing the color mixing to break, which I only discovered after seeing one while playing as everything else was correct; I temporarily patched this a while ago by hardcoding in the proper color)
Also, the CaveFinder utility will now show large caves and ravines with a volume of at least 25000, down from 50000 before (this is still quite large, especially for caves, which never reach this size in vanilla while only the largest ravines do), as well as large cave clusters (2-4 large caves in the same chunk) with a volume of at least 25000 for 2 caves to 35000 for 4 caves and no single cave exceeding 25000 (otherwise, only cave(s) at least this large will be listed under "largest caves"); these changes roughly double the number of results:
This is an example of a cave which would not have been found before, with a volume of about 33,000:

There is also now a "Documentation" folder in the download, which currently has a changelog (new additions are listed separately at the end), the colormap guide shown above, a list of biomes by ID, and a list of repair costs for various items (I made it several years ago for the items I use but it is still valid); I'll be adding documentation for new/changed blocks, items, and recipes later.
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
I felt bad for birch not having a large tree variant, so here's an unsolicited suggestion (feel free to use, adapt, ignore, or do whatever you like with it): what about a coppiced birch? Birch trees with their trunks cut or broken can re-grow multiple straight trunks from the stump:
Using the Poplar variant, here's a mock-up using 3x3 birch trees, each 1-3 blocks above the "stump" and with the outer trunks offset by 1 from the base:
I got an interesting crash report while flying through a mega tree plains in my world that I can't seem to get passed.
---- Minecraft Crash Report ----
// I just don't know what went wrong
Time: 8/4/20 8:25 PM
Description: Ticking memory connection
java.lang.NullPointerException
at WorldGenOre.genRubyOre(WorldGenOre.java:345)
at BiomeGenRockyMountains.a(BiomeGenRockyMountains.java:48)
at ChunkProviderTMCW.a(ChunkProviderTMCW.java:1287)
at ChunkProviderServerFix.a(ChunkProviderServerFix.java:66)
at adr.a(Chunk.java:1007)
at jr.c(SourceFile:105)
at jq.<init>(SourceFile:29)
at jp.a(PlayerManager.java:73)
at jp.d(PlayerManager.java:192)
at hn.d(SourceFile:197)
at ka.a(NetServerHandler.java:276)
at eu.a(SourceFile:136)
at cn.b(SourceFile:64)
at ka.e(NetServerHandler.java:46)
at kd.b(SourceFile:37)
at blc.b(SourceFile:84)
at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.s(MinecraftServer.java:562)
at bkz.s(SourceFile:124)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at hi.run(SourceFile:583)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at WorldGenOre.genRubyOre(WorldGenOre.java:345)
at BiomeGenRockyMountains.a(BiomeGenRockyMountains.java:48)
at ChunkProviderTMCW.a(ChunkProviderTMCW.java:1287)
at ChunkProviderServerFix.a(ChunkProviderServerFix.java:66)
at adr.a(Chunk.java:1007)
at jr.c(SourceFile:105)
at jq.<init>(SourceFile:29)
at jp.a(PlayerManager.java:73)
at jp.d(PlayerManager.java:192)
at hn.d(SourceFile:197)
at ka.a(NetServerHandler.java:276)
at eu.a(SourceFile:136)
at cn.b(SourceFile:64)
at ka.e(NetServerHandler.java:46)
-- Ticking connection --
Details:
Connection: [email protected]
Stacktrace:
at kd.b(SourceFile:37)
at blc.b(SourceFile:84)
at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:672)
at net.minecraft.server.MinecraftServer.s(MinecraftServer.java:562)
at bkz.s(SourceFile:124)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:461)
at hi.run(SourceFile:583)
-- System Details --
Details:
Minecraft Version: 1.6.4
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 163326000 bytes (155 MB) / 402653184 bytes (384 MB) up to 2147483648 bytes (2048 MB)
JVM Flags: 8 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
AABB Pool Size: 3188 (178528 bytes; 0 MB) allocated, 2292 (128352 bytes; 0 MB) used
Suspicious classes: ParticleRenderer, GuiIngameTMCW, GuiInventoryTMCW, ...]
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
Profiler Position: N/A (disabled)
Vec3 Pool Size: 565 (31640 bytes; 0 MB) allocated, 426 (23856 bytes; 0 MB) used
Player Count: 1 / 8; [jv['FruitVegetables'/1, l='The New Start 2', x=10095.89, y=117.37, z=10561.04]]
Type: Integrated Server (map_client.txt)
Is Modded: Very likely; Jar signature invalidated
I can't reproduce the error, either in a normal world or a Superflat world using the Overworld preset with the biome changed to Rocky Mountains and caves added, which should be the same as a normal world, and the line number mentioned (WorldGenOre:345) doesn't correspond to anything that would cause a NullPointerException, either in the original source or decompiled code (in case the line numbers are different but they were the same):
I don't see any indication of runaway world generation either, which is the only cause I can think of (a chunk causes another chunk to be loaded while being generated, which will corrupt the internal state of WorldGenOre, in particular, the reference to World can be made null since it is set before generating any ores and cleared afterwards. However, ore generation should not cause this, and the stack trace would otherwise make it obvious).
ETA: I've made an update that may fix the issue (although as mentioned I can't reproduce it, I changed the code so "world" is not set to null after a chunk is generated, only when you quit the world). A more proper fix, as I did in TMCWv5, is to refactor the ore generator class to remove the fields that store the world and chunk coordinates (a legacy from vanilla's BiomeDecorator class which WorldGenOre was originally part of).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
I just wanted to mention that I frequently make updates; for example, I just added a "better snow" option which makes grass blocks, as well as mycelium and podzol, render with a snowy texture when plants and various other partial blocks on on top and they are next to snow (this is similar to Optifine's feature, except Optifine renders a snow block on top of the grass while I made grass blocks use the snow texture on top, as well as a snowy side texture; this means that there will be a depression around the blocks but it isn't that noticeable from a distance, and short blocks won't be buried):
There are also additional bugfixes, including fixing MC-1713 for hoes (you couldn't repair them in the anvil with units, only with another hoe; notably, MC-1713 was actually resolved as "works as intended", but hoes are able to be repaired with units since some later vanilla version). I never noticed this until recently since I'd never tried repairing a hoe in the anvil until then (I use a diamond hoe with Fortune III, Unbreaking III, Mending to harvest crops, which is too expensive (43 levels) to be repaired with a sacrifice unless it is down by 300-400 durability, which is much worse for amethyst as only a highly damaged sacrifice would work). Other items, like shears, were not changed since they wouldn't benefit much from item repairs (you'd spend not only twice as many resources but more levels since a sacrifice only costs 2 levels for the actual repair, while units cost (1 + enchantments) per unit and 4 are required to make a full repair).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
I've released a significant update which fixes more bugs and adds more variants of rail blocks, fences, walls, and smooth "double slabs" as their own blocks, as well as giving rubies, formerly with no use other than crafting blocks, the ability to reduce the prior work penalty of items which are otherwise too expensive to put Mending on so you can indefinitely repair them (you'll need to find a Rocky Mountains biome though), and many other changes:
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
A bit of an odd request, but perhaps you can help:
I'm trying to fix MC-50640 (the oak worldgen/sapling differences) in Alpha, but haven't quite nailed down where the problem is. I see that you've fixed it. Do you perhaps have a specific change notation available? (Looking for the official fix didn't help, due to the sheer level of refactoring between Alpha and 1.13 where it was fixed.)
I don't know how much the code changed between Alpha and 1.6.4* but the issue is that there is a method called "setScale" which is only called during world generation (in what MCP calls "BiomeDecorator" in 1.6.4, with an note that this code was in ChunkProviderGenerate prior to Beta 1.8), with the code for player-grown trees in BlockSapling:
Since setScale() is always called with all parameters set to 1 you can simply set the indicated fields to the corresponding values (heightLimitLimit = 12, leafDistanceLimit = 5, scaleWidth = 1, leafDensity = 1. The only field that is actually changed from its default is leafDistanceLimit, which is initially set to 4 and controls the height of leaf clusters).
Also, another issue is that the height limit is only set once per biome instance, resulting in little or no height variation in trees generated within the same session. I don't know if this affects Alpha but the game uses a single copy of the tree generator during world generation and it only sets the height if it is 0, which is only the case the first time it is called (the fix here is to remove the "if" so it always sets the height to a new value):
In addition, the generate() method sets a World field which needs to be set to null afterwards to fix a memory leak when switching worlds (if it isn't freed it will remain in memory until the field is set to a new World instance):
Also, I don't know if the same thing happens in Alpha due to changes to leaf decay but the leaf clusters need additional logs in the center to prevent them from decaying near the top edges (some don't even have branches); I'm not sure if this is the correct location due to completely rewriting the code that places leaves but the following appears to be correct (based on the 1.6.4 source), which places a log in the center, plus another log if there is a branch below it so they connect:
*I did find source which appears to be for Beta 1.1_02 which shows that the code has been nearly unchanged since at least then:
https://github.com/MadMockers/mc-dev/blob/master/net/minecraft/server/WorldGenBigTree.java (in this example "n = 4" on line 39 is to be changed to "n = 5" and "if (e == 0)" on line 396 is to be removed; add "c = null" prior to the return statements on lines 400 and 406)
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?
Many thanks! I found the equivalent code, and it was in fact untouched (as I expected based on my dive into the history of Minecraft's BigTrees). Those tweaks were the exact fixes needed. I'm doing all of my Alpha work in bytecode via JByteMod, so I'd been figuring everything out from context. I've fixed a bunch of silly bugs in terrain gen, but I hadn't followed that trail yet.
I already had the log fixes (as well as some other tweaks to the branch generation) but the rest was very helpful!