aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client')
-rw-r--r--Minecraft.Client/ItemInHandRenderer.cpp8
-rw-r--r--Minecraft.Client/ItemInHandRenderer.h1
-rw-r--r--Minecraft.Client/Minecraft.cpp13
3 files changed, 22 insertions, 0 deletions
diff --git a/Minecraft.Client/ItemInHandRenderer.cpp b/Minecraft.Client/ItemInHandRenderer.cpp
index 78253705..f9e63589 100644
--- a/Minecraft.Client/ItemInHandRenderer.cpp
+++ b/Minecraft.Client/ItemInHandRenderer.cpp
@@ -930,6 +930,14 @@ void ItemInHandRenderer::tick()
}
+void ItemInHandRenderer::reset()
+{
+ selectedItem = nullptr;
+ lastSlot = -1;
+ height = 0.0f;
+ oHeight = 0.0f;
+}
+
void ItemInHandRenderer::itemPlaced()
{
height = 0;
diff --git a/Minecraft.Client/ItemInHandRenderer.h b/Minecraft.Client/ItemInHandRenderer.h
index b5d840a2..0c0ac307 100644
--- a/Minecraft.Client/ItemInHandRenderer.h
+++ b/Minecraft.Client/ItemInHandRenderer.h
@@ -41,6 +41,7 @@ private:
int lastSlot;
public:
void tick();
+ void reset();
void itemPlaced();
void itemUsed();
};
diff --git a/Minecraft.Client/Minecraft.cpp b/Minecraft.Client/Minecraft.cpp
index 599a14f2..1fc8bd54 100644
--- a/Minecraft.Client/Minecraft.cpp
+++ b/Minecraft.Client/Minecraft.cpp
@@ -10,6 +10,7 @@
#include "User.h"
#include "Textures.h"
#include "GameRenderer.h"
+#include "ItemInHandRenderer.h"
#include "HumanoidModel.h"
#include "Options.h"
#include "TexturePackRepository.h"
@@ -217,6 +218,7 @@ Minecraft::Minecraft(Component *mouseComponent, Canvas *parent, MinecraftApplet
m_pendingLocalConnections[i] = NULL;
m_connectionFailed[i] = false;
localgameModes[i]=NULL;
+ localitemInHandRenderers[i] = NULL;
}
animateTickLevel = NULL; // 4J added
@@ -4240,6 +4242,17 @@ void Minecraft::setLevel(MultiPlayerLevel *level, int message /*=-1*/, shared_pt
// 4J - stop update thread from processing this level, which blocks until it is safe to move on - will be re-enabled if we set the level to be non-NULL
gameRenderer->DisableUpdateThread();
+ if (level == NULL || player == NULL)
+ {
+ for (int i = 0; i < XUSER_MAX_COUNT; ++i)
+ {
+ if (localitemInHandRenderers[i] != NULL)
+ {
+ localitemInHandRenderers[i]->reset();
+ }
+ }
+ }
+
for(unsigned int i = 0; i < levels.length; ++i)
{
// 4J We only need to save out in multiplayer is we are setting the level to NULL