From d63a688bec665e3b26fd3b313eda26b1d8f6c4ff Mon Sep 17 00:00:00 2001 From: Mohamed Ashraf Date: Tue, 3 Mar 2026 00:26:38 +0400 Subject: [PATCH] 6th batch of changes --- Minecraft.Client/LocalPlayer.h | 6 +++--- Minecraft.Client/MultiPlayerLevel.h | 8 ++++---- Minecraft.Client/MultiPlayerLocalPlayer.h | 2 +- Minecraft.World/CMakeLists.txt | 1 + Minecraft.World/Entity.cpp | 16 ++++++++++++---- Minecraft.World/Entity.h | 5 +++++ 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/Minecraft.Client/LocalPlayer.h b/Minecraft.Client/LocalPlayer.h index b1e8dd238..d7dc8a6f0 100644 --- a/Minecraft.Client/LocalPlayer.h +++ b/Minecraft.Client/LocalPlayer.h @@ -1,7 +1,7 @@ #pragma once -#include "..\Minecraft.World\SmoothFloat.h" -#include "..\Minecraft.World\net.minecraft.world.entity.player.h" -#include "..\Minecraft.World\Pos.h" +#include "../Minecraft.World/SmoothFloat.h" +#include "../Minecraft.World/net.minecraft.world.entity.player.h" +#include "../Minecraft.World/Pos.h" class Level; class User; class CompoundTag; diff --git a/Minecraft.Client/MultiPlayerLevel.h b/Minecraft.Client/MultiPlayerLevel.h index c07b55835..84938bab4 100644 --- a/Minecraft.Client/MultiPlayerLevel.h +++ b/Minecraft.Client/MultiPlayerLevel.h @@ -1,9 +1,9 @@ #pragma once using namespace std; -#include "..\Minecraft.World\HashExtension.h" -#include "..\Minecraft.World\net.minecraft.world.level.h" -#include "..\Minecraft.World\net.minecraft.world.entity.h" -#include "..\Minecraft.World\JavaIntHash.h" +#include "../Minecraft.World/HashExtension.h" +#include "../Minecraft.World/net.minecraft.world.level.h" +#include "../Minecraft.World/net.minecraft.world.entity.h" +#include "../Minecraft.World/JavaIntHash.h" class ClientConnection; class MultiPlayerChunkCache; diff --git a/Minecraft.Client/MultiPlayerLocalPlayer.h b/Minecraft.Client/MultiPlayerLocalPlayer.h index 8687b36ae..6a97c7c49 100644 --- a/Minecraft.Client/MultiPlayerLocalPlayer.h +++ b/Minecraft.Client/MultiPlayerLocalPlayer.h @@ -1,6 +1,6 @@ #pragma once #include "LocalPlayer.h" -#include "..\Minecraft.World\SharedConstants.h" +#include "../Minecraft.World/SharedConstants.h" class ClientConnection; class Minecraft; diff --git a/Minecraft.World/CMakeLists.txt b/Minecraft.World/CMakeLists.txt index 2489988f7..c1caf1e2d 100644 --- a/Minecraft.World/CMakeLists.txt +++ b/Minecraft.World/CMakeLists.txt @@ -1992,6 +1992,7 @@ target_compile_options(${PROJECT_NAME} PRIVATE -fpermissive -Wtemplate-body -Wshift-count-overflow + -pthread -std=c++11 ) diff --git a/Minecraft.World/Entity.cpp b/Minecraft.World/Entity.cpp index 4c9d5cf6f..5ce051ebe 100644 --- a/Minecraft.World/Entity.cpp +++ b/Minecraft.World/Entity.cpp @@ -17,14 +17,17 @@ #include "EntityPos.h" #include "Entity.h" #include "SoundTypes.h" -#include "..\minecraft.Client\HumanoidModel.h" -#include "..\Minecraft.Client\MinecraftServer.h" -#include "..\Minecraft.Client\MultiPlayerLevel.h" -#include "..\Minecraft.Client\MultiplayerLocalPlayer.h" +#include "../Minecraft.Client/HumanoidModel.h" +#include "../Minecraft.Client/MinecraftServer.h" +#include "../Minecraft.Client/MultiPlayerLevel.h" +#include "../Minecraft.Client/MultiPlayerLocalPlayer.h" +#include "../Minecraft.Client/Windows64/Windows64_App.h" int Entity::entityCounter = 2048; // 4J - changed initialiser to 2048, as we are using range 0 - 2047 as special unique smaller ids for things that need network tracked +#ifdef _WIN32 DWORD Entity::tlsIdx = TlsAlloc(); +#endif // _WIN32 // 4J - added getSmallId & freeSmallId methods unsigned int Entity::entityIdUsedFlags[2048/32] = {0}; @@ -44,7 +47,12 @@ int Entity::getSmallId() // for final notification to the client that the entities are removed. We can't go re-using these small Ids yet, as otherwise we will // potentially end up telling the client that the entity has been removed After we have already re-used its Id and created a new entity. // This ends up with newly created client-side entities being removed by accident, causing invisible mobs. +#ifdef _WIN32 if( ((size_t)TlsGetValue(tlsIdx) != 0 ) ) +#else + pthread_key_create(&tlsKey, nullptr); + if ( ((size_t)pthread_getspecific(tlsKey) != 0) ) +#endif { MinecraftServer *server = MinecraftServer::getInstance(); if( server ) diff --git a/Minecraft.World/Entity.h b/Minecraft.World/Entity.h index bde83e307..2248ed9ec 100644 --- a/Minecraft.World/Entity.h +++ b/Minecraft.World/Entity.h @@ -5,6 +5,7 @@ using namespace std; #include "FloatTag.h" #include "Vec3.h" #include "Definitions.h" +#include class Mob; class LightningBolt; @@ -365,7 +366,11 @@ private: static int extraWanderIds[EXTRA_WANDER_MAX]; static int extraWanderCount; static int extraWanderTicks; +#if defined(_WIN32) static DWORD tlsIdx; +#else + static pthread_key_t tlsKey; +#endif public: static void tickExtraWandering(); static void countFlagsForPIX();