Decided to try this out, going in mostly-blind. Here's my impressions so far:
The good:
- YES! Sprinting! I like how you managed to make it work without a hunger bar.
- I really like how you made gold tools useful and replaced the silk touch enchantment at the same time.
- I like how you gave swords the functionality of vanilla shears/hoes. This and gold touch are both clever ways of doing the same thing as vanilla by improving existing features instead of adding new ones. I really appreciate that.
- I like that you brought back the Classic wool color palette.
- Thank you for making armor act more like modern vanilla where its effectiveness doesn't depend on durability.
- Thanks for fixing boats. Well, the controls still feel worse than modern vanilla to me, but having the boat not be made of cardboard is already a wonderful change. I wonder if EATS roads work in this version...
- I like that the score is made more prominent. It always felt weird that it only showed up after you died.
- Crying obsidian is cool, and I managed to figure out how to use it. I really like how you combined vanilla's respawn anchor and lodestone into a single block. Another great example of doing more with less.
- The Infdev clouds are nice.
- The modem sound when joining a server is a cute touch.
- I like that you added in a bunch of previously soundtrack-only Minecraft music, but I think the Droopy tracks make more sense as a music disc.
- Making skeleton arrows purple is something vanilla should do. It really helps to make it clear which arrows you can and cannot pick up. (It would even make sense for Infinity arrows because purple is associated with enchanting.)
- I saw in creative that you added calm4 as a music disc. Neat!
- I see that iron pressure plates can only be activated by players. That's definitely more useful than vanilla's weighted pressure plates have ever been, haha.
- I like that you can actually eat eggs. It's kinda weird that vanilla added so many foods, but not the ability to cook eggs.
- Items falling through leaves is a cool change that gives some technical functionality to leaves, which I appreciate. I picture using it as the floor of a mob-killing drop, with water streams below to collect and transport the resulting items.
- I like finding caves by listening for mob noises, so I think the spawner noises are a great addition.
- Ambient noises are neat, though I think perhaps they could use a bit more variation.
The bad:
- Inventory management is annoying. I'm so used to all the dragging and shift-clicking shortcuts of modern vanilla.
- Moving porkchops in and out of a furnace is particularly annoying.
- An inventory bug causes me to keep crafting dark gray dye when I'm making torches using shift-click and I use up my last sticks.
- I forgot just how bad water visibility used to be. I thought maybe I could find sponges in the ocean, but since you hardly see anything underwater, I guess I'll have to get lucky with dungeon loot.
- I miss vanilla's recipe book. Trying to guess recipes is a pain. I managed to figure out how to craft gears, but...
- I can't figure out the recipe for redstone lamps. I've tried glass around a torch, glass around a redstone torch, a torch above redstone with glass around it, glass around redstone, wool around a torch, glass surrounded by 4 torches, and various other patterns, but I just can't seem to crack it.
- Gear hitboxes are weird.
- Is there any reason why dying wool isn't a shapeless recipe? Do shapeless recipes not exist in this version? If not, you should add them. I was confused for a while on how to dye wool.
- Redstone activating doors does not act like you'd expect. Some doors have inverted powering behavior, which gets really frustrating when you have double doors. I think that's a pre-existing Alpha bug, but it's still really annoying.
- As fun as the retro mineral blocks (iron, gold, copper) are at first, it doesn't take long before you realize just how goofy they tend to look in builds... at least when stacked on top of each other. The side textures really don't lend themselves to building most of the time. I really want to build with copper blocks in vanilla; in NSSS, I just put my copper blocks in a chest because I don't know what to do with them. Iron blocks are at least tolerable, thanks to the milder gradient compared to the other two.
Other:
- Do gears do anything yet? They don't seem to have any interactions with redstone, as far as I can tell.
- Copper in general looks kinda cool, but it doesn't seem to have much use yet. Gears are alright, but I think the vanilla copper block texture is far more versa
- Not sure how I feel about the new creeper behavior. I get that having them blow up earlier makes you less likely to insta-die from one that sneaks up behind you, but it also means that it's nearly impossible to melee kill them. Granted, bows are machine guns in this version, but I'm not so sure I like fighting creepers in this version. I think I prefer modern vanilla where they walk up to you and stop moving as they begin to detonate. It feels more fair.
- Having iron armor completely stop arrows is interesting. It removes all threat from skeletons, but it does take a toll on your armor. I think skeletons are a bit too easy now. I found myself standing in the middle of a skeleton dungeon, sorting my inventory while skeleton arrows bounced off me. That feels a bit OP. I think skeletons need to have a melee attack so they aren't worse than zombies once you get iron armor.
Suggestions:
- Ability to set render distance father than "Far". This is 2021; I think I can handle a larger render distance for an Alpha fork.
- Change the toggle perspective button to C, or at least make it rebindable. F5 is far from ergonomic.
- Front-facing 3rd-person perspective, mainly for the sake of YouTubers, haha.
- Bringing back over-the-shoulder 3rd-person like Infdev had could be pretty cool, too, and certainly more practical than normal 3rd-person.
- Rotate the top/bottom textures of bookshelves by 90 degrees so you can combine them in floors with normal planks to create a criss-cross pattern.
- Make the cobblestone texture tile properly like the later vanilla textures.
- Backport the furnace top texture so furnaces can become more useful as a decorative block.
- Backport redstone blocks so I can compact my redstone storage... and also so there can be a red mineral block to go with all the others.
- Backport the vanilla feature where a pig on fire drops cooked porkchops. It would make flint and steel a lot more useful, and it would provide an alternative to the very boring process of moving porkchops in and out of furnaces one at a time.
- Backport flower pots, to make bricks more useful and add a way to bring flowers into houses without having to place dirt or grass.
- Backport horizontal logs, because it makes wooden cross-beams so much cooler.
- Also, hoppers should drop items if they're not pointing into anything. This could allow the block to double as a replacement for droppers in some way, and make it easier to integrate with water streams.
- Speaking of which, items should move faster in water like in the later vanilla versions. I'm not even talking 1.13 physics (though that would be cool), just please make them move faster.
- Add hay bales (and make them reduce fall damage like vanilla), because water bucket MLGs don't seem to work in this version, and it would be good to give wheat some usefulness outside of food, since porkchops are usually much easier to obtain. Also, make your hay bale texture not have any red bands, so it will look better as a thatch roof.
- Have you seen what Better Than Adventure did with its moss blocks, by making them essentially look like a grass cube? I kinda like that. Maybe it would make sense for NSSS to have the same feature. Alternatively, maybe giving moss a different color from grass would be good for expanding the building palette. Bright green grass doesn't exactly fit every aesthetic. I also really like how BTA's moss blocks add some splotches of color to the caves.
Overall, a very pleasant experience. While I miss a lot of stuff from vanilla (like modern redstone, advancements, biomes, and lively oceans), this is definitely far more playable than Alpha 1.1.2, and certainly an interesting look at what could have been. There are definitely some design choices that are arguably better than the vanilla equivalent.
Personally, I think Beta 1.7 is the peak of old-school Minecraft, so I'll probably be playing Better Than Adventure more, but I'll definitely keep checking out NSSS every now and then as well.
Thanks for the amazing feedback! I'll answer some of your critiques.
Quote from SuperGeniusZeb »
- Ambient noises are neat, though I think perhaps they could use a bit more variation.
This is planned! I'll be adding some more soundscapes in an upcoming update.
Quote from SuperGeniusZeb »
- Inventory management is annoying. I'm so used to all the dragging and shift-clicking shortcuts of modern vanilla.
- Moving porkchops in and out of a furnace is particularly annoying.
Shift-clicking currently exists in NSSS (since a1.1.11), the dragging shortcuts I may implement at some point in the future.
Quote from SuperGeniusZeb »
- An inventory bug causes me to keep crafting dark gray dye when I'm making torches using shift-click and I use up my last sticks.
I'll likely be slightly changing the crafting recipe for grey dye to correct this issue.
Quote from SuperGeniusZeb »
- I miss vanilla's recipe book. Trying to guess recipes is a pain. I managed to figure out how to craft gears, but...
- I can't figure out the recipe for redstone lamps. I've tried glass around a torch, glass around a redstone torch, a torch above redstone with glass around it, glass around redstone, wool around a torch, glass surrounded by 4 torches, and various other patterns, but I just can't seem to crack it.
A wiki is sorely needed, I agree, and I'll be working to put one together in the near future.
Quote from SuperGeniusZeb »
- Is there any reason why dying wool isn't a shapeless recipe? Do shapeless recipes not exist in this version? If not, you should add them. I was confused for a while on how to dye wool.
Simple - after I spent hours porting the shapeless recipe system from b1.7.3 into a1.1.11, I forgot to add all the shapeless recipes, lol. This will be fixed soon.
Quote from SuperGeniusZeb »
- Redstone activating doors does not act like you'd expect. Some doors have inverted powering behavior, which gets really frustrating when you have double doors. I think that's a pre-existing Alpha bug, but it's still really annoying.
This is the expected behavior for doors in Alpha. It was changed in release 1.0.0 IIRC, and requires only marginal alterations to redstone double-door circuits to account for this. The best I can say is to get used to it \:P
Quote from SuperGeniusZeb »
- As fun as the retro mineral blocks (iron, gold, copper) are at first, it doesn't take long before you realize just how goofy they tend to look in builds... at least when stacked on top of each other. The side textures really don't lend themselves to building most of the time. I really want to build with copper blocks in vanilla; in NSSS, I just put my copper blocks in a chest because I don't know what to do with them. Iron blocks are at least tolerable, thanks to the milder gradient compared to the other two.
As for this and the rest of the texture change suggestions, I am not exactly comfortable with changing the art design of existing textures - the most I have done so far (and probably the furthest I'll go) is changing the fast leaf texture to have a more detailed background (thanks to nox-cgt on discord). I could look into adding variations on the resource blocks that may be more aesthetically pleasing, like how modern minecraft handles polished and carved sandstone.
Quote from SuperGeniusZeb »
- Do gears do anything yet? They don't seem to have any interactions with redstone, as far as I can tell.
Gears are currently nonfunctional, and exist as placeholders until I can figure out how to effectively implement their logic. I will have them function in a separate system from redstone.
Quote from SuperGeniusZeb »
- Not sure how I feel about the new creeper behavior. I get that having them blow up earlier makes you less likely to insta-die from one that sneaks up behind you, but it also means that it's nearly impossible to melee kill them. Granted, bows are machine guns in this version, but I'm not so sure I like fighting creepers in this version. I think I prefer modern vanilla where they walk up to you and stop moving as they begin to detonate. It feels more fair.
This is a bug! Transferring over the b1.7.3 netcode to NSSS broke the explosion logic for creepers in singleplayer, and while I've already patched it slightly there are still obvious problems. I'm working to restore their functionality to how they were in vanilla a1.1.2_01, which I think was the right level of danger.
Quote from SuperGeniusZeb »
- Having iron armor completely stop arrows is interesting. It removes all threat from skeletons, but it does take a toll on your armor. I think skeletons are a bit too easy now. I found myself standing in the middle of a skeleton dungeon, sorting my inventory while skeleton arrows bounced off me. That feels a bit OP. I think skeletons need to have a melee attack so they aren't worse than zombies once you get iron armor.
Full Iron armor completely blocking arrows was something that sounded neat in theory, and sadly I didn't have enough time to playtest and iterate on this feature before I had to release. Expect a nerf.
Quote from SuperGeniusZeb »
- Ability to set render distance father than "Far". This is 2021; I think I can handle a larger render distance for an Alpha fork.
Absolutely. I've been working a lot on optimizing NSSS, and it currently flies at ~1300 FPS on my current machine - expect larger render distances soon.
Quote from SuperGeniusZeb »
- Change the toggle perspective button to C, or at least make it rebindable. F5 is far from ergonomic.
- Front-facing 3rd-person perspective, mainly for the sake of YouTubers, haha.
- Bringing back over-the-shoulder 3rd-person like Infdev had could be pretty cool, too, and certainly more practical than normal 3rd-person.
I will be making it rebindable alongside most, if not all, other controls. I'll also try and work in the second-person view and the over-the-shoulder view as well, though I'm not certain of how yet. I have already seen youtubers literally using reversed versions of their own skins to emulate the second-person camera, lol.
Quote from SuperGeniusZeb »
- Rotate the top/bottom textures of bookshelves by 90 degrees so you can combine them in floors with normal planks to create a criss-cross pattern.
Color me intrigued...
Quote from SuperGeniusZeb »
- Backport redstone blocks so I can compact my redstone storage... and also so there can be a red mineral block to go with all the others.
I suppose that's not too much to ask - though, have you considered wumbo chests?
Quote from SuperGeniusZeb »
- Backport the vanilla feature where a pig on fire drops cooked porkchops. It would make flint and steel a lot more useful, and it would provide an alternative to the very boring process of moving porkchops in and out of furnaces one at a time.
Sounds fine.
Quote from SuperGeniusZeb »
- Backport flower pots, to make bricks more useful and add a way to bring flowers into houses without having to place dirt or grass.
Perhaps, though they would likely use a different model/texture.
Quote from SuperGeniusZeb »
- Backport horizontal logs, because it makes wooden cross-beams so much cooler.
Also a fine idea.
Quote from SuperGeniusZeb »
- Add hoppers, but give them have a blockier, fewer-cuboid appearance to fit in better with the fat chests (and save FPS). Also, maybe they should be made out of copper, just to give that resource more functionality.
- Also, hoppers should drop items if they're not pointing into anything. This could allow the block to double as a replacement for droppers in some way, and make it easier to integrate with water streams.
I'm not particularly keen on hopper blocks because it makes the automation of certain tasks far too easy - and I don't want to let players automate all of the fun out of the game. I am toying with the idea of using minecarts as a means to automatically move items between inventories vis-a-vis modern hopper minecarts, but with expended functionality. Also, I generally would prefer to buff an existing feature to better fill a niche rather than just add a new independent feature just for this niche - something that bugs me a lot with mojang's development approach to modern minecraft.
Quote from SuperGeniusZeb »
Speaking of which, items should move faster in water like in the later vanilla versions. I'm not even talking 1.13 physics (though that would be cool), just please make them move faster.
Items currently move plenty fast if you place ice under the water streams! And come 1.1.12 ice will be much more obtainable in non-snowy worlds, as I am planning on adding seasons and weather in that update.
Quote from SuperGeniusZeb »
- Add hay bales (and make them reduce fall damage like vanilla), because water bucket MLGs don't seem to work in this version, and it would be good to give wheat some usefulness outside of food, since porkchops are usually much easier to obtain. Also, make your hay bale texture not have any red bands, so it will look better as a thatch roof.
The negation of fall damage missing due to the lack of MLG-water-buckets is already made up for with the utility use of gold armor - I do feel like NSSS should be more challenging than modern MC has become, and the ability to instantly erase your mistakes by right-clicking fast enough (despite the skill required!) isn't exactly something I want. I will consider the decoration block, however.
Quote from SuperGeniusZeb »
- Have you seen what Better Than Adventure did with its moss blocks, by making them essentially look like a grass cube? I kinda like that. Maybe it would make sense for NSSS to have the same feature. Alternatively, maybe giving moss a different color from grass would be good for expanding the building palette. Bright green grass doesn't exactly fit every aesthetic. I also really like how BTA's moss blocks add some splotches of color to the caves.
I am looking to add a few more building blocks to NSSS, but I am wary of providing too many options - limitation breeds creativity, which is very evident through the amazing builds some players on the official NSSS server have made with the limited block selection currently available. You will see some more options in the near future, however.
Could you add a brightness slider (and F3 light level)? (Also, I keep mistaking copper for diamonds while mining.) There was also a chunk rendering issue where several chunks were still interactable but refused to render, and a world generation issue where caves cut off at chunk boundaries occasionally. (Also, dyes don't seem to be accessible in creative, I'd like all in-game items to be accessible in the Creative.) I really like the mod though.
[...] There was also a chunk rendering issue where several chunks were still interactable but refused to render, and a world generation issue where caves cut off at chunk boundaries occasionally. (Also, dyes don't seem to be accessible in creative, I'd like all in-game items to be accessible in the Creative.) I really like the mod though.
This should hopefully have been fixed with the recent update, as I have incorporated Optimine into NSSS from source code that Scaevolus gave me a few years back. The cave generation issue is a simple fix IIRC but I can't remember where I saw how to correct it at the moment. Also, I have added all the missing items and blocks to the creative inventory now, thanks for pointing that out and I'm glad you like the mod!
I'm against adding a brightness slider to vanilla NSSS, but F3 light level sounds doable.
protected void generateCaveNode(long par1, int par3, int par4, byte[] par5ArrayOfByte, double par6, double par8, double par10, float par12, float par13, float par14, int par15, int par16, double par17)
{
Random var25 = new Random(par1);
There is also another issue, where an optimization that stops tunnel carving when it has gone too far to reach the current chunk uses a faulty calculation:
Also, there is an issue where caves cut off unnaturally when there is water on the other side of a chunk boundary, which I fixed by moving the "water check" code to check around each individual block (this is from my own mod):
// Replaces the block at the specified coordinates with air or lava. y-coordinate is extracted from index
private void replaceBlock(int index, int x, int z)
{
// All blocks can be replaced; bedrock at y=0 is excluded due to cave generation code never reaching y=0.
int y = index & 255;
// Checks for water up to 2 blocks out around the current block and returns false if there
// is water. Only active when between y=44 and y=62 (range of ocean water is 46-62)
if (y >= 44 && y <= 62)
{
int x2;
int z2;
int minX = Math.max(x - 1, 0);
int maxX = Math.min(x + 1, 15);
int minZ = Math.max(z - 1, 0);
int maxZ = Math.min(z + 1, 15);
// Checks a 3x3 area 2 blocks high (blocks below the y-coordinate not checked)
for (x2 = minX; x2 <= maxX; ++x2)
{
for (z2 = minZ; z2 <= maxZ; ++z2)
{
int xyz = x2 << 12 | z2 << 8 | y;
if (this.chunkData[xyz] == BlockStates.waterStill) return;
if (this.chunkData[xyz + 1] == BlockStates.waterStill) return;
}
}
// Adds 1x3 areas to the sides in the x and z directions
for (x2 = minX; x2 <= maxX; ++x2)
{
z2 = z - 2;
if (z2 >= 0 && this.chunkData[x2 << 12 | z2 << 8 | y] == BlockStates.waterStill) return;
z2 = z + 2;
if (z2 <= 15 && this.chunkData[x2 << 12 | z2 << 8 | y] == BlockStates.waterStill) return;
}
for (z2 = minZ; z2 <= maxZ; ++z2)
{
x2 = x - 2;
if (x2 >= 0 && this.chunkData[x2 << 12 | z2 << 8 | y] == BlockStates.waterStill) return;
x2 = x + 2;
if (x2 <= 15 && this.chunkData[x2 << 12 | z2 << 8 | y] == BlockStates.waterStill) return;
}
// Adds a block to the center of the top
if (this.chunkData[x << 12 | z << 8 | y + 2] == BlockStates.waterStill) return;
}
if (y < 4)
{
this.chunkData[index] = (byte)BlockStates.lava;
}
else
{
this.chunkData[index] = 0;
// Replaces floating sand and gravel with (sand)stone
if (y >= 40)
{
byte data = this.chunkData[index + 1];
if (data == BlockStates.sand)
{
this.chunkData[index + 1] = (byte)BlockStates.sandstone;
}
else if (data == BlockStates.gravel)
{
this.chunkData[index + 1] = (byte)BlockStates.cobblestone;
}
}
}
}
An example of a large ravine intersecting water; this can cause odd results where a river hangs over a cave but I'd very much rather have intact caves:
There is still one remaining issue - due to the cave generator being unable to see into adjacent chunks due to the fact they may not exist (even the current chunk doesn't exist yet, only its raw pre-chunk data, which is basic terrain at this stage) this can still leave areas where they remove blocks right up to a chunk border next to water, which I fix during chunk population by checking for water source blocks next to air (note that I prevent water springs from generating at y=62/sea level to prevent erroneous block replacement):
public void replaceBlocks(WorldGenChunkCache cache, int cx, int cz)
{
// Prevents blocks from being replaced in Superflat worlds unless enabled
if (!this.replaceBlocks) return;
this.chunkCache = cache;
this.chunk_X = cx + 8;
this.chunk_Z = cz + 8;
this.initialize(cache.worldObj, cx >> 4, cz >> 4);
cx += 14;
cz += 14;
int cx2 = cx + 3;
int cz2 = cz + 3;
this.beachDataInitialized = false;
// Scans through a 16x16 block area centered in populated area
for (int chunkX = 0; chunkX <= 8; chunkX += 8)
{
int chunkOffX = this.chunk_X + chunkX;
for (int chunkZ = 0; chunkZ <= 8; chunkZ += 8)
{
int chunkOffZ = this.chunk_Z + chunkZ;
this.currentChunk = cache.getChunkFromBlockCoords(chunkOffX, chunkOffZ);
// Scans through an 8x8 area of each chunk
for (int x = chunkOffX; x < chunkOffX + 8; ++x)
{
for (int z = chunkOffZ; z < chunkOffZ + 8; ++z)
{
BiomeGenBase biome = cache.getBiomeGenForCoords(x, z);
// River and ocean biomes; handled separately as they may also have a different main biome type
if (Biomes.isRiverOrOcean(biome.biomeType) && this.replaceWater)
{
this.replaceOceanBlocks_decorate(x, z, biome);
}
// Performs additional special block replacements/decorations not handled by
// biome.replaceBlocksForBiome_generate/post_cave
biome.replaceBlocksForBiome_decorate(x, z);
// Scans chunk boundaries for water sources adjacent to air (cave openings)
if (((x >= cx && x <= cx2) || (z >= cz || z <= cz2)) && this.replaceWater)
{
this.fixCaveAirWaterBoundaries(x, z, cx, cz, cx2, cz2);
}
}
}
}
}
// Ensures that references are freed up to avoid memory leaks
this.chunkCache = null;
this.currentChunk = null;
}
private void fixCaveAirWaterBoundaries(int x, int z, int cx, int cz, int cx2, int cz2)
{
for (int y = 62; y >= 46; --y)
{
if (Block.isWaterSourceOrPlant(this.getBlockState(x, y, z)))
{
// For layer 62 checks a 5x5 area (excluding corners) for air blocks, layer 61 3x3,
// and otherwise only checks directly adjacent blocks
if (y >= 61)
{
int radius = y - 60;
// Checks for cobblestone and moss stone to avoid placing dirt in jungle temples generated on water
if (radius == 2)
{
int b = this.chunkCache.getBlockId(x - 1, y, z);
if (b == BlockStates.cobblestone || b == BlockStates.cobblestoneMossy) radius = 1;
b = this.chunkCache.getBlockId(x + 1, y, z);
if (b == BlockStates.cobblestone || b == BlockStates.cobblestoneMossy) radius = 1;
b = this.chunkCache.getBlockId(x, y, z - 1);
if (b == BlockStates.cobblestone || b == BlockStates.cobblestoneMossy) radius = 1;
b = this.chunkCache.getBlockId(x, y, z + 1);
if (b == BlockStates.cobblestone || b == BlockStates.cobblestoneMossy) radius = 1;
}
for (int xo = -radius; xo <= radius; ++xo)
{
for (int zo = -radius; zo <= radius; ++zo)
{
int x2z2 = xo * xo + zo * zo;
if (x2z2 > 0 && x2z2 <= 5)
{
if (this.chunkCache.getBlockId(x + xo, y, z + zo) == BlockStates.air)
{
this.setBiomeBlock(x + xo, y, z + zo);
}
}
}
}
}
else
{
if (x == cx2 - 1 && this.chunkCache.getBlockId(x - 1, y, z) == BlockStates.air) this.setBiomeBlock(x - 1, y, z);
if (x == cx + 1 && this.chunkCache.getBlockId(x + 1, y, z) == BlockStates.air) this.setBiomeBlock(x + 1, y, z);
if (z == cz2 - 1 && this.chunkCache.getBlockId(x, y, z - 1) == BlockStates.air) this.setBiomeBlock(x, y, z - 1);
if (z == cz + 1 && this.chunkCache.getBlockId(x, y, z + 1) == BlockStates.air) this.setBiomeBlock(x, y, z + 1);
}
}
else
{
break;
}
// Only y=62 checks for air within a 2 block radius
if (y == 62 && (x <= cx || x >= cx2) && (z <= cz || z >= cz2)) break;
}
}
You may also notice that in the screenshot of the ravine shown above the sand/gravel patches that generate underwater did not collapse, which is because I check if there is air below and if so place sandstone/cobblestone; aside from preventing caves under bodies of water from flooding it also reduces lag from block updates:
// Uses support block if there is more than one air block below or elevation is below sea level
// (index - 256 = y - 1; index - 512 = y - 2)
if (BlockSandTMCW.canFall(chunk.getBlockIDByIndex(index - 256)))
{
if (y2 < seaLevel || chunk.isAirBlockByIndex(index - 512))
{
chunk.setBlockStateFastByIndex(index, supportBlock);
}
else
{
// Uses sand block and calls onBlockAdded, which schedules a block update
chunk.setBlockStateFastByIndex(index, sandBlock);
Block.blocksList[BlockStates.getBlockId(sandBlock)].onBlockAdded(chunkCache.worldObj, xx2, y2, zz2);
}
}
else
{
chunk.setBlockStateFastByIndex(index, sandBlock);
}
Also, since you've mentioned optimizations the cave generation code can be made significantly faster by replacing Random with this direct replacement (aside from nextGaussian, which is not used by caves); since it extends Random you can replace every instantiation of Random with it (e.g. the World.rand instance):
Even better is my own "Random64" class, which is not only faster (with some limitations; the basic nextInt method can only generate values between 0-1023) but is fully 64 bit (Random only uses 48 bits, which is a factor of 65536 less and exposes many of the weaknesses of a linear congruential generator, aggravated by poor choices for how the "chunk seed" is calculated - even just using Random64 makes many of these issues far less apparent):
Notably, older versions (up to at least early Beta, possibly Beta 1.7.3) appear to have been entirely constrained to a 48 bit seed space; in modern versions, possibly since Beta 1.8, biome generation is fully 64 bit:
(that said, the "64 bit" biome generator itself has issues caused by - again - poor use of the RNG, thus why the biome maps in this link have similarities)
Obviously, such changes will alter world generation, including the main fix for caves cutting off along chunk walls, so you may want to be careful implementing any of these (every main version of TMCW has produced completely different worlds due to changes like this but I'm not so concerned about this as I make new worlds anyway for each version, and as your own mod progresses you'll eventually want to consider this).
Also, an interesting thing about "Far" render distance is that it appears to have been only 13 chunks, not 16 chunks, even before release 1.3 (which limited it to 10 chunks due to the internal server using a fixed view distance; I found source for 1.0.0 which had the same limit so it is not just some effect of the changes in 1.3), as the game internally limits the diameter to 400 / 16 + 1 = 26 chunks (in RenderGlobal.loadRenderers(), though the names might not be the same in Alpha as 1.6.4), so even just fixing this (be sure to leave in some form of bounds-checking; I do this by checking the settings as they are loaded from options.txt) would give a noticeable improvement (I'd also recommend changing render distance to be in chunks, as was done by Optifine and in vanilla 1.7+, and as I did - the difference between 8 and 16 chunks is 4x, with another 4x increase between 16 and 32):
Another interesting feature of my own mod is true total darkness, which is unaffected by the brightness setting (IMO, Moody looks awful; the number of torches I place while caving is insane even with brightness on max; either way, even on Moody total darkness is not completely black and can be very easy to see in on badly calibrated monitors (which seems to be the default in Windows 10 if my experience is any indication, I had to adjust the system gamma to as low as it can go to get a good result according to its own calibration tool):
1000% brightness (only possible by modifying the code as gamma is limited to 0-1; note that complete darkness is still pitch-black):
With Night Vision for comparison (note that fog and the sky are also pitch-black and the stars/sun/moon do not render when underground unless you use Night Vision, hiding the end of caves that go outside of unloaded chunks):
My goodness, this is fantastic information, thank you so much for this! I'll see about those cave optimizations stat.
As for the far render distance being capped at 13 chunks: I just fixed this in the newest update, with the new cap being ~32 chunks in all directions for the highest possible distance setting, and far correctly using 16. As I still haven't multithreaded chunk loading and rendering, the highest render distances aren't good for much other than screenshots at the moment (unless your gpu costs roughly as much as your house), but I'm hoping to make large improvements in those areas.
Your brightness/gamma setting suggestions have piqued my interest, and I'll definitely toy with a similar system.
As I still haven't multithreaded chunk loading and rendering, the highest render distances aren't good for much other than screenshots at the moment (unless your gpu costs roughly as much as your house), but I'm hoping to make large improvements in those areas.
From what I've heard, you can't reliably multithread the actual part of uploading vertex meshes to the GPU, which takes up the majority of the time taken by a chunk update, especially when there are a lot of vertices; for example:
16x16x16 Fancy leaves in vanilla:
Chunk update took 35652 us (render: 16481, upload: 19170)
TMCW:
Chunk update took 20927 us (render: 1971, upload: 18955)
12 Mega Tree flower pots:
Chunk update took 35611 us (render 2071, upload: 33539)
Specifically, this comment from a Reddit thread about performance:
It's already mostly parallel. The only part that isn't is the part that directly talks to opengl and that's also the part that is no longer artificially capped on this pre-release. And it can't be reliably made parallel because opengl doesn't officially support multithreading. While it works on some GPU drivers, it breaks on others (like 1.7.10 optifine multi core chunk loading, it actually breaks on some hardware configurations)
Note that even in 1.8+ chunk updates still cause lag spikes for this reason, which is one reason why I have not attempted any form of multithreading, just making code optimizations, and multithreading just the rendering code would have very little benefit (even rendering "mega tree" models in flowerpots is far faster than uploading to the GPU, despite being generated from scratch using the same code as the actual trees, except that accesses to the "world" data are redirected to an array which uses simplified IDs instead of block IDs/metadata):
Otherwise, I've minimized the number of vertices by culling hidden faces in blocks like snow (reducing face count by up to 6 to 1 and also eliminating artifacts at a distance due to the sides z-fighting through the top), fences, stairs, and so on (the savings in vertex count far offset any increase in render time due to more adjacent block checks), and added a "Fast Fancy" mode for leaves which only renders interior faces within 1 block of the outside, giving performance between Fast and Fancy while not impacting visual quality as much as if only the outsides were rendered, as on Fast.
That said, I'd be interested to know if there is a way to offload mesh uploads to one or more threads; even one thread would help a lot since even if chunk updates are still limited by the upload time they would have no impact on FPS (the 35 ms in the worst-case shown above would reduce FPS to less than 30 if they occurred continuously, though most chunk updates take 1-2 ms).
Most optimization guides for voxel games say to do things like merge adjacent faces (i.e. if you have a 2x2 area of the same blocks render the shared faces as a single face instead of 2-4. However, this won't work well if you have many different types of blocks and/or lighting values, and it seems you'd need to use more modern shader-based rendering techniques to apply the textures properly (there are practically no guides that mention how to render using OpenGL 1.x, as exclusively used by Minecraft until 1.7, then again, they did call it "fixed function" for a reason; it wasn't until they completely updated the rendering system that issues like MC-93243 were finally fixed, in this case, by using a custom fog shader instead of the built-in one, where only NVIDIA supports spherical fog, or at least, the extension that Minecraft uses, as somebody replied to another bug report that it was "really easy" to fix but never gave the fix).
Would it be possible to incorporate a BGR patch for Apple Silicon devices into a future release of NSSS? Currently trying to play old Minecraft versions (including NSSS) on Apple Silicon Macs causes the red and blue color channels to be swapped.
(It's kinda cool that it looks like the Aether, but the fun ends there)
I've heard of this issue before; it seems that the best fix, which would fix all colors (the "fix" in the link is just a texture pack which doesn't fix anything that doesn't use a proper texture, like the sky), would be to replicate whatever changes were made in 1.6, perhaps by the addition of code to detect the byte order of the system, though it does seem to be in older versions, at least, in the "Tessellator" class (I assume the actual issue in within LWJGL or where OpenGL state gets initialized as I tried modifying 1.6.4 to simulate an incorrect byteorder and while colors were weird it didn't give the same result as the M1 issue):
public void setColorRGBA(int par1, int par2, int par3, int par4)
{
if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN)
{
this.color = par4 << 24 | par3 << 16 | par2 << 8 | par1;
}
else
{
this.color = par1 << 24 | par2 << 16 | par3 << 8 | par4;
}
Interestingly, while colors within Minecraft are usually RGBA (as shown above; actually, on a little-endian system, such as x86, it uses ABGR and this explains the different results when I tried using the wrong ordering, the M1 issues only seems to affect the RGB components) I found this code in TextureUtil that specifies BGRA when uploading textures, though as mentioned before 1.6 doesn't have this issue; either way, I'd imagine the issue/fix is somewhere within code like that shown here:
If LWJGL itself needs to be updated it should be possible to update to at least 2.9.0, the version that 1.6.4 uses; one way might be to modify the version json for Beta 1.7.3 to use the libraries that 1.6.4 uses, which can then be distributed with the mod (much as I do to avoid the need to modify it yourself; in my case, changing the version name and removing the download URL and checksum that makes the vanilla launcher redownload a clean jar).
Would it be possible to incorporate a BGR patch for Apple Silicon devices into a future release of NSSS? Currently trying to play old Minecraft versions (including NSSS) on Apple Silicon Macs causes the red and blue color channels to be swapped.
I'll see to adding the fix posted by TheMasterCaver ASAP!
A small server patch has been released to fix two bugs, and a larger patch is in development which will, among other things, bring improved skin support (including capes and thin player models) to NSSS. In addition, it will also bring some integrations with some perks I have been setting up for patrons, as I have now set up a Patreon:
1.1.11_101 is live! This contains a bunch of bug fixes and adds cape support, among other things. I have two more patches planned for 1.1.11 and then I plan on going full-steam-ahead on 1.1.12, which will bring Seasons and Weather to NSSS. I want NSSS' weather system to be localized and noise-based, instead of the system we got in Beta 1.5 where the entire world experiences the same weather at the same time. I really want to system to feel interesting and justify its existence, rather than just being a nuisance like it is in modern MC.
1.1.11 is live! Check the OP for patch notes - now with more pictures!
Decided to try this out, going in mostly-blind. Here's my impressions so far:
The good:
- YES! Sprinting! I like how you managed to make it work without a hunger bar.
- I really like how you made gold tools useful and replaced the silk touch enchantment at the same time.
- I like how you gave swords the functionality of vanilla shears/hoes. This and gold touch are both clever ways of doing the same thing as vanilla by improving existing features instead of adding new ones. I really appreciate that.
- I like that you brought back the Classic wool color palette.
- Thank you for making armor act more like modern vanilla where its effectiveness doesn't depend on durability.
- Thanks for fixing boats. Well, the controls still feel worse than modern vanilla to me, but having the boat not be made of cardboard is already a wonderful change. I wonder if EATS roads work in this version...
- I like that the score is made more prominent. It always felt weird that it only showed up after you died.
- Crying obsidian is cool, and I managed to figure out how to use it. I really like how you combined vanilla's respawn anchor and lodestone into a single block. Another great example of doing more with less.
- The Infdev clouds are nice.
- The modem sound when joining a server is a cute touch.
- I like that you added in a bunch of previously soundtrack-only Minecraft music, but I think the Droopy tracks make more sense as a music disc.
- Making skeleton arrows purple is something vanilla should do. It really helps to make it clear which arrows you can and cannot pick up. (It would even make sense for Infinity arrows because purple is associated with enchanting.)
- I saw in creative that you added calm4 as a music disc. Neat!
- I see that iron pressure plates can only be activated by players. That's definitely more useful than vanilla's weighted pressure plates have ever been, haha.
- I like that you can actually eat eggs. It's kinda weird that vanilla added so many foods, but not the ability to cook eggs.
- Items falling through leaves is a cool change that gives some technical functionality to leaves, which I appreciate. I picture using it as the floor of a mob-killing drop, with water streams below to collect and transport the resulting items.
- I like finding caves by listening for mob noises, so I think the spawner noises are a great addition.
- Ambient noises are neat, though I think perhaps they could use a bit more variation.
The bad:
- Inventory management is annoying. I'm so used to all the dragging and shift-clicking shortcuts of modern vanilla.
- Moving porkchops in and out of a furnace is particularly annoying.
- An inventory bug causes me to keep crafting dark gray dye when I'm making torches using shift-click and I use up my last sticks.
- I forgot just how bad water visibility used to be. I thought maybe I could find sponges in the ocean, but since you hardly see anything underwater, I guess I'll have to get lucky with dungeon loot.
- I miss vanilla's recipe book. Trying to guess recipes is a pain. I managed to figure out how to craft gears, but...
- I can't figure out the recipe for redstone lamps. I've tried glass around a torch, glass around a redstone torch, a torch above redstone with glass around it, glass around redstone, wool around a torch, glass surrounded by 4 torches, and various other patterns, but I just can't seem to crack it.
- Gear hitboxes are weird.
- Is there any reason why dying wool isn't a shapeless recipe? Do shapeless recipes not exist in this version? If not, you should add them. I was confused for a while on how to dye wool.
- Redstone activating doors does not act like you'd expect. Some doors have inverted powering behavior, which gets really frustrating when you have double doors. I think that's a pre-existing Alpha bug, but it's still really annoying.
- As fun as the retro mineral blocks (iron, gold, copper) are at first, it doesn't take long before you realize just how goofy they tend to look in builds... at least when stacked on top of each other. The side textures really don't lend themselves to building most of the time. I really want to build with copper blocks in vanilla; in NSSS, I just put my copper blocks in a chest because I don't know what to do with them. Iron blocks are at least tolerable, thanks to the milder gradient compared to the other two.
Other:
- Do gears do anything yet? They don't seem to have any interactions with redstone, as far as I can tell.
- Copper in general looks kinda cool, but it doesn't seem to have much use yet. Gears are alright, but I think the vanilla copper block texture is far more versa
- Not sure how I feel about the new creeper behavior. I get that having them blow up earlier makes you less likely to insta-die from one that sneaks up behind you, but it also means that it's nearly impossible to melee kill them. Granted, bows are machine guns in this version, but I'm not so sure I like fighting creepers in this version. I think I prefer modern vanilla where they walk up to you and stop moving as they begin to detonate. It feels more fair.
- Having iron armor completely stop arrows is interesting. It removes all threat from skeletons, but it does take a toll on your armor. I think skeletons are a bit too easy now. I found myself standing in the middle of a skeleton dungeon, sorting my inventory while skeleton arrows bounced off me. That feels a bit OP. I think skeletons need to have a melee attack so they aren't worse than zombies once you get iron armor.
Suggestions:
- Ability to set render distance father than "Far". This is 2021; I think I can handle a larger render distance for an Alpha fork.
- Change the toggle perspective button to C, or at least make it rebindable. F5 is far from ergonomic.
- Front-facing 3rd-person perspective, mainly for the sake of YouTubers, haha.
- Bringing back over-the-shoulder 3rd-person like Infdev had could be pretty cool, too, and certainly more practical than normal 3rd-person.
- Rotate the top/bottom textures of bookshelves by 90 degrees so you can combine them in floors with normal planks to create a criss-cross pattern.
- Make the cobblestone texture tile properly like the later vanilla textures.
- Backport the furnace top texture so furnaces can become more useful as a decorative block.
- Backport redstone blocks so I can compact my redstone storage... and also so there can be a red mineral block to go with all the others.
- Backport the vanilla feature where a pig on fire drops cooked porkchops. It would make flint and steel a lot more useful, and it would provide an alternative to the very boring process of moving porkchops in and out of furnaces one at a time.
- Backport flower pots, to make bricks more useful and add a way to bring flowers into houses without having to place dirt or grass.
- Backport horizontal logs, because it makes wooden cross-beams so much cooler.
- Add hoppers, but give them have a blockier, fewer-cuboid appearance to fit in better with the fat chests (and save FPS). Also, maybe they should be made out of copper, just to give that resource more functionality. (Screenshot from https://www.curseforge.com/minecraft/texture-packs/qwuiblingtons-fps-block-model-pack)
- Also, hoppers should drop items if they're not pointing into anything. This could allow the block to double as a replacement for droppers in some way, and make it easier to integrate with water streams.
- Speaking of which, items should move faster in water like in the later vanilla versions. I'm not even talking 1.13 physics (though that would be cool), just please make them move faster.
- Add hay bales (and make them reduce fall damage like vanilla), because water bucket MLGs don't seem to work in this version, and it would be good to give wheat some usefulness outside of food, since porkchops are usually much easier to obtain. Also, make your hay bale texture not have any red bands, so it will look better as a thatch roof.
- Have you seen what Better Than Adventure did with its moss blocks, by making them essentially look like a grass cube? I kinda like that. Maybe it would make sense for NSSS to have the same feature. Alternatively, maybe giving moss a different color from grass would be good for expanding the building palette. Bright green grass doesn't exactly fit every aesthetic. I also really like how BTA's moss blocks add some splotches of color to the caves.
Overall, a very pleasant experience. While I miss a lot of stuff from vanilla (like modern redstone, advancements, biomes, and lively oceans), this is definitely far more playable than Alpha 1.1.2, and certainly an interesting look at what could have been. There are definitely some design choices that are arguably better than the vanilla equivalent.
Personally, I think Beta 1.7 is the peak of old-school Minecraft, so I'll probably be playing Better Than Adventure more, but I'll definitely keep checking out NSSS every now and then as well.
Wish placing blocks directionally was easier? Check out this suggestion!
Thanks for the amazing feedback! I'll answer some of your critiques.
This is planned! I'll be adding some more soundscapes in an upcoming update.
Shift-clicking currently exists in NSSS (since a1.1.11), the dragging shortcuts I may implement at some point in the future.
I'll likely be slightly changing the crafting recipe for grey dye to correct this issue.
A wiki is sorely needed, I agree, and I'll be working to put one together in the near future.
Simple - after I spent hours porting the shapeless recipe system from b1.7.3 into a1.1.11, I forgot to add all the shapeless recipes, lol. This will be fixed soon.
This is the expected behavior for doors in Alpha. It was changed in release 1.0.0 IIRC, and requires only marginal alterations to redstone double-door circuits to account for this. The best I can say is to get used to it \:P
As for this and the rest of the texture change suggestions, I am not exactly comfortable with changing the art design of existing textures - the most I have done so far (and probably the furthest I'll go) is changing the fast leaf texture to have a more detailed background (thanks to nox-cgt on discord). I could look into adding variations on the resource blocks that may be more aesthetically pleasing, like how modern minecraft handles polished and carved sandstone.
Gears are currently nonfunctional, and exist as placeholders until I can figure out how to effectively implement their logic. I will have them function in a separate system from redstone.
This is a bug! Transferring over the b1.7.3 netcode to NSSS broke the explosion logic for creepers in singleplayer, and while I've already patched it slightly there are still obvious problems. I'm working to restore their functionality to how they were in vanilla a1.1.2_01, which I think was the right level of danger.
Full Iron armor completely blocking arrows was something that sounded neat in theory, and sadly I didn't have enough time to playtest and iterate on this feature before I had to release. Expect a nerf.
Absolutely. I've been working a lot on optimizing NSSS, and it currently flies at ~1300 FPS on my current machine - expect larger render distances soon.
I will be making it rebindable alongside most, if not all, other controls. I'll also try and work in the second-person view and the over-the-shoulder view as well, though I'm not certain of how yet. I have already seen youtubers literally using reversed versions of their own skins to emulate the second-person camera, lol.
Color me intrigued...
I suppose that's not too much to ask - though, have you considered wumbo chests?
Sounds fine.
Perhaps, though they would likely use a different model/texture.
Also a fine idea.
I'm not particularly keen on hopper blocks because it makes the automation of certain tasks far too easy - and I don't want to let players automate all of the fun out of the game. I am toying with the idea of using minecarts as a means to automatically move items between inventories vis-a-vis modern hopper minecarts, but with expended functionality. Also, I generally would prefer to buff an existing feature to better fill a niche rather than just add a new independent feature just for this niche - something that bugs me a lot with mojang's development approach to modern minecraft.
Items currently move plenty fast if you place ice under the water streams! And come 1.1.12 ice will be much more obtainable in non-snowy worlds, as I am planning on adding seasons and weather in that update.
The negation of fall damage missing due to the lack of MLG-water-buckets is already made up for with the utility use of gold armor - I do feel like NSSS should be more challenging than modern MC has become, and the ability to instantly erase your mistakes by right-clicking fast enough (despite the skill required!) isn't exactly something I want. I will consider the decoration block, however.
I am looking to add a few more building blocks to NSSS, but I am wary of providing too many options - limitation breeds creativity, which is very evident through the amazing builds some players on the official NSSS server have made with the limited block selection currently available. You will see some more options in the near future, however.
1.1.11_10 is out! The OP is a mess right now, I'll be fixing it later.
Could you add a brightness slider (and F3 light level)? (Also, I keep mistaking copper for diamonds while mining.) There was also a chunk rendering issue where several chunks were still interactable but refused to render, and a world generation issue where caves cut off at chunk boundaries occasionally. (Also, dyes don't seem to be accessible in creative, I'd like all in-game items to be accessible in the Creative.) I really like the mod though.
1.1.11_100 is out! Sorry for forgetting to update the OP, I've cleaned it up a lot since the patch notes are now being posted to the blog.
This should hopefully have been fixed with the recent update, as I have incorporated Optimine into NSSS from source code that Scaevolus gave me a few years back. The cave generation issue is a simple fix IIRC but I can't remember where I saw how to correct it at the moment. Also, I have added all the missing items and blocks to the creative inventory now, thanks for pointing that out and I'm glad you like the mod!
I'm against adding a brightness slider to vanilla NSSS, but F3 light level sounds doable.
MC-7196 Nether cave/tunnel generator produces incorrect/cut tunnels (the same bug also affects the Nether)
Example code from 1.6.4:
There is also another issue, where an optimization that stops tunnel carving when it has gone too far to reach the current chunk uses a faulty calculation:
MC-7200 Cave/tunnel generation may cut tunnels a bit too soon (fix included) (crazily, this wasn't fixed in vanilla until 1.18!)
Note that this uses the same parameter names as vanilla (as shown above):
Also, there is an issue where caves cut off unnaturally when there is water on the other side of a chunk boundary, which I fixed by moving the "water check" code to check around each individual block (this is from my own mod):
An example of a large ravine intersecting water; this can cause odd results where a river hangs over a cave but I'd very much rather have intact caves:
There is still one remaining issue - due to the cave generator being unable to see into adjacent chunks due to the fact they may not exist (even the current chunk doesn't exist yet, only its raw pre-chunk data, which is basic terrain at this stage) this can still leave areas where they remove blocks right up to a chunk border next to water, which I fix during chunk population by checking for water source blocks next to air (note that I prevent water springs from generating at y=62/sea level to prevent erroneous block replacement):
You may also notice that in the screenshot of the ravine shown above the sand/gravel patches that generate underwater did not collapse, which is because I check if there is air below and if so place sandstone/cobblestone; aside from preventing caves under bodies of water from flooding it also reduces lag from block updates:
Also, since you've mentioned optimizations the cave generation code can be made significantly faster by replacing Random with this direct replacement (aside from nextGaussian, which is not used by caves); since it extends Random you can replace every instantiation of Random with it (e.g. the World.rand instance):
https://www.dropbox.com/s/20lh7wz1mvta64x/Random48.java?dl=0
Even better is my own "Random64" class, which is not only faster (with some limitations; the basic nextInt method can only generate values between 0-1023) but is fully 64 bit (Random only uses 48 bits, which is a factor of 65536 less and exposes many of the weaknesses of a linear congruential generator, aggravated by poor choices for how the "chunk seed" is calculated - even just using Random64 makes many of these issues far less apparent):
https://www.dropbox.com/s/9d1kqn8b4gx2ep2/Random64.java?dl=0
https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/2929490-the-chunk-seed-algorithm-used-by-caves-and-some (discusses all the various issues that vanilla has, mostly due to poor choices when calculating/hashing chunk seeds)
Notably, older versions (up to at least early Beta, possibly Beta 1.7.3) appear to have been entirely constrained to a 48 bit seed space; in modern versions, possibly since Beta 1.8, biome generation is fully 64 bit:
https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/2229720-can-two-different-seeds-produce-identical-worlds
(that said, the "64 bit" biome generator itself has issues caused by - again - poor use of the RNG, thus why the biome maps in this link have similarities)
Obviously, such changes will alter world generation, including the main fix for caves cutting off along chunk walls, so you may want to be careful implementing any of these (every main version of TMCW has produced completely different worlds due to changes like this but I'm not so concerned about this as I make new worlds anyway for each version, and as your own mod progresses you'll eventually want to consider this).
Also, an interesting thing about "Far" render distance is that it appears to have been only 13 chunks, not 16 chunks, even before release 1.3 (which limited it to 10 chunks due to the internal server using a fixed view distance; I found source for 1.0.0 which had the same limit so it is not just some effect of the changes in 1.3), as the game internally limits the diameter to 400 / 16 + 1 = 26 chunks (in RenderGlobal.loadRenderers(), though the names might not be the same in Alpha as 1.6.4), so even just fixing this (be sure to leave in some form of bounds-checking; I do this by checking the settings as they are loaded from options.txt) would give a noticeable improvement (I'd also recommend changing render distance to be in chunks, as was done by Optifine and in vanilla 1.7+, and as I did - the difference between 8 and 16 chunks is 4x, with another 4x increase between 16 and 32):
Another interesting feature of my own mod is true total darkness, which is unaffected by the brightness setting (IMO, Moody looks awful; the number of torches I place while caving is insane even with brightness on max; either way, even on Moody total darkness is not completely black and can be very easy to see in on badly calibrated monitors (which seems to be the default in Windows 10 if my experience is any indication, I had to adjust the system gamma to as low as it can go to get a good result according to its own calibration tool):
https://www.minecraftforum.net/forums/minecraft-java-edition/suggestions/2868193-a-light-level-of-0-should-be-totally-dark?comment=20 (this includes the code that I currently use, except that the 0.11 in "float offset = gamma * 0.11F;" can be adjusted with a slider to optimize the intensity curve close to 0; an offset of 0 corresponds to vanilla scaling)
Examples:
100% brightness (Bright):
1000% brightness (only possible by modifying the code as gamma is limited to 0-1; note that complete darkness is still pitch-black):
With Night Vision for comparison (note that fog and the sky are also pitch-black and the stars/sun/moon do not render when underground unless you use Night Vision, hiding the end of caves that go outside of unloaded chunks):
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?
My goodness, this is fantastic information, thank you so much for this! I'll see about those cave optimizations stat.
As for the far render distance being capped at 13 chunks: I just fixed this in the newest update, with the new cap being ~32 chunks in all directions for the highest possible distance setting, and far correctly using 16. As I still haven't multithreaded chunk loading and rendering, the highest render distances aren't good for much other than screenshots at the moment (unless your gpu costs roughly as much as your house), but I'm hoping to make large improvements in those areas.
Your brightness/gamma setting suggestions have piqued my interest, and I'll definitely toy with a similar system.
Thanks for your insight!
From what I've heard, you can't reliably multithread the actual part of uploading vertex meshes to the GPU, which takes up the majority of the time taken by a chunk update, especially when there are a lot of vertices; for example:
Specifically, this comment from a Reddit thread about performance:
Note that even in 1.8+ chunk updates still cause lag spikes for this reason, which is one reason why I have not attempted any form of multithreading, just making code optimizations, and multithreading just the rendering code would have very little benefit (even rendering "mega tree" models in flowerpots is far faster than uploading to the GPU, despite being generated from scratch using the same code as the actual trees, except that accesses to the "world" data are redirected to an array which uses simplified IDs instead of block IDs/metadata):
MC-123584 Updating blocks creates lag spikes proportional to geometry in chunk section
Otherwise, I've minimized the number of vertices by culling hidden faces in blocks like snow (reducing face count by up to 6 to 1 and also eliminating artifacts at a distance due to the sides z-fighting through the top), fences, stairs, and so on (the savings in vertex count far offset any increase in render time due to more adjacent block checks), and added a "Fast Fancy" mode for leaves which only renders interior faces within 1 block of the outside, giving performance between Fast and Fancy while not impacting visual quality as much as if only the outsides were rendered, as on Fast.
That said, I'd be interested to know if there is a way to offload mesh uploads to one or more threads; even one thread would help a lot since even if chunk updates are still limited by the upload time they would have no impact on FPS (the 35 ms in the worst-case shown above would reduce FPS to less than 30 if they occurred continuously, though most chunk updates take 1-2 ms).
Most optimization guides for voxel games say to do things like merge adjacent faces (i.e. if you have a 2x2 area of the same blocks render the shared faces as a single face instead of 2-4. However, this won't work well if you have many different types of blocks and/or lighting values, and it seems you'd need to use more modern shader-based rendering techniques to apply the textures properly (there are practically no guides that mention how to render using OpenGL 1.x, as exclusively used by Minecraft until 1.7, then again, they did call it "fixed function" for a reason; it wasn't until they completely updated the rendering system that issues like MC-93243 were finally fixed, in this case, by using a custom fog shader instead of the built-in one, where only NVIDIA supports spherical fog, or at least, the extension that Minecraft uses, as somebody replied to another bug report that it was "really easy" to fix but never gave the fix).
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 joined the Discord Server, but I am unable to talk in any of the chat rooms except bug reports.
Would it be possible to incorporate a BGR patch for Apple Silicon devices into a future release of NSSS? Currently trying to play old Minecraft versions (including NSSS) on Apple Silicon Macs causes the red and blue color channels to be swapped.
(It's kinda cool that it looks like the Aether, but the fun ends there)
It seems that someone has figured out a patch here, maybe it's possible to incorporate something similar into NSSS: https://www.reddit.com/r/macgaming/comments/mcywor/a_rough_patch_for_the_minecraft_bgr_color_schemes/
I've heard of this issue before; it seems that the best fix, which would fix all colors (the "fix" in the link is just a texture pack which doesn't fix anything that doesn't use a proper texture, like the sky), would be to replicate whatever changes were made in 1.6, perhaps by the addition of code to detect the byte order of the system, though it does seem to be in older versions, at least, in the "Tessellator" class (I assume the actual issue in within LWJGL or where OpenGL state gets initialized as I tried modifying 1.6.4 to simulate an incorrect byteorder and while colors were weird it didn't give the same result as the M1 issue):
Interestingly, while colors within Minecraft are usually RGBA (as shown above; actually, on a little-endian system, such as x86, it uses ABGR and this explains the different results when I tried using the wrong ordering, the M1 issues only seems to affect the RGB components) I found this code in TextureUtil that specifies BGRA when uploading textures, though as mentioned before 1.6 doesn't have this issue; either way, I'd imagine the issue/fix is somewhere within code like that shown here:
If LWJGL itself needs to be updated it should be possible to update to at least 2.9.0, the version that 1.6.4 uses; one way might be to modify the version json for Beta 1.7.3 to use the libraries that 1.6.4 uses, which can then be distributed with the mod (much as I do to avoid the need to modify it yourself; in my case, changing the version name and removing the download URL and checksum that makes the vanilla launcher redownload a clean jar).
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?
You should add the ability to spawn in items in creative mode without using /give
This is what it might look like:
Press B to open the creative mode build menu.
I'll see to adding the fix posted by TheMasterCaver ASAP!
Can you add texture packs to NSSS?
Also how do i craft color dye in survival?
Redstone is awesome!
World download
How do i install this in a launcher that isn't MultiMC?
A small server patch has been released to fix two bugs, and a larger patch is in development which will, among other things, bring improved skin support (including capes and thin player models) to NSSS. In addition, it will also bring some integrations with some perks I have been setting up for patrons, as I have now set up a Patreon:
https://www.patreon.com/dirtpiper
A few perks of being a patron include:
custom username color
custom capes
custom particle effects
playtesting of in-development NSSS versions
sneak peeks of upcoming content
and paying my electricity bill!
1.1.11_101 is live! This contains a bunch of bug fixes and adds cape support, among other things. I have two more patches planned for 1.1.11 and then I plan on going full-steam-ahead on 1.1.12, which will bring Seasons and Weather to NSSS. I want NSSS' weather system to be localized and noise-based, instead of the system we got in Beta 1.5 where the entire world experiences the same weather at the same time. I really want to system to feel interesting and justify its existence, rather than just being a nuisance like it is in modern MC.
And 1.1.11_110 is also live! I hope to get _111 done within a week or so.