No, BTW versions must match between client and server. Connecting with a BTW client to a non BTW server will cause undefined behavior at best, and crash or refuse connection at worst.
Thanks to the following people who contributed to this release!
Hiracho
Dawnraider
Quanteus
Sockthing
/--General--/
Changed several hardcoded message strings to be exposed to translation files:
Steel beacon binding messages
Death messages
Cannot sleep in bed message
Too exhausted to hand crank message
Wind mill and water wheel placement error messages
Ancient manuscript use message
Updated some entries of the German translation.
Updated some entries of the Russian translation.
Fixed an issue sometimes causing the insides of hampers, ovens, and other blocks to render completely black.
/--Gameplay--/
-= General =-
Added the ability to stick swords into companion cubes.
Added strata variants for stone products (cobblestone, stone bricks, etc).
Fixed an issue where piston packing was ignoring metadata in recipes.
Fixed an issue where glowstone could not support falling blocks.
Fixed an issue where flowering carrots did not render weeds.
Fixed an issue where healing still hadn't actually been made faster.
-= Beds =-
Re-enabled beds. Yes really. Beds now simulate the world instead of skipping time. Thanks to Arminias for originally writing the code for this through his bed addon!
Added bedrolls as a new type of bed, crafted shapelessly with two wool knit and a string. Note that you will not regenerate health while sleeping in a bedroll.
Changed beds to no longer drop themselves when broken, instead dropping some of the components used in crafting it. However, health will regenerate while sleeping in a bed.
Changed beds to no longer explode in the nether or end, and instead simply prevent you from sleeping.
Changed beds to no longer set your spawn point. Steel beacons are still the only way to do this.
-= Candles =-
Added a new candle item and block which functions the same as vanilla's candles. Up to 4 candles may be placed in a single block, with the light level emitted increasing with the number of candles present.
Changed candles to be made with only a single piece of tallow, producing 4. This keeps the cost per light level the same as before, since candles now individually put off much less light unless combined.
Changed old candles to drop 4 new candles for consistency.
Removed the light output from redstone torches, repeaters, and comparators as rapid lighting updates in redstone circuits can severely impact performance. Note that redstone blocks will still output light for an early game option, and candles now provide new aesthetic low light options.
-= Death =-
Added the Corpse Eye, crafted with a soul urn, an ender pearl, and a piece of mystery meat, which functions similarly to an eye of ender, but instead points to the location of the player's last death.
Changed items dropped on death to last indefinitely, as long as you do not die again. If you die a second time, not counting soft respawns which put you at the same HCS, your items from your previous death will be lost.
Changed zombie villagers to drop mystery meat on death.
-= Snow =-
Added the ability for snow layers to be stacked.
Added the ability for snow to collect over time during a storm, increasing in depth to follow the terrain.
Changed snow to slow you by an amount based on the depth of the snow.
/--Addon API--/
Added a hook to define item textures based on state (like the bow drawing animation).
Added a hook to allow special-casing sticking tools into blocks they otherwise would not be able to be placed in.
Thanks to the following people who contributed to this release!
- Dawnraider
- Sockthing
/--Gameplay--/
- Fixed an issue where the game would crash when fishing
- Fixed an issue where beds did not properly speed up time
- Fixed an issue where the corpse eye was missing its texture
Thanks to the following people who contributed to this release!
- Dawnraider
- Arminias
- Zhil
- Hiracho
- Sockthing
/--General--/
- Refactored the entire mod in order to make development significantly smoother. Unfortunately, this means all addons will break with this release and will need to be updated. Details of the refactor are expanded upon below.
- Changed BTW to officially use fabric. Fabric loader is now required to install BTW.
- Fixed an issue where the addon finder would not properly locate addons located in the mods folder on linux.
- Fixed an issue where the game wasn't able to properly run on MacOS on Apple Silicon. Note that the experience is still not perfect and will likely need to wait for an update to MC 1.6 to be fully fixed but it is now significantly more playable.
- Fixed an issue where the game would crash on Java versions higher than 8. Now anything 16 and below will work (Java 17 is still not compatible).
/--Gameplay--/
-= General =-
- Added the ability for wheat to grow under light blocks.
- Changed nether portals to work in any size from 2x3 all the way up to 21x21 (the same as modern vanilla).
- Changed lily pads to be placeable again, but removed the ability to place other blocks against lily pads. This allows decorative use of lily pads without allowing for the exploits which originally led to them being disabled.
- Changed enchanting tables to be able to detect bookshelves an additional block up or down, for a total of 1 block below the enchanting table to 2 blocks above.
- Fixed an issue where there really was nothing to worry about regarding releasing souls into the environment without being captured.
- Fixed an issue where stone and cobblestone could drop the wrong metadata under certain circumstances.
- Fixed an issue where the config for large biomes HCS was not functioning.
- Fixed an issue where ovens and baskets would render with entirely black insides in certain circumstances (for real this time!).
- Fixed an issue where launching a firework rocket would crash the game.
- Fixed an issue where kiln blocks did not count as being mortared for the purpose of sticking loose blocks to them.
- Fixed an issue where the carrot on a stick was still using the old carrot for crafting.
- Fixed an issue where the time would reset on HCS on a server if two people were connected, instead of the intended one person.
-= Beds =-
- Fixed an issue where the player would be treated as being up to 3 blocks tall while in a bedroll, leading to mobs seeing the player over walls.
- Fixed an issue where the player would always face north in a bedroll.
- Fixed an issue where they player could wake up on the other side of a wall from a bed if that wall left open a block next to the corner of the bed.
- Fixed an issue where raytracing to find cursor placement did not function properly while in a bed.
-= Beacons =-
- Added spider eye blocks and slabs, made by packing 16 spider eyes.
- Added the ability to construct a beacon from spider eye blocks to prevent jungle spiders from spawning in the area.
- Changed (increased) the drop rate of spider eyes.
- Fixed an issue where mobs spawned from beacons ignored the updated mob spawning rules in BTW based on material instead of block shape.
-= Pistons =-
- Added the ability to push tile entities with pistons.
- Fixed an issue where lava pillows would leave lava behind when moved by a piston.
-= Snow =-
- Changed (reduced) the amount which snow height affects movement speed when walking through it.
- Fixed an issue where snow on slabs would render with invisible sides, although it does still render darker than intended.
-= Logs =-
- Added separate top textures per log type.
- Added separate chewed log variants per log type.
- Changed work stump conversion to be slightly faster, and to occur in two shorter steps rather than one single long step, in order to help with clarity as it could be difficult to tell if the player was doing the correct thing or not.
-= Wolves =-
- Changed wolves to no longer require food or produce dung while possessed.
- Changed wolves to reset their aggression when fed mystery meat.
- Fixed an issue where wolves would not always update their texture to properly reflect their aggression status.
- Fixed an issue where wolves aggro'd in a group would very quickly lose their aggression state if they could not reach the player.
-= Aesthetics =-
- Added the ability to stick things to the flat face of trapdoors.
- Added the ability to climb trapdoors which are above a ladder and attached to the same face.
- Changed trapdoor placement on flat surfaces to be more intuitive.
- Changed iron spikes and lightning rods to have a slightly larger base when multiple candles are resting on them.
- Changed fence gates to no longer require a block below when placing.
- Changed fences, walls, and panes to connect to any solid surface, not just solid blocks, and improved wall rendering.
- Changed panes to connect to walls.
- Changed mod stone fences to walls.
- Fixed an issue where mod fences rendered differently in inventory from vanilla fences.
/--Creative Mode--/
- Changed torches to no longer go out in inventory when in creative mode.
- Fixed an issue where pick block did not work on candles.
- Fixed an issue where blood wood bark did not appear in the creative menu.
/--Addon API--/
- Fixed an issue where addons still needed to be referenced from a base class. They will now be loaded and initialized automatically.
- Added packet handlers as a more elegant way to handle custom packets. The previous override methods in BTWAddon (formerly FCAddOn) have been deprecated and will be removed in a future release.
- Added custom entity and custom item entity handlers as a part of the above rework, which have hooks to allow addons to use them as well for custom entities.
- Added an effect handler to manage custom effects. The previous override method for clientAuxFX in BTWAddon has been deprecated and will be removed in a future release.
- Added a hook to blacklist placing blocks against another block.
- Added hooks for mining charges and explosions to define behavior after the block is set to air.
- Added hooks to define whether a block can connect to fences, walls, or panes towards a specific facing.
- Added a hook to detect when an entity steps through a block.
- Changed command registration to be done through BTWAddon instead of ServerCommandManager, which also fixes an issue where commands were being registered too late on servers.
- Changed beacon effects to be defined dynamically instead of being hardcoded to allow for addition of new effects.
- Added hooks to define new local ambient beacon effects (similar to how looting beacons function).
- Deprecated hooks for block, item, and entity replacement, as fabric mixins replace this behavior in a much more elegant and powerful way. These hooks will be removed in a future release.
/--Refactor--/
- Updated project compliance to Java 8.
- Moved all BTW classes into their own packages separate from Minecraft's.
- Renamed all classes. The FC prefix has been removed (as individual packages make the clarification redundant), and most classes have had their name hierarchy reversed (e.g. from FCBlockStoneRough to RoughStoneBlock).
- Renamed all methods to no longer use a capital letter. In almost all cases this is the only change to methods.
- Renamed all fields to remove hungarian notation. Also changed constants to use CONSTANT_CASE.
- Moved block and item definitions to their own classes, separate from the main BTW class.
/--General--/
- Added several new splash texts.
- Added translation entries for beacon respawn messages.
/--Gameplay--/
- Changed arrows to produce 2 per craft instead of 4 (broadhead arrows unchanged).
- Changed potatoes to use daily growth.
- Changed (reduced) the drop rate of extra potatoes, and removed poisonous potato drops.
- Fixed an issue where fully grown wheat generated incorrectly in villages, forcing to player to wait for the rest of it to grow.
- Fixed an issue where non oak log types would strip off too many layers when chiseling.
- Fixed an issue where an in progress work stump would always display the oak stump texture on top.
- Fixed an issue where work stumps always turned into oak chewed logs.
- Fixed an issue where the server would accelerate time as if all players were asleep when nobody was online.
- Fixed an issue where packed earth slabs would turn into loose dirt slabs when losing their anchor block.
- Fixed an issue where ladders would render incorrectly in certain directions.
- Fixed an issue where some effects didn't play sound.
- Fixed an issue where registering a command in singleplayer would crash the game.
- Fixed an issue where firework rockets without a firework star would still crash the game.
/--General--/
- Added support for Chinese character input. (Peakstep)
- Updated the German translation. (Sockthing)
- Updated the Turkish translation. (slzei)
/--Gameplay--/
- Added a config option to determine whether the changes to snow should be enabled, disabled by default. The snow changes need quite a bit more work to be properly ready, so for now I am disabling them by default, but leaving the option for those who want to keep it. Note that data is preserved between options, so it is completely safe to change the status of this config without any effect on worlds.
- Added new saplings which follow daily growth mechanics. Old saplings may be converted in a crafting grid.
- Added bubble particles which spawn around a fish hook when it is in a valid fishing location. (PlasmaFox)
- Added the ability to retrieve candles from a stack by right clicking with an empty hand.
- Added the ability to create hearty stew from chicken.
- Changed the trade to buy more sugar cane roots from the farmer to be guaranteed, gave farmers an extra trade slot from level 2 onwards to accommodate, and significantly reduced the trade cost. However, as a guaranteed trade, it will no longer grant experience.
- Changed how determining whether a body of water is large enough for fishing works to use a diamond instead of a square. The same size body of water is still required, but it should be slightly more forgiving if there are stray blocks near the corners of the checked area.
- Changed (increased) the amount of hunger restored by cured meat from 1 shank to 1.5.
- Changed saplings to be crushed by falling blocks.
- Changed undead mobs to no longer attempt to light on fire while it is raining to prevent the constant extinguish sounds. (PlasmaFox)
- Removed the nearby monster check for sleeping in a bed. In vanilla this was meant as a simulacrum of making sure your bed is safe, but since BTW simulates the world while you sleep, the mobs will just come and kill you :). (Cocona20xx)
- Fixed an issue where the screw pump melted down into too much iron. (PlasmaFox)
- Fixed an issue where the recipe for converting old carrots into new carrots did not work.
- Fixed an issue where white candles could not be crafted.
- Fixed an issue where animals would continue their eating animation while fleeing. (PlasmaFox)
- Fixed an issue where candles were missing an ignite sound when lighting them. (PlasmaFox)
/--Addon API--/
- Added a new TreeGrower class to help addons create new saplings, as well as to reduce code duplication between tree growth from saplings and world gen.
- Added hooks to add tree growers to existing saplings (and remove them).
- Added hooks for any sapling to have a 2x2 variant.
- Fixed an issue where the recipe for white candles was incorrect.
- Fixed an issue where the recipe for converting old saplings to new ones was incorrect.
- Fixed an issue where spruce and birch leaves dropped each others' saplings.
- Fixed an issue where piston shoveling a block which does not drop an item would cause the game to crash.
/-- Gameplay --/
- Added the ability to chop melons into mashed melon with an axe in a crafting grid.
- Fixed an issue causing problems with animals being able to pathfind to eat by reverting the previous change to make animals stop eating while fleeing.
- Fixed an issue where fishing could work in much smaller than intended bodies of water in some circumstances.
- Fixed an issue where saplings would not grow into a tree after maturing.
- Fixed an issue where the daily growth flag was not being updated properly on saplings.
/-- Addon API --/
- Fixed an issue where PillarBlock was marked as client only.
- Fixed (hopefully) an issue where getBiomeGenForCoords was not available on server. This should fix a crash caused by BTA in multiplayer.
is there any possibility of a 1.7.10 version at any point in the future? it's fine if not
Technically, we will be updating to 1.7 at some point (currently working on an update to 1.6). However, it won't be on forge. It will likely continue in its current state of not using any API, but if we do end up moving the mod onto an API it will be legacy fabric (and this will likely happen on 1.8 - the main reason for updating is technical improvements, and 1.8 is likely the best version for us to land on for that)
(and this will likely happen on 1.8 - the main reason for updating is technical improvements, and 1.8 is likely the best version for us to land on for that)
I'm very curious, what "technical improvements" does 1.8 have that warrants dealing with 10x the code complexity and resource usage and all the changes that were made to rendering and block handling? One reason I never updated past 1.6.4 is because 1.8 completely killed my performance, at least on the computer I had back then, with many threads complaining about it as well, including the creator of Optifine:
For comparison, despite all the features I've added to my own total conversion mod over the past 9 years it is more lightweight than vanilla 1.6.4, by a long shot (in fact, the baseline memory usage is only about half as high and a render distance that loads 2.5 times more chunks only uses 1.5 times as much in total, with a similar usage by the JVM):
The spike in CPU and memory usage is due to increasing the render distance from 8 to 16; you can see how quickly the game settles down from both generating and rendering new chunks (all chunks outside the original loaded area were newly generated), with a CPU usage that is only half as high by the end (the profiler graphs were taken with Vsync enabled while the screenshots were at max FPS):
A comparison of startup and world creation time between vanilla 1.6.4 and TMCW; despite being so much more complex TMCW was about twice as fast at generating a new world and the additions of hundreds of new textures did not significantly impact load time (when using the vanilla launcher it takes a lot longer because the launcher has a bug where it reinstalls the legacy assets on every launch; these were from within MCP, which displays the game window almost immediately when running startclient.bat):
Vanilla 1.6.4:
[19:11:13] 2023-04-15 19:11:13 [CLIENT] [INFO] Setting user: TheMasterCaver
[19:11:13] 2023-04-15 19:11:13 [CLIENT] [INFO] (Session ID is null)
[19:11:13] 2023-04-15 19:11:13 [CLIENT] [INFO] LWJGL Version: 2.9.0
[19:11:14] 2023-04-15 19:11:14 [CLIENT] [INFO] Reloading ResourceManager: Default, ModTextures
[19:11:14]
[19:11:14] Starting up SoundSystem...
[19:11:14] Initializing LWJGL OpenAL
[19:11:14] (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[19:11:14] OpenAL initialized.
[19:11:15]
[19:11:15] 2023-04-15 19:11:15 [CLIENT] [SEVERE] Realms: Server not available!
[19:11:48] 2023-04-15 19:11:48 [SERVER] [INFO] Starting integrated minecraft server version 1.6.4
[19:11:48] 2023-04-15 19:11:48 [SERVER] [INFO] Generating keypair
[19:11:49] 2023-04-15 19:11:49 [SERVER] [INFO] Converting map!
[19:11:49] 2023-04-15 19:11:49 [SERVER] [INFO] Scanning folders...
[19:11:49] 2023-04-15 19:11:49 [SERVER] [INFO] Total conversion count is 0
[19:11:49] 2023-04-15 19:11:49 [SERVER] [INFO] Preparing start region for level 0
[19:11:50] 2023-04-15 19:11:50 [SERVER] [INFO] Preparing spawn area: 12%
[19:11:51] 2023-04-15 19:11:51 [SERVER] [INFO] Preparing spawn area: 36%
[19:11:52] 2023-04-15 19:11:52 [SERVER] [INFO] Preparing spawn area: 60%
[19:11:53] 2023-04-15 19:11:53 [SERVER] [INFO] Preparing spawn area: 86%
[19:11:54] 2023-04-15 19:11:54 [SERVER] [INFO] TheMasterCaver[/127.0.0.1:0] logged in with entity id 266 at (-94.5, 64.0, 244.5)
[19:11:54] 2023-04-15 19:11:54 [SERVER] [INFO] TheMasterCaver joined the game
TMCW:
[18:21:25] 2023-04-15 18:21:25 [CLIENT] [INFO] Setting user: TheMasterCaver
[18:21:25] 2023-04-15 18:21:25 [CLIENT] [INFO] (Session ID is null)
[18:21:26] 2023-04-15 18:21:26 [CLIENT] [INFO] LWJGL Version: 2.9.0
[18:21:26] 2023-04-15 18:21:26 [CLIENT] [INFO] Reloading ResourceManager: Default, ModTextures
[18:21:27]
[18:21:27] Starting up SoundSystem...
[18:21:27] Initializing LWJGL OpenAL
[18:21:27] (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[18:21:27] OpenAL initialized.
[18:21:27]
[18:22:04] 2023-04-15 18:22:04 [SERVER] [INFO] Starting integrated minecraft server version 1.6.4
[18:22:04] 2023-04-15 18:22:04 [SERVER] [INFO] Generating keypair
[18:22:04] 2023-04-15 18:22:04 [SERVER] [INFO] Preparing start region for level 0
[18:22:05] 2023-04-15 18:22:05 [SERVER] [INFO] Preparing spawn area: 19%
[18:22:06] 2023-04-15 18:22:06 [SERVER] [INFO] Preparing spawn area: 58%
[18:22:07] 2023-04-15 18:22:07 [SERVER] [INFO] Preparing spawn area: 99%
[18:22:07] 2023-04-15 18:22:07 [SERVER] [INFO] TheMasterCaver[/127.0.0.1:0] logged in with entity id 137 at (-245.5, 70.0, -253.5)
[18:22:07] 2023-04-15 18:22:07 [SERVER] [INFO] TheMasterCaver joined the game
A more detailed look at resource usage in vanilla 1.6.4 and TMCW, looking at objects by retained size (approximate memory usage):
Vanilla 1.6.4; total memory usage was about 111.3 MB, with 61.5 MB (55.3%) used by loaded chunks and 49.8 MB used by everything else:
TMCW; total memory usage was about 164.4 MB, with 137.6 MB (83.7%) used by loaded chunks and 26.8 MB used by everything else; and yes, this suggests that it needs only half the memory when subtracting what is used by loaded chunks, despite all the content it adds. Some of the biggest differences can be seen in the total size of arrays; chunk data is stored in byte arrays, which understandably increased, while arrays like Object and int show significant decreases (one reason is because I changed the chunk heightmap from an int to short, which explains the appearance of the latter):
Perhaps my simplest optimization (if not really affecting allocation rates, which are more important) was simply removing this field from Minecraft.java (it is freed on a client-side out-of-memory error, which frees memory anyway and I did not see any consequences from intentionally causing an OOME):
/** A 10MiB preallocation to ensure the heap is reasonably sized. */
public static byte[] memoryReserve = new byte[10485760];
How did 1.8 become so much larger despite adding only a fraction of the content (this is not a strict 1:1 comparison since I deleted META-INF, reducing the size; on the other hand, a majority of the vanilla code that I modified was refactored into classes with different names so the originals were not overwritten, inflating the size of the jar):
I simply can't begin to comprehend how people can say things like this ("only", as if 6-8 GB is nothing when I could play on a 20 year old computer, which is not far from what I actually started playing on (I did have some "memory" issues but allocating less than the then-default of 1 GB fixed it; I've even seen people with 64 bit systems (and Java) have similar issues due to allocating too much), or what Mojang recommended in the 1.6 days - only to noticeably bump it up by 1.8):
Maybe you are referring to 1.8's custom block models / resource pack but I'd never forgo everything else just for that; if I had a very compelling reason to add it I'd implement my own version (in a much more efficient manner, as I've seen this be cited as why 1.8+ is so resource-heavy). 1.8 also added "platform independent" occlusion culling (as opposed to highly NVIDIA-specific "Advanced OpenGL" / hardware occlusion queries) but it barely works (why are there still 130 sections being rendered in this screenshot when most should be hidden?)
That said, even 1.6 has some issues that need to be taken care of (the second one is only an issue for larger worlds but I've calculated it would more than double the memory usage of my first world; my solution was to simply disable structure saving for mineshafts (other structures do benefit from it, e.g. without it they can generate split vertically if they are partially generated between sessions due to not saving the average ground level):
Also, there is an issue with versions from 1.0.0-1.7.10 on recent Intel graphics drivers but much as has been done for versions prior to 1.6 on M1 Macs a patch should be made instead of updating (it should be very possible if it only affects these versions and I don't know why nobody else has attempted to fix it to my knowledge; if I had an affected GPU I'd fix it myself, comparing the source for the oldest/newest affected versions around 1.0.0, which shouldn't differ that much in rendering).
The changes to rendering and block handling are precisely the technical improvements we want. The 1.5-1.7 codebase is super manual and really error prone. The 1.8 codebase absolutely is more complex, but that complexity makes it way more robust. I'd much rather have more complex development up front that covers my ass in the long term than deal with doing everything manually in a super error-prone way in versions before 1.8. The custom block models are a side benefit, but definitely nice, since making custom block models for blocks before 1.8 is a pain in the ass.
Better than Wolves also makes huge optimizations and bugfixes to the vanilla codebase already, and once we update that will continue to happen.
This is the mod I started playing minecraft with. I'm so glad to see that it's getting updated and may some day get API support. Last time I tried to get the original BTW installed I never could get it to work and gave up.
I love that the creator of this mod hates wolves so much that they effectively rebuilt the game. And it's vey nice that you and the community are continuing this. Meanwhile, it's been 12 years and wolves have not gotten any additions, done anything to the game or really been touched as a feature. The closest they got was making it so they die less much. Now, ocelots... They've gotten too many improvements if you ask me. And far more disimprovements now, too.
One downside of 1.7+ versions is that the density of cave generation was seriously reduced.
Are you considering to re-implement pre-1.7 cave generation (at least as a world-gen option) if you update to 1.7 and beyond?
BTW heavily relies on the highly interconnected nature of caves. Due to traversing through the unbreakable dark-stone and the terror that pitch black dark intersecting caverns gives.
One downside of 1.7+ versions is that the density of cave generation was seriously reduced.
Are you considering to re-implement pre-1.7 cave generation (at least as a world-gen option) if you update to 1.7 and beyond?
This is one of the easiest changes to revert, you literally only need to change two hardcoded numbers in the "MapGenCaves" class:
// 1.6.4
protected void recursiveGenerate(World par1World, int par2, int par3, int par4, int par5, byte[] par6ArrayOfByte)
{
int var7 = this.rand.nextInt(this.rand.nextInt(this.rand.nextInt(40) + 1) + 1);
if (this.rand.nextInt(15) != 0) var7 = 0;
// 1.7 (method may not have the same name)
int var7 = this.rand.nextInt(this.rand.nextInt(this.rand.nextInt(15) + 1) + 1);
if (this.rand.nextInt(7) != 0) var7 = 0;
This resulted in a 64% reduction in the average density and density variation of cave systems, while making them 2.14 times more common, leading to a much more uniform distribution of caves that is quite apparent even if the overall cave density only decreased by around 15% when factoring in the decrease in overlap:
Several charts of how cave density varies (the size of an individual cave system can be up to 4 times the initial size set in the code as there is a 25% chance of a circular room which in turn adds 0-3 additional tunnels for up to 4 total):
A much bigger difference is the frequency of mineshafts, which was reduced by 60%, and they are largely responsible for making caves highly interconnected (this is quite apparent when comparing the area near 0,0 to further away as they become less common within 1280 blocks of the origin); in this case the value is within the "MapGenMineshaft" class:
public class MapGenMineshaft extends MapGenStructure
{
private double field_82673_e = 0.01D; // was changed to 0.004 in 1.7
Examples (shamefully, ChunkBase removed support for pre-1.7 versions so you have to use archived pages):
In my own mods I removed the reduction in frequency near the origin, which is performed within the "canSpawnStructuresAtCoords" method, while adding code that counts the number of caves nearby; you could also leave the frequency alone while removing it (they will now be more common within 512 blocks of the origin but rarer further away):
protected boolean canSpawnStructureAtCoords(int par1, int par2)
{
return this.rand.nextDouble() < this.field_82673_e && this.rand.nextInt(80) < Math.max(Math.abs(par1), Math.abs(par2));
}
// Possible change (preserves the structure of existing mineshafts, they are also identical between 1.6-1.7)
return this.rand.nextDouble() < this.field_82673_e && this.rand.nextInt(80) < 80;
(another change would be to change them to some sort of grid-based placement system, as with other structures, so they don't overlap so much, as I did in my own mods)
There is also yet another issue with 1.7; they made dungeons twice as rare by doubling their altitude range from 128 to 256, despite no terrain to take advantage of (they might very rarely generate in the side of mountain above y=128 but caves don't generate that high; notably, dungeons are most commonly found connected to mineshafts because of their shape. The Wiki erroneously claims that "Changes in cavern generation now make dungeon considerably rarer" but that change alone actually had the opposite effect; I rarely find them in the cores of denser cave systems because there isn't enough room):
// ChunkProviderGenerate.populate()
for (var12 = 0; var12 < 8; ++var12)
{
var13 = var4 + this.rand.nextInt(16) + 8;
var14 = this.rand.nextInt(128); // sets altitude range to 0-127 (increased to 256 / 0-255 in 1.7)
int var15 = var5 + this.rand.nextInt(16) + 8;
(new WorldGenDungeons()).generate(this.worldObj, this.rand, var13, var14, var15);
}
If you really want to be complete, changing the following code in "MapGenRavine" will make them generate identically to pre-1.7 versions (yet another totally unnecessary change from 128 to 256 - the top of ravines never exceeds about y=90 so this change was completely pointless. Otherwise, they still have the same locations, size, altitude, and initial direction, just differ in the shape of the ravine itself):
// MapGenRavine.generateRavine()
for (int var28 = 0; var28 < 128; ++var28) // changed to 256 in 1.7 (has no actual effect due to no change in altitude)
{
if (var28 == 0 || var19.nextInt(3) == 0)
{
var27 = 1.0F + var19.nextFloat() * var19.nextFloat() * 1.0F;
}
this.field_75046_d[var28] = var27 * var27;
}
(to this end, I have no idea if BTW made any changes to the underground, for all I know it was completely overhauled in a similar manner to my own mods; I could also suggest all sorts of ways to enhance them)
All in all, I still can't imagine touching 1.8+ for any reason:
I actually want to add; This performs amazingly well, even better than other versions coked up with optimization mods. What did you do!? My refresh rate is 144FPS and despite other versions often reporting that, I feel like the FPS stutters significantly at times. Not with TMCW, it's buttery smooth basically the whole time.
"What did you do?!" Not as much as they might think, just because newer versions are horribly optimized and require sophisticated optimization mods like Sodium (which goes far beyond mods like Optifine), churning through memory like no tomorrow and being 10x more complex than necessary (1.8 led to the single biggest relative increase in the size of the Minecraft jar of any version, even the hundreds of features I've added to 1.6.4 still had less of an impact, not to mention all the dead vanilla code in the jar as I completely replaced a lot of classes with my own, only partly offset by deleting META-INF).
Versions 2.1.0 and 2.1.1 have been released! (Forgot to post the updates over here)
MCF really doesn't like displaying this changelog in a readable format as it has a lot of long entries, so I recommend reading the changelog on github, through the download links.
Also note that 2.1.1 fixes a critical bug with 2.1.0, so downloading 2.1.0 is not recommended, but the link has been left for posterity (and for changelog visibility).
- Fixed an issue where a null pointer error with pistons could cause chunks to not save correctly.
- Fixed an issue where block breaking by hand was slower in relaxed mode instead of faster due to an order of operations issue.
/--General--/
- Changed status effects names such as peckish to be localized instead of hardcoded.
/--Gameplay--/
-= General =-
- Overhauled difficulty selection as a way to better provide alternate methods of play, without compromising the curated experience BTW offers. Difficulty levels are now stored per-world and can be decided at world creation, in addition to the options menu.
--- Standard mode: The default mode of play, and the one players have become familiar with over the years.
--- Relaxed mode: A slightly less punishing experience, while still maintaining the same depth and meaningful gameplay as standard mode. Overall gameplay length for optimal play is comparable to standard mode, but it should be easier for players to get their feet under them.
- Changed the difficulty command to affect the new system of difficulty modes. It can be used to change the current mode by typing in the mode's name, or to view the current mode by using the command without arguments. This may be used at any time in singleplayer, without requiring cheats, or by operators in multiplayer.
- Removed the ability to change the difficulty from the main menu given that difficulty is now saved per-world.
- Added the ability for sugar cane to spawn in rivers. Given that finding sugar cane no longer lets you expand a farm infinitely, and given how vital it is for early game storage, I felt it appropriate to make it somewhat more common. Swamps and jungles are still the most effective places to find sugar cane, however.
- Added the Tangled Web as a new item which drops if a spider's web fails to find a valid location to place itself as a block. The tangled web may be crafted with a sharp stone and then worked into a single string, or it may be cut directly into two string in a crafting grid with shears.
- Added the ability to make bedrolls from hemp fibers.
- Added Sinew as an alternative to string for crafting tools (stone tools, ladders, bows, bedrolls, etc). Sinew can be obtained by crafting meat with a sharp stone or chisel. This is intended as a way to help assist in cases where string availability is low by allowing the player to sacrifice some food to create more string.
- Added the ability to make potash from straw.
- Added the ability to mill zombie and creeper heads into rotten flesh and nitre, respectively.
- Added the ability to display multiple status effects (e.g. peckish and hurt) at the same time on the HUD, instead of only the highest priority.
- Changed the most severe hunger penalty from "dying" to "starving", and the second most severe from "starving" to "emaciated", to distinguish from the health status effect also called "dying".
- Changed mobs to once again drop burned meat when they die while on fire in standard mode.
- Changed fire aspect to be available again through the vanilla enchanting table.
- Changed wheat crops to harvest the entire plant when breaking the top block, and changed the selection box to include the entire plant. Wheat was never able to grow its top back, so allowing breaking only the top block only served to confuse players.
- Changed the recipe for obtaining seeds from wheat manually to also output straw to match the hopper recipe for doing so automatically.
- Changed (increased) the radius which a lightning rod protects.
- Changed how lightning is attracted to blocks (and entities). Previously, areas protected by blocks other than lightning rods were not actually fully protected, but with this change standard pillars of blocks should be enough to protect a small area, while lightning rods can be used to cover a much larger area.
- Changed how mob spawning checks for leaves internally to improve behavior with non-vanilla leaves.
- Changed ocelots to only spawn on leaves, and to require light to spawn, to stop them from spawning inside chicken pens, and allow preventing their spawns within jungle spider farms.
- Changed mobs to not spawn on wool, including beds and bedrolls.
- Fixed an issue where mobs were able to spawn on wicker.
- Fixed an issue where wolves would become permanently angry at the player when attacked by another mob. (Hiracho)
- Fixed an issue where saplings only dropped as an item when fully mature. (Hiracho)
- Fixed an issue where looting did not apply consistently to head drops from mobs. (Hiracho)
- Fixed an issue where sprinting using ctrl did not consume as much hunger as it should. (Arminias)
- Fixed an issue where a player who died while on fire while also bound to a steel beacon would drop burned meat instead of rotten flesh.
- Fixed an issue where blood wood trees checked against the biome instead of the dimension when checking for whether they were in the nether, causing issues with alternate nether biomes from addons.
- Fixed an issue where using pick block on a burning campfire gave a burning campfire as an item.
- Fixed an issue where several crafting recipes did not work for strata stone variants.
- Fixed an issue where cobblestone walls always dropped first strata stones.
- Fixed an issue where sparse grass and mycelium returned fully grown versions when silk touched.
- Fixed an issue where mushroom cap blocks were named incorrectly.
- Fixed an issue where mandatory trades for villagers did not always properly refresh.
- Fixed an issue where the mandatory status of a trade was not properly written to or read from NBT.
- Fixed an issue where mandatory trades displayed a "+" in the gui, despite not giving xp. Note that this fix may not apply until the trade is completed and refreshed due to the above NBT issue.
- Fixed an issue in multiplayer where attempting to dye armor would crash the client. (Arminias)
- Added additional logic to handle syncing players in multiplayer, which should hopefully fix the invisible players issue. (yany)
-= Relaxed Mode =-
Relaxed mode is designed to increase accessibility, and provide a slightly less challenging experience while still maintaining the depth and richness of standard mode, largely by reducing punishments for failure in order to make recovery easier. Focus is generally on decreasing some of the pressure caused by health, hunger, and time management, as well as some of the more punishing failure states, without affecting complexity or depth of mechanics.
Relaxed mode contains the following changes:
- Health regeneration is increased.
- Hunger costs associated with some particularly taxing actions are decreased. Actions affected are: Jumping, sprinting, swimming, using a hand crank, and starting a fire.
- Modifiers from health and hunger are less punishing.
- Hardcore spawn maximum radius does not increase.
- Reduced radii for looted temples and abandoned villages, both to decrease the distance required to travel in order to find them, and to make it more likely to find interesting structures when respawning after a death.
- Lightning strikes do not start fires.
- Nethercoal torches do not start fires. Note that this is accomplished through a separate block id, so any torches placed in relaxed mode will never start fires, even if a world is changed to standard mode. Torches placed in standard mode will automatically convert to relaxed mode torches over time, and will not start fires while in relaxed mode.
- Pigmen do not become angry when hit by ghast fireballs.
- Jungle spiders do not attack unless provoked, and deal food poisoning for a shorter duration on hit.
- Squids do not attack players who are not in water, or who are in boats, even at night.
- Cows deal reduced damage and knockback when kicking.
- Cows do not panic if the player attempts to milk them when they aren't ready.
- Mobs drop cooked meat instead of burned meat when dying while on fire.
- Blocks are mined slightly faster when mining without the correct tool.
- Blocks can be placed while in the air.
- Animals do not startle when placing or breaking blocks.
- Animals and wolves will not die when starving, although you still need to keep them fed to get anything from them. Starving tamed wolves will also not turn hostile.
- Weeds will not kill plants, although weeds will still cause plants to stop growing when present.
- Items dropped on death are never destroyed, even on subsequent deaths.
/--Addon API--/
- Added a new method to WorldData to initialize default global data when a world is created.
- Added hooks for addons to add their own difficulty levels. Difficulty levels are also designed to be mixin friendly in order to modify existing difficulty levels (e.g. by adding new behavior controlled by difficulty, or editing values for behaviors in existing difficulties).
- Changed how status effects from health, hunger, etc are handled internally to make them extensible to addon authors.
- Changed how crashes occur due to an invalid mob being spawned to make the generated crash report more useful in debugging.
One downside of 1.7+ versions is that the density of cave generation was seriously reduced.
Are you considering to re-implement pre-1.7 cave generation (at least as a world-gen option) if you update to 1.7 and beyond?
BTW heavily relies on the highly interconnected nature of caves. Due to traversing through the unbreakable dark-stone and the terror that pitch black dark intersecting caverns gives.
Best of luck with all the upgrades!
Yes, we will be reverting the cave changes when we update to 1.7
Does BTW compatible with vanilla/bukkit servers?
No, BTW versions must match between client and server. Connecting with a BTW client to a non BTW server will cause undefined behavior at best, and crash or refuse connection at worst.
Version 1.4.0 has been released!
Download here
Thanks to the following people who contributed to this release!
/--General--/
/--Gameplay--/
-= General =-
-= Beds =-
-= Candles =-
-= Death =-
-= Snow =-
/--Addon API--/
Version 1.4.1 has been released!
Download here
Thanks to the following people who contributed to this release!
- Dawnraider
- Sockthing
/--Gameplay--/
- Fixed an issue where the game would crash when fishing
- Fixed an issue where beds did not properly speed up time
- Fixed an issue where the corpse eye was missing its texture
Version 2.0.0 has been released!
Download here
Thanks to the following people who contributed to this release!
- Dawnraider
- Arminias
- Zhil
- Hiracho
- Sockthing
/--General--/
- Refactored the entire mod in order to make development significantly smoother. Unfortunately, this means all addons will break with this release and will need to be updated. Details of the refactor are expanded upon below.
- Changed BTW to officially use fabric. Fabric loader is now required to install BTW.
- Fixed an issue where the addon finder would not properly locate addons located in the mods folder on linux.
- Fixed an issue where the game wasn't able to properly run on MacOS on Apple Silicon. Note that the experience is still not perfect and will likely need to wait for an update to MC 1.6 to be fully fixed but it is now significantly more playable.
- Fixed an issue where the game would crash on Java versions higher than 8. Now anything 16 and below will work (Java 17 is still not compatible).
/--Gameplay--/
-= General =-
- Added the ability for wheat to grow under light blocks.
- Changed nether portals to work in any size from 2x3 all the way up to 21x21 (the same as modern vanilla).
- Changed lily pads to be placeable again, but removed the ability to place other blocks against lily pads. This allows decorative use of lily pads without allowing for the exploits which originally led to them being disabled.
- Changed enchanting tables to be able to detect bookshelves an additional block up or down, for a total of 1 block below the enchanting table to 2 blocks above.
- Fixed an issue where there really was nothing to worry about regarding releasing souls into the environment without being captured.
- Fixed an issue where stone and cobblestone could drop the wrong metadata under certain circumstances.
- Fixed an issue where the config for large biomes HCS was not functioning.
- Fixed an issue where ovens and baskets would render with entirely black insides in certain circumstances (for real this time!).
- Fixed an issue where launching a firework rocket would crash the game.
- Fixed an issue where kiln blocks did not count as being mortared for the purpose of sticking loose blocks to them.
- Fixed an issue where the carrot on a stick was still using the old carrot for crafting.
- Fixed an issue where the time would reset on HCS on a server if two people were connected, instead of the intended one person.
-= Beds =-
- Fixed an issue where the player would be treated as being up to 3 blocks tall while in a bedroll, leading to mobs seeing the player over walls.
- Fixed an issue where the player would always face north in a bedroll.
- Fixed an issue where they player could wake up on the other side of a wall from a bed if that wall left open a block next to the corner of the bed.
- Fixed an issue where raytracing to find cursor placement did not function properly while in a bed.
-= Beacons =-
- Added spider eye blocks and slabs, made by packing 16 spider eyes.
- Added the ability to construct a beacon from spider eye blocks to prevent jungle spiders from spawning in the area.
- Changed (increased) the drop rate of spider eyes.
- Fixed an issue where mobs spawned from beacons ignored the updated mob spawning rules in BTW based on material instead of block shape.
-= Pistons =-
- Added the ability to push tile entities with pistons.
- Fixed an issue where lava pillows would leave lava behind when moved by a piston.
-= Snow =-
- Changed (reduced) the amount which snow height affects movement speed when walking through it.
- Fixed an issue where snow on slabs would render with invisible sides, although it does still render darker than intended.
-= Logs =-
- Added separate top textures per log type.
- Added separate chewed log variants per log type.
- Changed work stump conversion to be slightly faster, and to occur in two shorter steps rather than one single long step, in order to help with clarity as it could be difficult to tell if the player was doing the correct thing or not.
-= Wolves =-
- Changed wolves to no longer require food or produce dung while possessed.
- Changed wolves to reset their aggression when fed mystery meat.
- Fixed an issue where wolves would not always update their texture to properly reflect their aggression status.
- Fixed an issue where wolves aggro'd in a group would very quickly lose their aggression state if they could not reach the player.
-= Aesthetics =-
- Added the ability to stick things to the flat face of trapdoors.
- Added the ability to climb trapdoors which are above a ladder and attached to the same face.
- Changed trapdoor placement on flat surfaces to be more intuitive.
- Changed iron spikes and lightning rods to have a slightly larger base when multiple candles are resting on them.
- Changed fence gates to no longer require a block below when placing.
- Changed fences, walls, and panes to connect to any solid surface, not just solid blocks, and improved wall rendering.
- Changed panes to connect to walls.
- Changed mod stone fences to walls.
- Fixed an issue where mod fences rendered differently in inventory from vanilla fences.
/--Creative Mode--/
- Changed torches to no longer go out in inventory when in creative mode.
- Fixed an issue where pick block did not work on candles.
- Fixed an issue where blood wood bark did not appear in the creative menu.
/--Addon API--/
- Fixed an issue where addons still needed to be referenced from a base class. They will now be loaded and initialized automatically.
- Added packet handlers as a more elegant way to handle custom packets. The previous override methods in BTWAddon (formerly FCAddOn) have been deprecated and will be removed in a future release.
- Added custom entity and custom item entity handlers as a part of the above rework, which have hooks to allow addons to use them as well for custom entities.
- Added an effect handler to manage custom effects. The previous override method for clientAuxFX in BTWAddon has been deprecated and will be removed in a future release.
- Added a hook to blacklist placing blocks against another block.
- Added hooks for mining charges and explosions to define behavior after the block is set to air.
- Added hooks to define whether a block can connect to fences, walls, or panes towards a specific facing.
- Added a hook to detect when an entity steps through a block.
- Changed command registration to be done through BTWAddon instead of ServerCommandManager, which also fixes an issue where commands were being registered too late on servers.
- Changed beacon effects to be defined dynamically instead of being hardcoded to allow for addition of new effects.
- Added hooks to define new local ambient beacon effects (similar to how looting beacons function).
- Deprecated hooks for block, item, and entity replacement, as fabric mixins replace this behavior in a much more elegant and powerful way. These hooks will be removed in a future release.
/--Refactor--/
- Updated project compliance to Java 8.
- Moved all BTW classes into their own packages separate from Minecraft's.
- Renamed all classes. The FC prefix has been removed (as individual packages make the clarification redundant), and most classes have had their name hierarchy reversed (e.g. from FCBlockStoneRough to RoughStoneBlock).
- Renamed all methods to no longer use a capital letter. In almost all cases this is the only change to methods.
- Renamed all fields to remove hungarian notation. Also changed constants to use CONSTANT_CASE.
- Moved block and item definitions to their own classes, separate from the main BTW class.
Version 2.0.1 has been released!
Download here
/--General--/
- Added several new splash texts.
- Added translation entries for beacon respawn messages.
/--Gameplay--/
- Changed arrows to produce 2 per craft instead of 4 (broadhead arrows unchanged).
- Changed potatoes to use daily growth.
- Changed (reduced) the drop rate of extra potatoes, and removed poisonous potato drops.
- Fixed an issue where fully grown wheat generated incorrectly in villages, forcing to player to wait for the rest of it to grow.
- Fixed an issue where non oak log types would strip off too many layers when chiseling.
- Fixed an issue where an in progress work stump would always display the oak stump texture on top.
- Fixed an issue where work stumps always turned into oak chewed logs.
- Fixed an issue where the server would accelerate time as if all players were asleep when nobody was online.
- Fixed an issue where packed earth slabs would turn into loose dirt slabs when losing their anchor block.
- Fixed an issue where ladders would render incorrectly in certain directions.
- Fixed an issue where some effects didn't play sound.
- Fixed an issue where registering a command in singleplayer would crash the game.
- Fixed an issue where firework rockets without a firework star would still crash the game.
Version 2.0.2 has been released!
Download here
/--General--/
- Added support for Chinese character input. (Peakstep)
- Updated the German translation. (Sockthing)
- Updated the Turkish translation. (slzei)
/--Gameplay--/
- Added a config option to determine whether the changes to snow should be enabled, disabled by default. The snow changes need quite a bit more work to be properly ready, so for now I am disabling them by default, but leaving the option for those who want to keep it. Note that data is preserved between options, so it is completely safe to change the status of this config without any effect on worlds.
- Added new saplings which follow daily growth mechanics. Old saplings may be converted in a crafting grid.
- Added bubble particles which spawn around a fish hook when it is in a valid fishing location. (PlasmaFox)
- Added the ability to retrieve candles from a stack by right clicking with an empty hand.
- Added the ability to create hearty stew from chicken.
- Changed the trade to buy more sugar cane roots from the farmer to be guaranteed, gave farmers an extra trade slot from level 2 onwards to accommodate, and significantly reduced the trade cost. However, as a guaranteed trade, it will no longer grant experience.
- Changed how determining whether a body of water is large enough for fishing works to use a diamond instead of a square. The same size body of water is still required, but it should be slightly more forgiving if there are stray blocks near the corners of the checked area.
- Changed (increased) the amount of hunger restored by cured meat from 1 shank to 1.5.
- Changed saplings to be crushed by falling blocks.
- Changed undead mobs to no longer attempt to light on fire while it is raining to prevent the constant extinguish sounds. (PlasmaFox)
- Removed the nearby monster check for sleeping in a bed. In vanilla this was meant as a simulacrum of making sure your bed is safe, but since BTW simulates the world while you sleep, the mobs will just come and kill you :). (Cocona20xx)
- Fixed an issue where the screw pump melted down into too much iron. (PlasmaFox)
- Fixed an issue where the recipe for converting old carrots into new carrots did not work.
- Fixed an issue where white candles could not be crafted.
- Fixed an issue where animals would continue their eating animation while fleeing. (PlasmaFox)
- Fixed an issue where candles were missing an ignite sound when lighting them. (PlasmaFox)
/--Addon API--/
- Added a new TreeGrower class to help addons create new saplings, as well as to reduce code duplication between tree growth from saplings and world gen.
- Added hooks to add tree growers to existing saplings (and remove them).
- Added hooks for any sapling to have a 2x2 variant.
Version 2.0.3 has been released!
Download here
- Fixed an issue where the recipe for white candles was incorrect.
- Fixed an issue where the recipe for converting old saplings to new ones was incorrect.
- Fixed an issue where spruce and birch leaves dropped each others' saplings.
- Fixed an issue where piston shoveling a block which does not drop an item would cause the game to crash.
is there any possibility of a 1.7.10 version at any point in the future? it's fine if not
Version 2.0.4 has been released!
Download here
/-- Gameplay --/
- Added the ability to chop melons into mashed melon with an axe in a crafting grid.
- Fixed an issue causing problems with animals being able to pathfind to eat by reverting the previous change to make animals stop eating while fleeing.
- Fixed an issue where fishing could work in much smaller than intended bodies of water in some circumstances.
- Fixed an issue where saplings would not grow into a tree after maturing.
- Fixed an issue where the daily growth flag was not being updated properly on saplings.
/-- Addon API --/
- Fixed an issue where PillarBlock was marked as client only.
- Fixed (hopefully) an issue where getBiomeGenForCoords was not available on server. This should fix a crash caused by BTA in multiplayer.
Technically, we will be updating to 1.7 at some point (currently working on an update to 1.6). However, it won't be on forge. It will likely continue in its current state of not using any API, but if we do end up moving the mod onto an API it will be legacy fabric (and this will likely happen on 1.8 - the main reason for updating is technical improvements, and 1.8 is likely the best version for us to land on for that)
I'm very curious, what "technical improvements" does 1.8 have that warrants dealing with 10x the code complexity and resource usage and all the changes that were made to rendering and block handling? One reason I never updated past 1.6.4 is because 1.8 completely killed my performance, at least on the computer I had back then, with many threads complaining about it as well, including the creator of Optifine:
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/1272953-optifine-hd-fps-boost-dynamic-lights-shaders-and?comment=43491 (describes the code as "an over-engineered monster full of factories, builders, bakeries, baked items, managers, dispatchers, states, enums and layers" which allocates objects "like there is no tomorrow")
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/1272953-optifine-hd-fps-boost-dynamic-lights-shaders-and?comment=43757 (more detailed description of the issues with 1.8, mainly how it allocates and discards objects like crazy, at rates of an order of magnitude higher than older versions; they refer to "pre-1.3" as "old" but I see the rates they cite in vanilla 1.6.4)
For comparison, despite all the features I've added to my own total conversion mod over the past 9 years it is more lightweight than vanilla 1.6.4, by a long shot (in fact, the baseline memory usage is only about half as high and a render distance that loads 2.5 times more chunks only uses 1.5 times as much in total, with a similar usage by the JVM):
The spike in CPU and memory usage is due to increasing the render distance from 8 to 16; you can see how quickly the game settles down from both generating and rendering new chunks (all chunks outside the original loaded area were newly generated), with a CPU usage that is only half as high by the end (the profiler graphs were taken with Vsync enabled while the screenshots were at max FPS):
A comparison of startup and world creation time between vanilla 1.6.4 and TMCW; despite being so much more complex TMCW was about twice as fast at generating a new world and the additions of hundreds of new textures did not significantly impact load time (when using the vanilla launcher it takes a lot longer because the launcher has a bug where it reinstalls the legacy assets on every launch; these were from within MCP, which displays the game window almost immediately when running startclient.bat):
Vanilla 1.6.4:
TMCW:
A more detailed look at resource usage in vanilla 1.6.4 and TMCW, looking at objects by retained size (approximate memory usage):
Vanilla 1.6.4; total memory usage was about 111.3 MB, with 61.5 MB (55.3%) used by loaded chunks and 49.8 MB used by everything else:
TMCW; total memory usage was about 164.4 MB, with 137.6 MB (83.7%) used by loaded chunks and 26.8 MB used by everything else; and yes, this suggests that it needs only half the memory when subtracting what is used by loaded chunks, despite all the content it adds. Some of the biggest differences can be seen in the total size of arrays; chunk data is stored in byte arrays, which understandably increased, while arrays like Object and int show significant decreases (one reason is because I changed the chunk heightmap from an int to short, which explains the appearance of the latter):
Perhaps my simplest optimization (if not really affecting allocation rates, which are more important) was simply removing this field from Minecraft.java (it is freed on a client-side out-of-memory error, which frees memory anyway and I did not see any consequences from intentionally causing an OOME):
How did 1.8 become so much larger despite adding only a fraction of the content (this is not a strict 1:1 comparison since I deleted META-INF, reducing the size; on the other hand, a majority of the vanilla code that I modified was refactored into classes with different names so the originals were not overwritten, inflating the size of the jar):
I simply can't begin to comprehend how people can say things like this ("only", as if 6-8 GB is nothing when I could play on a 20 year old computer, which is not far from what I actually started playing on (I did have some "memory" issues but allocating less than the then-default of 1 GB fixed it; I've even seen people with 64 bit systems (and Java) have similar issues due to allocating too much), or what Mojang recommended in the 1.6 days - only to noticeably bump it up by 1.8):
Maybe you are referring to 1.8's custom block models / resource pack but I'd never forgo everything else just for that; if I had a very compelling reason to add it I'd implement my own version (in a much more efficient manner, as I've seen this be cited as why 1.8+ is so resource-heavy). 1.8 also added "platform independent" occlusion culling (as opposed to highly NVIDIA-specific "Advanced OpenGL" / hardware occlusion queries) but it barely works (why are there still 130 sections being rendered in this screenshot when most should be hidden?)
That said, even 1.6 has some issues that need to be taken care of (the second one is only an issue for larger worlds but I've calculated it would more than double the memory usage of my first world; my solution was to simply disable structure saving for mineshafts (other structures do benefit from it, e.g. without it they can generate split vertically if they are partially generated between sessions due to not saving the average ground level):
MC-17630 Zombie pathfinding to unreachable targets causes server lag
MC-33134 Mineshaft.dat uses too much CPU
Also, there is an issue with versions from 1.0.0-1.7.10 on recent Intel graphics drivers but much as has been done for versions prior to 1.6 on M1 Macs a patch should be made instead of updating (it should be very possible if it only affects these versions and I don't know why nobody else has attempted to fix it to my knowledge; if I had an affected GPU I'd fix it myself, comparing the source for the oldest/newest affected versions around 1.0.0, which shouldn't differ that much in rendering).
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?
The changes to rendering and block handling are precisely the technical improvements we want. The 1.5-1.7 codebase is super manual and really error prone. The 1.8 codebase absolutely is more complex, but that complexity makes it way more robust. I'd much rather have more complex development up front that covers my ass in the long term than deal with doing everything manually in a super error-prone way in versions before 1.8. The custom block models are a side benefit, but definitely nice, since making custom block models for blocks before 1.8 is a pain in the ass.
Better than Wolves also makes huge optimizations and bugfixes to the vanilla codebase already, and once we update that will continue to happen.
This is the mod I started playing minecraft with. I'm so glad to see that it's getting updated and may some day get API support. Last time I tried to get the original BTW installed I never could get it to work and gave up.
hello, i'm new here
what is the highest version of minecraft in wich this mod's highest version can run?
I love that the creator of this mod hates wolves so much that they effectively rebuilt the game. And it's vey nice that you and the community are continuing this. Meanwhile, it's been 12 years and wolves have not gotten any additions, done anything to the game or really been touched as a feature. The closest they got was making it so they die less much. Now, ocelots... They've gotten too many improvements if you ask me. And far more disimprovements now, too.
1.5.2.
One downside of 1.7+ versions is that the density of cave generation was seriously reduced.
Are you considering to re-implement pre-1.7 cave generation (at least as a world-gen option) if you update to 1.7 and beyond?
BTW heavily relies on the highly interconnected nature of caves. Due to traversing through the unbreakable dark-stone and the terror that pitch black dark intersecting caverns gives.
Best of luck with all the upgrades!
This is one of the easiest changes to revert, you literally only need to change two hardcoded numbers in the "MapGenCaves" class:
This resulted in a 64% reduction in the average density and density variation of cave systems, while making them 2.14 times more common, leading to a much more uniform distribution of caves that is quite apparent even if the overall cave density only decreased by around 15% when factoring in the decrease in overlap:
Several charts of how cave density varies (the size of an individual cave system can be up to 4 times the initial size set in the code as there is a 25% chance of a circular room which in turn adds 0-3 additional tunnels for up to 4 total):
A much bigger difference is the frequency of mineshafts, which was reduced by 60%, and they are largely responsible for making caves highly interconnected (this is quite apparent when comparing the area near 0,0 to further away as they become less common within 1280 blocks of the origin); in this case the value is within the "MapGenMineshaft" class:
Examples (shamefully, ChunkBase removed support for pre-1.7 versions so you have to use archived pages):
https://web.archive.org/web/20170703132419/http://chunkbase.com/apps/mineshaft-finder
In my own mods I removed the reduction in frequency near the origin, which is performed within the "canSpawnStructuresAtCoords" method, while adding code that counts the number of caves nearby; you could also leave the frequency alone while removing it (they will now be more common within 512 blocks of the origin but rarer further away):
(another change would be to change them to some sort of grid-based placement system, as with other structures, so they don't overlap so much, as I did in my own mods)
There is also yet another issue with 1.7; they made dungeons twice as rare by doubling their altitude range from 128 to 256, despite no terrain to take advantage of (they might very rarely generate in the side of mountain above y=128 but caves don't generate that high; notably, dungeons are most commonly found connected to mineshafts because of their shape. The Wiki erroneously claims that "Changes in cavern generation now make dungeon considerably rarer" but that change alone actually had the opposite effect; I rarely find them in the cores of denser cave systems because there isn't enough room):
If you really want to be complete, changing the following code in "MapGenRavine" will make them generate identically to pre-1.7 versions (yet another totally unnecessary change from 128 to 256 - the top of ravines never exceeds about y=90 so this change was completely pointless. Otherwise, they still have the same locations, size, altitude, and initial direction, just differ in the shape of the ravine itself):
(to this end, I have no idea if BTW made any changes to the underground, for all I know it was completely overhauled in a similar manner to my own mods; I could also suggest all sorts of ways to enhance them)
All in all, I still can't imagine touching 1.8+ for any reason:
"What did you do?!" Not as much as they might think, just because newer versions are horribly optimized and require sophisticated optimization mods like Sodium (which goes far beyond mods like Optifine), churning through memory like no tomorrow and being 10x more complex than necessary (1.8 led to the single biggest relative increase in the size of the Minecraft jar of any version, even the hundreds of features I've added to 1.6.4 still had less of an impact, not to mention all the dead vanilla code in the jar as I completely replaced a lot of classes with my own, only partly offset by deleting META-INF).
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?
Versions 2.1.0 and 2.1.1 have been released! (Forgot to post the updates over here)
MCF really doesn't like displaying this changelog in a readable format as it has a lot of long entries, so I recommend reading the changelog on github, through the download links.
Also note that 2.1.1 fixes a critical bug with 2.1.0, so downloading 2.1.0 is not recommended, but the link has been left for posterity (and for changelog visibility).
v2.1.1
Download here.
- Fixed an issue where a null pointer error with pistons could cause chunks to not save correctly.
- Fixed an issue where block breaking by hand was slower in relaxed mode instead of faster due to an order of operations issue.
v2.1.0
Download here.
/--General--/
- Changed status effects names such as peckish to be localized instead of hardcoded.
/--Gameplay--/
-= General =-
- Overhauled difficulty selection as a way to better provide alternate methods of play, without compromising the curated experience BTW offers. Difficulty levels are now stored per-world and can be decided at world creation, in addition to the options menu.
--- Standard mode: The default mode of play, and the one players have become familiar with over the years.
--- Relaxed mode: A slightly less punishing experience, while still maintaining the same depth and meaningful gameplay as standard mode. Overall gameplay length for optimal play is comparable to standard mode, but it should be easier for players to get their feet under them.
- Changed the difficulty command to affect the new system of difficulty modes. It can be used to change the current mode by typing in the mode's name, or to view the current mode by using the command without arguments. This may be used at any time in singleplayer, without requiring cheats, or by operators in multiplayer.
- Removed the ability to change the difficulty from the main menu given that difficulty is now saved per-world.
- Added the ability for sugar cane to spawn in rivers. Given that finding sugar cane no longer lets you expand a farm infinitely, and given how vital it is for early game storage, I felt it appropriate to make it somewhat more common. Swamps and jungles are still the most effective places to find sugar cane, however.
- Added the Tangled Web as a new item which drops if a spider's web fails to find a valid location to place itself as a block. The tangled web may be crafted with a sharp stone and then worked into a single string, or it may be cut directly into two string in a crafting grid with shears.
- Added the ability to make bedrolls from hemp fibers.
- Added Sinew as an alternative to string for crafting tools (stone tools, ladders, bows, bedrolls, etc). Sinew can be obtained by crafting meat with a sharp stone or chisel. This is intended as a way to help assist in cases where string availability is low by allowing the player to sacrifice some food to create more string.
- Added the ability to make potash from straw.
- Added the ability to mill zombie and creeper heads into rotten flesh and nitre, respectively.
- Added the ability to display multiple status effects (e.g. peckish and hurt) at the same time on the HUD, instead of only the highest priority.
- Changed the most severe hunger penalty from "dying" to "starving", and the second most severe from "starving" to "emaciated", to distinguish from the health status effect also called "dying".
- Changed mobs to once again drop burned meat when they die while on fire in standard mode.
- Changed fire aspect to be available again through the vanilla enchanting table.
- Changed wheat crops to harvest the entire plant when breaking the top block, and changed the selection box to include the entire plant. Wheat was never able to grow its top back, so allowing breaking only the top block only served to confuse players.
- Changed the recipe for obtaining seeds from wheat manually to also output straw to match the hopper recipe for doing so automatically.
- Changed (increased) the radius which a lightning rod protects.
- Changed how lightning is attracted to blocks (and entities). Previously, areas protected by blocks other than lightning rods were not actually fully protected, but with this change standard pillars of blocks should be enough to protect a small area, while lightning rods can be used to cover a much larger area.
- Changed how mob spawning checks for leaves internally to improve behavior with non-vanilla leaves.
- Changed ocelots to only spawn on leaves, and to require light to spawn, to stop them from spawning inside chicken pens, and allow preventing their spawns within jungle spider farms.
- Changed mobs to not spawn on wool, including beds and bedrolls.
- Fixed an issue where mobs were able to spawn on wicker.
- Fixed an issue where wolves would become permanently angry at the player when attacked by another mob. (Hiracho)
- Fixed an issue where saplings only dropped as an item when fully mature. (Hiracho)
- Fixed an issue where looting did not apply consistently to head drops from mobs. (Hiracho)
- Fixed an issue where sprinting using ctrl did not consume as much hunger as it should. (Arminias)
- Fixed an issue where a player who died while on fire while also bound to a steel beacon would drop burned meat instead of rotten flesh.
- Fixed an issue where blood wood trees checked against the biome instead of the dimension when checking for whether they were in the nether, causing issues with alternate nether biomes from addons.
- Fixed an issue where using pick block on a burning campfire gave a burning campfire as an item.
- Fixed an issue where several crafting recipes did not work for strata stone variants.
- Fixed an issue where cobblestone walls always dropped first strata stones.
- Fixed an issue where sparse grass and mycelium returned fully grown versions when silk touched.
- Fixed an issue where mushroom cap blocks were named incorrectly.
- Fixed an issue where mandatory trades for villagers did not always properly refresh.
- Fixed an issue where the mandatory status of a trade was not properly written to or read from NBT.
- Fixed an issue where mandatory trades displayed a "+" in the gui, despite not giving xp. Note that this fix may not apply until the trade is completed and refreshed due to the above NBT issue.
- Fixed an issue in multiplayer where attempting to dye armor would crash the client. (Arminias)
- Added additional logic to handle syncing players in multiplayer, which should hopefully fix the invisible players issue. (yany)
-= Relaxed Mode =-
Relaxed mode is designed to increase accessibility, and provide a slightly less challenging experience while still maintaining the depth and richness of standard mode, largely by reducing punishments for failure in order to make recovery easier. Focus is generally on decreasing some of the pressure caused by health, hunger, and time management, as well as some of the more punishing failure states, without affecting complexity or depth of mechanics.
Relaxed mode contains the following changes:
- Health regeneration is increased.
- Hunger costs associated with some particularly taxing actions are decreased. Actions affected are: Jumping, sprinting, swimming, using a hand crank, and starting a fire.
- Modifiers from health and hunger are less punishing.
- Hardcore spawn maximum radius does not increase.
- Reduced radii for looted temples and abandoned villages, both to decrease the distance required to travel in order to find them, and to make it more likely to find interesting structures when respawning after a death.
- Lightning strikes do not start fires.
- Nethercoal torches do not start fires. Note that this is accomplished through a separate block id, so any torches placed in relaxed mode will never start fires, even if a world is changed to standard mode. Torches placed in standard mode will automatically convert to relaxed mode torches over time, and will not start fires while in relaxed mode.
- Pigmen do not become angry when hit by ghast fireballs.
- Jungle spiders do not attack unless provoked, and deal food poisoning for a shorter duration on hit.
- Squids do not attack players who are not in water, or who are in boats, even at night.
- Cows deal reduced damage and knockback when kicking.
- Cows do not panic if the player attempts to milk them when they aren't ready.
- Mobs drop cooked meat instead of burned meat when dying while on fire.
- Blocks are mined slightly faster when mining without the correct tool.
- Blocks can be placed while in the air.
- Animals do not startle when placing or breaking blocks.
- Animals and wolves will not die when starving, although you still need to keep them fed to get anything from them. Starving tamed wolves will also not turn hostile.
- Weeds will not kill plants, although weeds will still cause plants to stop growing when present.
- Items dropped on death are never destroyed, even on subsequent deaths.
/--Addon API--/
- Added a new method to WorldData to initialize default global data when a world is created.
- Added hooks for addons to add their own difficulty levels. Difficulty levels are also designed to be mixin friendly in order to modify existing difficulty levels (e.g. by adding new behavior controlled by difficulty, or editing values for behaviors in existing difficulties).
- Changed how status effects from health, hunger, etc are handled internally to make them extensible to addon authors.
- Changed how crashes occur due to an invalid mob being spawned to make the generated crash report more useful in debugging.
Yes, we will be reverting the cave changes when we update to 1.7