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);
};