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: ka@1f2c502a
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: ka@1f2c502a
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).
In contrast to previous updates and despite its size, nearly double that of TMCWv4, TMCWv4.5 is mainly an optimization and bugfix update of the sort that vanilla so desperately needs, including fixing major bugs such as MC-2025 (mobs glitching out of and suffocating in blocks) and MC-43968, MC-68129, and MC-138211 (multiple issues with smooth lighting, including the addition of smooth lighting for blocks like water). Many bugs present in vanilla 1.6.4, and consequently previous versions of TMCW, have also been fixed or mitigated, such as MC-1018 and MC-80966 (lighting errors) and MC-119 (mobs visually sinking into the ground), along with dozens, if not hundreds of other fixes (I did not keep track), some still not fixed as of 1.16, or having become much worse since then, such as MC-161823 (IMO, 1.16 shouldn't have been released with such a major bug. Note that I've never actually seen this particular bug happen in 1.6.4 but it is possible that the greater multithreading in newer versions made a file I/O synchronization bug more apparent (e.g. MC-119971). I also previously fixed an issue with the internal server not being properly shut down when quitting - in TMCWv1, yet vanilla still does not, as evidenced by bugs like MC-315).
As for optimizations, much of the rendering and world generation systems have been rewritten with performance and resource/memory usage in mind; world generation is more than twice as fast as TMCWv4, even faster in "mega forest" biomes due to a highly optimized lighting engine, while memory usage and object allocation has been minimized - you should only need to allocate 512 MB even at maximum settings, and I recommend changing the default JVM arguments to the ones provided in the Readme (more memory will slow things down. Even 256 MB will work for low-mid-range settings; I've seen memory usage as low as 60 MB on 8 chunks in a default world). Here is the game output from creating a new world with the seed "TMCWv4" with render distance set to 8 (the spawn radius is one more than this); the area around spawn is mostly Mixed Forest and Jungle:
2020-06-23 13:56:55 [SERVER] [INFO] Starting integrated minecraft server version 1.6.4
2020-06-23 13:56:55 [SERVER] [INFO] Generating keypair
2020-06-23 13:56:55 [SERVER] [INFO] Converting map!
2020-06-23 13:56:55 [SERVER] [INFO] Scanning folders...
2020-06-23 13:56:55 [SERVER] [INFO] Total conversion count is 0
2020-06-23 13:56:55 [SERVER] [INFO] Preparing start region for level 0
2020-06-23 13:56:56 [SERVER] [INFO] Preparing spawn area: 14%
2020-06-23 13:56:57 [SERVER] [INFO] Preparing spawn area: 47%
2020-06-23 13:56:57 [SERVER] [INFO] TheMasterCaver[/127.0.0.1:0] logged in with entity id 117 at (2.5, 69.0, -215.5)
The rendering of blocks, entities, particles, and tile entities has also been improved and/or fixed; for example, wall signs are now rendered as blocks, with only the text being rendered as a tile entity, and closed chests use a simplified model which renders 2-3 times faster. Particles now properly render in front of/behind water, along with the selection box and breaking animation. Particles which did not render due to the server not sending them to the client also now render, such as water/lava mixing (changed to use white steam particles instead of black smoke, except when lava destroys a block). Fancy clouds render faster than Fast clouds in vanilla, and clouds properly blend in with the terrain (e.g. you can see blocks above them, which were hidden in vanilla).
Complex blocks like fences are far faster, especially with smooth lighting enabled, which also now only has two settings as there was almost no difference between "min" and "max" (this only fixed some glitches with slabs and stairs. These do still have some minor visual glitches since they are partial blocks but opaque, but overall much less than in vanilla), many blocks have proper face culling (e.g. vanilla renders the sides of snow layers and carpets and the top of the block below; by culling these hidden faces the number rendered dropped from 6 to 1).
Chunks are now rendered in a circle instead of square, removing the normally invisible corners for a 20% reduction in rendered geometry, along with the addition of a custom culling method which hides chunks below the surface when you are above ground and vice-versa.
Notably, a light level of 0 is now totally dark, no matter the brightness setting, in-game or monitor, - you better make sure you always have a light source on hand when caving! Fog also darkens and the sun/moon/stars are hidden when below sea level and in the absence of sky light (similar to void fog in vanilla but occurring anywhere below sea level; fog distance is not affected).
Many changes and additions have been made to video settings, including fine control of render distance and framerate limit, individual fast/fancy options for various things, and additional settings such as biome blend:
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 (5 ms frame time) 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 also only affected certain blocks like stairs (it had no effect on most blocks, including performance).
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, rain/snow, and translucent blocks (e.g. water) can individually be set to Default, Fast, or Fancy.
Leaves can be set to Default, Fast, Fancy, or Fancy (fast), the last of which removes interior faces more than 1 block deep to improve performance while giving a better appearance than if only the outer faces were rendered.
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, defaulting to 5x5 (vanilla is fixed at 3x3) 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. This also smoothens sky color transitions between biomes.
Changed the range of FOV from 70-110 to 30-110 to accomodate 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 noticably 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 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.
Here are some screenshots:
Performance at maximum settings in a Mega Mixed Forest, representing a worst-case scenario:
Video settings and controls:
Circular chunk rendering:
Fixed smooth lighting (compare to vanilla; this is also worse in newer versions):
Water uses a special texture against glass and other visually transparent full cube blocks (rather than the flowing animation):
While not primarily a content update, there are many more additions and changes, including some that significantly impact gameplay, at least, if you are the typical player who heavily relies on mob farms; many of these changes were backported from TMCWv5 (and as such, are no longer considered to be features it will add), a full list of which can be found here:
(this is a very long list, hence I provided a link to a separate file, which can be viewed in the browser)
Another notable change is not to the mod itself but to the included utilities; rather than providing a patch that enables AMIDST to be used, but only showing basic landmasses and climate zones, I made my own biome mapping tool which makes a fully detailed biome map, as well as providing a list of the biomes present and their frequencies, and the number found out of the total (making it easy to find "all biomes within x blocks" seeds; these are not as common as you may think despite the much more varied biome generation in TMCW):
A biome map of the seed "TMCWv4", centered around 0,0 with a radius of 512 blocks:
A map of an actual world made with Minutor. While biomes are not marked on the maps it is easy to learn which colors correspond to which biomes; some are quite obvious, such as Mesa or Rocky Mountains, others use the same colors as AMIDST, such as Desert, with Mountainous Desert appearing similar to Desert Hills but the size of an entire biome; Savanna has a similar color as the foliage in-game, Ice Plains is white with gray Ice Mountains, while Winter Forest is light green and Winter Taiga is light blue-green, and so on:
(this used to be in the OP but it got too large(!) so the descriptions for all previous updates have been moved to separate comments which originally described features added by that update)
September 1, 2020 update (original comment):
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!
firstly i just want to say.. it seems that you have truly created the ultimate version of vanilla minecraft !!! well done !
if only it was compatible with mods.. then we could cook up the ultimate version of minecraft, but alas.
i've been making a modpack for 1.6.4 and i saw in your version 4.5 update that you implemented the fix for MC-1018 (Black Lighting under overhangs). this bug is everywhere and really hurts the immersion for me. i hope it's not too much to ask, would you be able to explain how i could implement this fix myself? i'm hoping i can add this fix and be able to go on to create the modpack. i wouldn't think that this one fix would create incompatibilities with mods. i'm a noob at coding but i've done a tiny bit of it (not in minecraft though). i suppose i'm mainly wondering what pieces of code i need to change and to what and if there's anything else i need to do to get things to play nice and launch.
i use multimc by the way, but i'm sure i can do anything that i need to do with it. i'm actually locked out of the default launcher because i bought the game way back in alpha and forgot the email i used so i can't migrate to a mojang account (freakin scam ) but multimc still lets me log in with just my username and password anyways if you could help me with this that would be super appreciated!
i've been making a modpack for 1.6.4 and i saw in your version 4.5 update that you implemented the fix for MC-1018 (Black Lighting under overhangs).
I've made many changes to how the lighting engine works but the most important one was saving whether the random light updates that normally only run after a chunk is first generated had completed and restarting them when a chunk is populated, as well as notifying the client when light checks need to run (general black spots are not actually fixed during world generation but for typical Survival gameplay they will be fixed by the time you see them; this also applies to vanilla but the checks run so slowly (in fact, it takes 9.6 minutes for the client to check every block in a chunk, my code does it in 1.2 minutes, with most lighting errors being fixed much sooner) that chunks can easily be unloaded before they finish, and they never restart):
public class AnvilChunkLoader implements IChunkLoader, IThreadedFileIO
{
private void writeChunkToNBT(Chunk par1Chunk, World par2World, NBTTagCompound par3NBTTagCompound)
{
par3NBTTagCompound.setBoolean("LightUpdated", !par1Chunk.runRelightChecks);
}
private Chunk readChunkFromNBT(World par1World, NBTTagCompound par2NBTTagCompound)
{
chunk.runRelightChecks = !par2NBTTagCompound.getBoolean("LightUpdated");
}
}
public class Packet51MapChunk extends Packet
{
public boolean runRelightChecks;
public Packet51MapChunk(Chunk par1Chunk, boolean par2, int par3)
{
this.runRelightChecks = par1Chunk.runRelightChecks;
}
public void readPacketData(DataInput par1DataInput) throws IOException
{
this.runRelightChecks = par1DataInput.readBoolean();
}
public void writePacketData(DataOutput par1DataOutput) throws IOException
{
par1DataOutput.writeBoolean(this.runRelightChecks);
}
}
public class Packet56MapChunks extends Packet
{
public boolean[] runRelightChecks;
public Packet56MapChunks(List par1List)
{
this.runRelightChecks = new boolean[var2];
for (int var4 = 0; var4 < var2; ++var4)
{
Chunk var5 = (Chunk)par1List.get(var4);
this.runRelightChecks[var4] = var5.runRelightChecks;
}
}
public void readPacketData(DataInput par1DataInput) throws IOException
{
this.runRelightChecks = new boolean[var2];
for (int var6 = 0; var6 < var2; ++var6)
{
this.runRelightChecks[var6] = par1DataInput.readBoolean();
}
}
public void writePacketData(DataOutput par1DataOutput) throws IOException
{
for (int var2 = 0; var2 < this.chunkPostX.length; ++var2)
{
par1DataOutput.writeBoolean(this.runRelightChecks[var2]);
}
}
}
public class Chunk
{
public boolean runRelightChecks;
private int lightChecksPerCycle;
public Chunk(World par1World, int chunkX, int chunkZ)
{
// Client runs twice as fast since it only checks 10 chunks per tick (note that vanilla only
// advances queuedLightChecks by 8 at a time; optimizations enable me to let it run much faster)
this.lightChecksPerCycle = (par1World.isRemote ? 64 : 32);
}
// Called after chunk population to reset relight checks and update skylight map if needed
public void resetRelightChecks()
{
this.queuedLightChecks = 0;
this.runRelightChecks = true;
}
// Incrementally updates light over the entire chunk
public void enqueueRelightChecks()
{
if (this.queuedLightChecks >= 4096 || this.worldObj.doChunksNearChunkExist(this.xPosition, this.zPosition, 1) == 0) return;
// Halves number of light checks per cycle client-side in mega tree biomes to reduce lag
int num = (this.isRemote && this.getBiomeGenForCoords(this.blockX | 8, this.blockZ | 8).isMegaTreeBiome() ? this.lightChecksPerCycle >> 1 : this.lightChecksPerCycle);
this.queuedLightChecks = this.worldObj.lightUpdater.enqueueRelightChecks(this.blockX, this.blockZ, this.queuedLightChecks, num, this.hasSkyLight);
if (this.queuedLightChecks >= 4096)
{
// Indicates whether all light checks have completed
if (this.runRelightChecks)
{
this.runRelightChecks = false;
this.isModified = true;
}
}
}
}
Another fix was to add a special method that can update light to the edge of unloaded chunks by checking each individual block for whether the blocks around it are loaded, which is used to place torches and other light-emitting blocks in structures during world generation (normally a 1 chunk radius must be loaded, and random light checks only run within a 15x15 chunk area centered on the player; due to the additional overhead this method is only used for things like torches in villages and mineshafts). Blocks like lava and glowstone are also always rendered at full brightness, independent of their actual light level, reducing the effects when the player sees them before the light checks have reached them. Another fix was to set the light level of opaque blocks to 0 if a normal relight couldn't be done, which causes phantom light in areas like where water flowed over lava during world generation, and treating light-emitting blocks as always opaque:
Note that these methods are from my own code, but the first one is equivalent to World.updateAllLightTypes in vanilla and the second is equivalent to World.computeLightValue (split into separate methods for block light and sky light):
private void updateLight(Chunk chunk, int blockState, int posX, int posY, int posZ)
{
// Vanilla only checks if chunks are loaded before performing light updates
if (this.doChunksNearBlockExist(posX, posZ, 16))
{
this.lightUpdater.loadChunks(posX, posZ);
if (!this.provider.hasNoSky) this.lightUpdater.updateSkyLight(posX, posY, posZ);
this.lightUpdater.updateBlockLight(posX, posY, posZ);
this.lightUpdater.unloadChunks();
}
else
{
posX &= 15;
posZ &= 15;
int opacity = Block.lightOpacity[BlockStates.getBlockId(blockState)];
int light = (BlockStates.getBlockId(blockState) > 0 ? Block.blocksList[BlockStates.getBlockId(blockState)].getLightValue(BlockStates.getBlockMetadata(blockState)) : 0);
// Sets light level to 0 if block doesn't emit light and fully blocks light; otherwise sets light
// level to (existing light level - opacity) or (light level), whichever is higher
if (light == 0 && opacity >= 15)
{
chunk.setBlockLightValue(posX, posY, posZ, 0);
}
else
{
chunk.setBlockLightValue(posX, posY, posZ, Math.max(chunk.getBlockLightValue(posX, posY, posZ) - opacity, light));
}
if (chunk.hasSkyLight && opacity > 0)
{
light = chunk.getSkyLightValue(posX, posY, posZ);
if (light > 0) chunk.setSkyLightValue(posX, posY, posZ, Math.max(0, light - opacity));
}
}
}
private int computeBlockLightValue(int x, int y, int z, Chunk chunk)
{
int x15 = x & 15;
int z15 = z & 15;
int index = Chunk.getBlockIndex(x15, y, z15);
int blockState = chunk.getBlockStateByIndex(index);
int lightValue;
int opacity;
if (!BlockStates.isAirBlock(blockState))
{
// Enables data values to affect light value
lightValue = Block.blocksList[BlockStates.getBlockId(blockState)].getLightValue(BlockStates.getBlockMetadata(blockState));
if (lightValue >= 14) return lightValue;
opacity = this.clampedLightOpacity[BlockStates.getBlockId(blockState)];
// Prevents opaque light-emitting blocks like glowing redstone ore from passing light through
if (opacity >= 15) return lightValue;
// This is the original behavior in vanilla, which sets the opacity of opaque light-emitting
// blocks to 1
// int var7 = Block.lightOpacity[var5];
// if (var7 >= 15 && Block.lightValue[var5] > 0) var7 = 1;
}
else
{
lightValue = 0;
opacity = 1;
}
That said, it should be noted that I made many significant changes to and complete replacements of many vanilla classes, far more than shown (even a mostly vanilla implementation of my codebase has around 3.5 MB of sources and 1 MB of compiled and zipped files), and it would certainly not be possible to simply copy any of my code to Forge, which disallows directly modifying vanilla code (you actually can but it is unlikely that the modified classes will be compatible except in the simplest cases; otherwise, you need to resort to advanced modding techniques like reflection and ASM/bytecode injection. I've never actually tried Forge modding so I can't even begin to say how to start; this thread may help).
thanks for all that info! i wasn't planning on making a forge mod but editing the minecraft files directly like you. however i have made a new development in my quest to create the ultimate version of minecraft... 1.12.2!!! yes that's right.. after all these years, i may be finally moving on from the golden era of minecraft into the DISGUSTING, modern era.
i came across your mods and tweaks thread and got the cave generation mod working for 1.12.2 (verified with the steps in the readme). for anyone who might see this, to install it with multimc you just have to take the aza.class and bbj.class files (in the caves and mineshafts folders), add them to an archive (like with 7zip), then in multimc for your 1.12.2 instance click edit instance, go to the version tab, click add to minecraft.jar, and select the zip you created with the 2 class files. i 'member the good ol days of minecraft modding where you had to drag mod files right into the minecraft.jar! ha! back in my day. my profile might say that i am a newbie but i am not, i started playing in alpha !!! i'm a verified OG
anyways after that i watched a youtube video about the top 100 mods of the decade (link below) and it mentioned... yung's better caves! !! after a little tweaking and testing, it seems this mod will supply my big cave systems needs! i was only using 1.6.4 before because of your thread about how it has bigger cave systems, but this mod covers that and apparently 1.12.2 has become the new 1.7.10 in terms of mods. yung's better caves might be interesting to you because it's kind of similar to your themastercaver's world mod, specifically the version 4 update where you added cave variants like more open spaces and stuff. here's a cool explanation about how it works from the dev. also have you heard that in 1.17 minecraft is finally updating their cave system generation? i'll link the youtube video i watched about it below. seems pretty cool!
i found that exploring big open caves with yung's better caves along with the hardcore darkness mod and optifine's fancy dynamic lighting is really awesome! i'm also trying out quark's stalagmites and sound filters which adds a cool reverb sound effect when you're in caves.
seeing how much you like caving, i thought of something. there's this old flash game called motherload you might like. it's strangely amazing and addicting! https://www.miniclip.com/games/motherload/en/#. other than that i want to say thanks for sharing your findings about how cave gen changed after 1.6.4. i swore i noticed i started finding more disappointing dead ends at some point. now i know what's what!
edit: ok HOLD ON A MINUTE. forget sound filters! it's too reverby. sound physics is AMAZING. you've gotta try it out man!! ! i not even kidding it's so cool! it sounds like you're legit in a cave you won't even believe it ! https://github.com/djpadbit/Sound-Physics
seeing how much you like caving, i thought of something. there's this old flash game called motherload you might like. it's strangely amazing and addicting! https://www.miniclip.com/games/motherload/en/#.
Funnily enough, I've just started a journey to creating world gen inspired by Motherload in 1.12. Increasing stone hardness the deeper you go to necessitate upgrading your tools to the next tier, a variety of ores that get more valuable the deeper you go, etc
Hello, this looks great but I can't make it work. All I get is a crash, I'm on Linux and Java 11 using the latest official launcher if that matters:
07:52:52.201
Preparing to launch minecraft client for TMCWv4.5
07:52:52.892
Couldn't fetch SHA1 checksum for https://s3.amazonaws.com/Minecraft.Download/versions/TMCWv4.5/TMCWv4.5.jar
07:52:52.892
Have local file /home/wedhro/.minecraft/versions/TMCWv4.5/TMCWv4.5.jar but don't know what size or hash it should be. Have to assume it's good.
07:52:52.894
Minecraft client TMCWv4.5 is ready to start.
07:52:52.894
Starting!
07:52:52.921
Version does not support log configuration, will assume one plaintext entry per line
07:52:53.697
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
07:52:53.750
at net.minecraft.client.main.Main.<clinit>(SourceFile:37)
07:52:53.750
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
07:52:53.750
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
07:52:53.750
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
07:52:53.750
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
07:52:53.750
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
07:52:53.750
... 1 more
07:52:53.763
Process crashed with exit code 1
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: ka@1f2c502a
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?
As for optimizations, much of the rendering and world generation systems have been rewritten with performance and resource/memory usage in mind; world generation is more than twice as fast as TMCWv4, even faster in "mega forest" biomes due to a highly optimized lighting engine, while memory usage and object allocation has been minimized - you should only need to allocate 512 MB even at maximum settings, and I recommend changing the default JVM arguments to the ones provided in the Readme (more memory will slow things down. Even 256 MB will work for low-mid-range settings; I've seen memory usage as low as 60 MB on 8 chunks in a default world). Here is the game output from creating a new world with the seed "TMCWv4" with render distance set to 8 (the spawn radius is one more than this); the area around spawn is mostly Mixed Forest and Jungle:
The rendering of blocks, entities, particles, and tile entities has also been improved and/or fixed; for example, wall signs are now rendered as blocks, with only the text being rendered as a tile entity, and closed chests use a simplified model which renders 2-3 times faster. Particles now properly render in front of/behind water, along with the selection box and breaking animation. Particles which did not render due to the server not sending them to the client also now render, such as water/lava mixing (changed to use white steam particles instead of black smoke, except when lava destroys a block). Fancy clouds render faster than Fast clouds in vanilla, and clouds properly blend in with the terrain (e.g. you can see blocks above them, which were hidden in vanilla).
Complex blocks like fences are far faster, especially with smooth lighting enabled, which also now only has two settings as there was almost no difference between "min" and "max" (this only fixed some glitches with slabs and stairs. These do still have some minor visual glitches since they are partial blocks but opaque, but overall much less than in vanilla), many blocks have proper face culling (e.g. vanilla renders the sides of snow layers and carpets and the top of the block below; by culling these hidden faces the number rendered dropped from 6 to 1).
Chunks are now rendered in a circle instead of square, removing the normally invisible corners for a 20% reduction in rendered geometry, along with the addition of a custom culling method which hides chunks below the surface when you are above ground and vice-versa.
Notably, a light level of 0 is now totally dark, no matter the brightness setting, in-game or monitor, - you better make sure you always have a light source on hand when caving! Fog also darkens and the sun/moon/stars are hidden when below sea level and in the absence of sky light (similar to void fog in vanilla but occurring anywhere below sea level; fog distance is not affected).
Many changes and additions have been made to video settings, including fine control of render distance and framerate limit, individual fast/fancy options for various things, and additional settings such as biome blend:
Here are some screenshots:
Video settings and controls:
Circular chunk rendering:
Fixed smooth lighting (compare to vanilla; this is also worse in newer versions):
Water uses a special texture against glass and other visually transparent full cube blocks (rather than the flowing animation):
While not primarily a content update, there are many more additions and changes, including some that significantly impact gameplay, at least, if you are the typical player who heavily relies on mob farms; many of these changes were backported from TMCWv5 (and as such, are no longer considered to be features it will add), a full list of which can be found here:
https://www.dropbox.com/s/xhq7o28tk4igrhd/tmcwv4.5_changelog.txt
(this is a very long list, hence I provided a link to a separate file, which can be viewed in the browser)
Another notable change is not to the mod itself but to the included utilities; rather than providing a patch that enables AMIDST to be used, but only showing basic landmasses and climate zones, I made my own biome mapping tool which makes a fully detailed biome map, as well as providing a list of the biomes present and their frequencies, and the number found out of the total (making it easy to find "all biomes within x blocks" seeds; these are not as common as you may think despite the much more varied biome generation in TMCW):
A map of an actual world made with Minutor. While biomes are not marked on the maps it is easy to learn which colors correspond to which biomes; some are quite obvious, such as Mesa or Rocky Mountains, others use the same colors as AMIDST, such as Desert, with Mountainous Desert appearing similar to Desert Hills but the size of an entire biome; Savanna has a similar color as the foliage in-game, Ice Plains is white with gray Ice Mountains, while Winter Forest is light green and Winter Taiga is light blue-green, and so on:
(this used to be in the OP but it got too large(!) so the descriptions for all previous updates have been moved to separate comments which originally described features added by that update)
September 1, 2020 update (original comment):
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:
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):
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):
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!
firstly i just want to say.. it seems that you have truly created the ultimate version of vanilla minecraft !!! well done !
if only it was compatible with mods.. then we could cook up the ultimate version of minecraft, but alas.
i've been making a modpack for 1.6.4 and i saw in your version 4.5 update that you implemented the fix for MC-1018 (Black Lighting under overhangs). this bug is everywhere and really hurts the immersion for me. i hope it's not too much to ask, would you be able to explain how i could implement this fix myself? i'm hoping i can add this fix and be able to go on to create the modpack. i wouldn't think that this one fix would create incompatibilities with mods. i'm a noob at coding but i've done a tiny bit of it (not in minecraft though). i suppose i'm mainly wondering what pieces of code i need to change and to what and if there's anything else i need to do to get things to play nice and launch.
i use multimc by the way, but i'm sure i can do anything that i need to do with it. i'm actually locked out of the default launcher because i bought the game way back in alpha and forgot the email i used so i can't migrate to a mojang account (freakin scam ) but multimc still lets me log in with just my username and password anyways if you could help me with this that would be super appreciated!
I've made many changes to how the lighting engine works but the most important one was saving whether the random light updates that normally only run after a chunk is first generated had completed and restarting them when a chunk is populated, as well as notifying the client when light checks need to run (general black spots are not actually fixed during world generation but for typical Survival gameplay they will be fixed by the time you see them; this also applies to vanilla but the checks run so slowly (in fact, it takes 9.6 minutes for the client to check every block in a chunk, my code does it in 1.2 minutes, with most lighting errors being fixed much sooner) that chunks can easily be unloaded before they finish, and they never restart):
Another fix was to add a special method that can update light to the edge of unloaded chunks by checking each individual block for whether the blocks around it are loaded, which is used to place torches and other light-emitting blocks in structures during world generation (normally a 1 chunk radius must be loaded, and random light checks only run within a 15x15 chunk area centered on the player; due to the additional overhead this method is only used for things like torches in villages and mineshafts). Blocks like lava and glowstone are also always rendered at full brightness, independent of their actual light level, reducing the effects when the player sees them before the light checks have reached them. Another fix was to set the light level of opaque blocks to 0 if a normal relight couldn't be done, which causes phantom light in areas like where water flowed over lava during world generation, and treating light-emitting blocks as always opaque:
That said, it should be noted that I made many significant changes to and complete replacements of many vanilla classes, far more than shown (even a mostly vanilla implementation of my codebase has around 3.5 MB of sources and 1 MB of compiled and zipped files), and it would certainly not be possible to simply copy any of my code to Forge, which disallows directly modifying vanilla code (you actually can but it is unlikely that the modified classes will be compatible except in the simplest cases; otherwise, you need to resort to advanced modding techniques like reflection and ASM/bytecode injection. I've never actually tried Forge modding so I can't even begin to say how to start; this thread may help).
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?
thanks for all that info! i wasn't planning on making a forge mod but editing the minecraft files directly like you. however i have made a new development in my quest to create the ultimate version of minecraft... 1.12.2!!! yes that's right.. after all these years, i may be finally moving on from the golden era of minecraft into the DISGUSTING, modern era.
i came across your mods and tweaks thread and got the cave generation mod working for 1.12.2 (verified with the steps in the readme). for anyone who might see this, to install it with multimc you just have to take the aza.class and bbj.class files (in the caves and mineshafts folders), add them to an archive (like with 7zip), then in multimc for your 1.12.2 instance click edit instance, go to the version tab, click add to minecraft.jar, and select the zip you created with the 2 class files. i 'member the good ol days of minecraft modding where you had to drag mod files right into the minecraft.jar! ha! back in my day. my profile might say that i am a newbie but i am not, i started playing in alpha !!! i'm a verified OG
anyways after that i watched a youtube video about the top 100 mods of the decade (link below) and it mentioned... yung's better caves! !! after a little tweaking and testing, it seems this mod will supply my big cave systems needs! i was only using 1.6.4 before because of your thread about how it has bigger cave systems, but this mod covers that and apparently 1.12.2 has become the new 1.7.10 in terms of mods. yung's better caves might be interesting to you because it's kind of similar to your themastercaver's world mod, specifically the version 4 update where you added cave variants like more open spaces and stuff. here's a cool explanation about how it works from the dev. also have you heard that in 1.17 minecraft is finally updating their cave system generation? i'll link the youtube video i watched about it below. seems pretty cool!
i found that exploring big open caves with yung's better caves along with the hardcore darkness mod and optifine's fancy dynamic lighting is really awesome! i'm also trying out quark's stalagmites and sound filters which adds a cool reverb sound effect when you're in caves.
seeing how much you like caving, i thought of something. there's this old flash game called motherload you might like. it's strangely amazing and addicting! https://www.miniclip.com/games/motherload/en/#. other than that i want to say thanks for sharing your findings about how cave gen changed after 1.6.4. i swore i noticed i started finding more disappointing dead ends at some point. now i know what's what!
edit: ok HOLD ON A MINUTE. forget sound filters! it's too reverby. sound physics is AMAZING. you've gotta try it out man!! ! i not even kidding it's so cool! it sounds like you're legit in a cave you won't even believe it ! https://github.com/djpadbit/Sound-Physics
Funnily enough, I've just started a journey to creating world gen inspired by Motherload in 1.12. Increasing stone hardness the deeper you go to necessitate upgrading your tools to the next tier, a variety of ores that get more valuable the deeper you go, etc
Hello, this looks great but I can't make it work. All I get is a crash, I'm on Linux and Java 11 using the latest official launcher if that matters: