diff --git a/Minecraft.Client/Common/UI/UILayer.cpp b/Minecraft.Client/Common/UI/UILayer.cpp index 0bad24dd..0d84d9b5 100644 --- a/Minecraft.Client/Common/UI/UILayer.cpp +++ b/Minecraft.Client/Common/UI/UILayer.cpp @@ -400,9 +400,9 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData) case eUIScene_NewUpdateMessage: newScene = new UIScene_NewUpdateMessage(iPad, initData, this); break; - case eUIScene_MiniGamesMenu: - newScene = new UIScene_MiniGamesMenu(iPad, initData, this); - break; + // case eUIScene_MiniGamesMenu: + //newScene = new UIScene_MiniGamesMenu(iPad, initData, this); + //break; // Other case eUIScene_Keyboard: diff --git a/Minecraft.Client/Minecraft.Client.vcxproj b/Minecraft.Client/Minecraft.Client.vcxproj index 6422f7b2..b9d22991 100644 --- a/Minecraft.Client/Minecraft.Client.vcxproj +++ b/Minecraft.Client/Minecraft.Client.vcxproj @@ -7660,6 +7660,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CUfalse false + true true diff --git a/Minecraft.World/SlimeTile.cpp b/Minecraft.World/SlimeTile.cpp index 11068408..e635751d 100644 --- a/Minecraft.World/SlimeTile.cpp +++ b/Minecraft.World/SlimeTile.cpp @@ -1,20 +1,33 @@ #include "stdafx.h" +#include "net.minecraft.world.level.h" +#include "net.minecraft.world.phys.h" +#include "net.minecraft.world.entity.h" #include "SlimeTile.h" -SlimeTile::SlimeTile(int id) : Tile(id, Material::dirt) +SlimeTile::SlimeTile(int id) : Tile(id, Material::sand) { } void SlimeTile::fallOn(Level *level, int x, int y, int z, shared_ptr entity, float fallDistance) { - printf("SlimeTile::fallOn: %f\n", fallDistance); - - if (fallDistance < 4.0f) + // If the entity is a living entity and sneaking (crouching) then do normal fall behavior + shared_ptr le = dynamic_pointer_cast(entity); + if (le != nullptr && le->isSneaking()) { - entity->yd = 0.0; + Tile::fallOn(level, x, y, z, entity, fallDistance); + return; } - else + + // Only apply bounce when there was fall distance (called when landing) + if (fallDistance > 0.0f) { - entity->yd = -entity->yd * 0.8; + // Use the entity's vertical velocity to compute bounce. Use a reasonable multiplier. + float bounce = (float)(-entity->yd * 0.8f); + if (fabs(bounce) < 0.1f) bounce = 0.0f; + + // Apply bounce by setting vertical velocity and reset fall distance. + // Do not call move() here — let normal physics apply the velocity next tick. + entity->yd = bounce; + entity->fallDistance = 0.0f; } } diff --git a/Minecraft.World/SlimeTile.h b/Minecraft.World/SlimeTile.h index c00d10cb..78ca0269 100644 --- a/Minecraft.World/SlimeTile.h +++ b/Minecraft.World/SlimeTile.h @@ -1,13 +1,12 @@ #pragma once #include "Tile.h" +#include "Definitions.h" class SlimeTile : public Tile { friend class Tile; - protected: - SlimeTile(int id); - public: + SlimeTile(int id); virtual void fallOn(Level *level, int x, int y, int z, shared_ptr entity, float fallDistance); };