Cull tile entities and throttle mob pathfinding to every 8 ticks.
The players won't see the difference on the pathfinding and the culling improves the performance by a lot in zones with a lot of tile entities
in TileEntityRenderDispatcher.cpp:
Calculate if the tile entities are visible in the camera. Early return if they are so they don't get rendered while the players don't look at those tile entities so .
in PathNavigation.cpp:
Do a simple modulo operation on the current number of ticks to test if its been 8 ticks since last operation. UpdatePath(); doesn't get executed if elapsed time isn't enough
Added many commands from Minecraft Java edition:
setblock
fill
seed
xp
gamemode spectator
summon
effect
difficulty
spawnpoint
setworldspawn
kick
enchant
All of the logic is contained inside of PlayerConnection.cpp along with the previous command handler, i also changed MobEffect.h to add a new helper for potion names -> ids.
And for spectator, a bunch of small changes inside server/client related file, along with the removal of the weird /spectator command which was added previously. I think it can still be refined because im not sure the invisibility thing is working.
Moved the whole logic to a new file (TooltipManager.cpp), and rewrote most of the logic to profit from object oriented programming. The side-effect is that the changes are scattered across entities, tiles and items because moving everything to OOP requires to add the tooltip to every .cpp file for every tile/item/entities (or their class, on plants for example which all use the tooltip IDS_TOOLTIPS_PLANT)
The issue with the default tooltips loop written by 4J is that:
Its running in the main Minecraft::tick loop and is more than a thousand lines long, polluting the function.
Not using C++'s full potential with object oriented programming, 4J decided to use a big switch case (probably because it could run better on hardware without branch prediction like the WiiU or Xbox 360 ?)
And seems to be better off in its own file than in the main Minecraft.cpp file
Thrown eggs used snowball particles when hitting a block, there wasn't any code for the correct particles either.
I added the new egg particles and assigned them to the thrown egg entity.
Before:

Now:

Reviewed-on: https://git.neolegacy.dev/neoStudiosLCE/neoLegacy/pulls/167
Co-authored-by: ACL <puffymono@gmail.com>
Co-committed-by: ACL <puffymono@gmail.com>
fixes:
- treasure enchants being selectable within the enchantment table menu
- frost walker resemblance to decompiled legacy console edition
- enchantment table featuring hot-swappable abilities where the player could replace one tool with another whilst keeping the exact same potential enchantments in the enchant menu
fixes:
- grass path not being on the shovel's diggable list, hence the slow breaking speed whilst mining the block
- grass path AABB collisions, creating a discrepency between farmland + the grass path tile where the former could walk up more tiles than the latter
previously, world generation standards required all parts of the village (houses, pathes, etc) to be in a village-appropriate biome. now, villages have been made to inherit from the well's point-of-view; meaning that, as long as the well is in an acceptable biome, the rest of the village will continue to generate
- Elytra flight, damage, kinetic energy, pretty much any bug someone reported, paper doll, etc.
- Fossil & Igloo generation
- Texture interpolation
- Iggy mouse fix for world settings
- Neo branding on main screen
- Release build txt logger
- Debug mode spectator
- Several server fixes
- Flowerpot fixes
- Several more changes made in TU43
+ Gameplay changes
Stained clay renamed to "Hardened Clay" (e.g. White Hardened Clay)
Gold ore now generates in mesa biomes between Y=32 and Y=79
Shears can no longer be enchanted with Silk Touch
Pigs can be led/bred with potatoes and beetroots (in addition to carrots)
Elder Guardians now drop dry sponges instead of wet sponges
Endermen now spawn in the Nether
+ Added Magma Block, Nether Wart Block, Bone Block, End Stone Block
+ All Beetroot Items
+ Polar Bear (excluding audio)
+ / now opens chat for commands