Add a Very Wip Entity Distance option code

TODO:
* maxChunkDistance should be a define and not hardcoded.
* Add Entity Distance Slider code.
* Make a Better code. Specially for EntityTracker::addEntity
This commit is contained in:
GabsPuNs
2026-05-23 16:17:04 -04:00
parent 5b06a7aa9f
commit c626952e12
2 changed files with 122 additions and 42 deletions

View File

@@ -29,44 +29,91 @@ EntityTracker::EntityTracker(ServerLevel *level)
void EntityTracker::addEntity(shared_ptr<Entity> e)
{
if (e->instanceof(eTYPE_SERVERPLAYER))
/*
if (!app.GetGameSettings(localplayer->GetXboxPad(),eGameSetting_ClassicEntityRender))
{
addEntity(e, 32 * 16, 2);
shared_ptr<ServerPlayer> player = dynamic_pointer_cast<ServerPlayer>(e);
for ( auto& it : entities )
int maxChunkDistance = 16;
if (e->instanceof(eTYPE_SERVERPLAYER))
{
if( it && it->e != player )
addEntity(e, 16 * maxChunkDistance, 2);
shared_ptr<ServerPlayer> player = dynamic_pointer_cast<ServerPlayer>(e);
for ( auto& it : entities )
{
it->updatePlayer(this, player);
if( it && it->e != player )
{
it->updatePlayer(this, player);
}
}
}
}
else if (e->instanceof(eTYPE_FISHINGHOOK)) addEntity(e, 16 * 4, 5, true);
else if (e->instanceof(eTYPE_SMALL_FIREBALL)) addEntity(e, 16 * 4, 10, false);
else if (e->instanceof(eTYPE_DRAGON_FIREBALL)) addEntity(e, 16 * 4, 10, false); // 4J Added TU9
else if (e->instanceof(eTYPE_ARROW)) addEntity(e, 16 * 4, 20, false);
else if (e->instanceof(eTYPE_FIREBALL)) addEntity(e, 16 * 4, 10, false);
else if (e->instanceof(eTYPE_SNOWBALL)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_THROWNENDERPEARL)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_EYEOFENDERSIGNAL)) addEntity(e, 16 * 4, 4, true);
else if (e->instanceof(eTYPE_THROWNEGG)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_THROWNPOTION)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_THROWNEXPBOTTLE)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_FIREWORKS_ROCKET)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_ITEMENTITY)) addEntity(e, 16 * 4, 20, true);
else if (e->instanceof(eTYPE_MINECART)) addEntity(e, 16 * 5, 1, true);
else if (e->instanceof(eTYPE_BOAT)) addEntity(e, 16 * 5, 1, true);
else if (e->instanceof(eTYPE_SQUID)) addEntity(e, 16 * 4, 1, true);
else if (e->instanceof(eTYPE_WITHERBOSS)) addEntity(e, 16 * 5, 1, false);
else if (e->instanceof(eTYPE_BAT)) addEntity(e, 16 * 5, 1, false);
else if (dynamic_pointer_cast<Creature>(e)!=nullptr) addEntity(e, 16 * 5, 1, true);
else if (e->instanceof(eTYPE_ENDERDRAGON)) addEntity(e, 16 * 10, 1, true);
else if (e->instanceof(eTYPE_PRIMEDTNT)) addEntity(e, 16 * 10, 10, true);
else if (e->instanceof(eTYPE_FALLINGTILE)) addEntity(e, 16 * 10, 20, true);
else if (e->instanceof(eTYPE_HANGING_ENTITY)) addEntity(e, 16 * 10, INT_MAX, false);
else if (e->instanceof(eTYPE_EXPERIENCEORB)) addEntity(e, 16 * 10, 20, true);
else if (e->instanceof(eTYPE_ENDER_CRYSTAL)) addEntity(e, 16 * 16, INT_MAX, false);
else if (e->instanceof(eTYPE_ITEM_FRAME)) addEntity(e, 16 * 10, INT_MAX, false);
}
else if (e->instanceof(eTYPE_FISHINGHOOK)) addEntity(e, 16 * maxChunkDistance, 5, true);
else if (e->instanceof(eTYPE_SMALL_FIREBALL)) addEntity(e, 16 * maxChunkDistance, 10, false);
else if (e->instanceof(eTYPE_DRAGON_FIREBALL)) addEntity(e, 16 * maxChunkDistance, 10, false); // 4J Added TU9
else if (e->instanceof(eTYPE_ARROW)) addEntity(e, 16 * maxChunkDistance, 20, false);
else if (e->instanceof(eTYPE_FIREBALL)) addEntity(e, 16 * maxChunkDistance, 10, false);
else if (e->instanceof(eTYPE_SNOWBALL)) addEntity(e, 16 * maxChunkDistance, 10, true);
else if (e->instanceof(eTYPE_THROWNENDERPEARL)) addEntity(e, 16 * maxChunkDistance, 10, true);
else if (e->instanceof(eTYPE_EYEOFENDERSIGNAL)) addEntity(e, 16 * maxChunkDistance, 4, true);
else if (e->instanceof(eTYPE_THROWNEGG)) addEntity(e, 16 * maxChunkDistance, 10, true);
else if (e->instanceof(eTYPE_THROWNPOTION)) addEntity(e, 16 * maxChunkDistance, 10, true);
else if (e->instanceof(eTYPE_THROWNEXPBOTTLE)) addEntity(e, 16 * maxChunkDistance, 10, true);
else if (e->instanceof(eTYPE_FIREWORKS_ROCKET)) addEntity(e, 16 * maxChunkDistance, 10, true);
else if (e->instanceof(eTYPE_ITEMENTITY)) addEntity(e, 16 * maxChunkDistance, 20, true);
else if (e->instanceof(eTYPE_MINECART)) addEntity(e, 16 * maxChunkDistance, 1, true);
else if (e->instanceof(eTYPE_BOAT)) addEntity(e, 16 * maxChunkDistance, 1, true);
else if (e->instanceof(eTYPE_SQUID)) addEntity(e, 16 * maxChunkDistance, 1, true);
else if (e->instanceof(eTYPE_WITHERBOSS)) addEntity(e, 16 * maxChunkDistance, 1, false);
else if (e->instanceof(eTYPE_BAT)) addEntity(e, 16 * maxChunkDistance, 1, false);
else if (dynamic_pointer_cast<Creature>(e)!=nullptr) addEntity(e, 16 * maxChunkDistance, 1, true);
else if (e->instanceof(eTYPE_ENDERDRAGON)) addEntity(e, 16 * maxChunkDistance, 1, true);
else if (e->instanceof(eTYPE_PRIMEDTNT)) addEntity(e, 16 * maxChunkDistance, 10, true);
else if (e->instanceof(eTYPE_FALLINGTILE)) addEntity(e, 16 * maxChunkDistance, 20, true);
else if (e->instanceof(eTYPE_HANGING_ENTITY)) addEntity(e, 16 * maxChunkDistance, INT_MAX, false);
else if (e->instanceof(eTYPE_EXPERIENCEORB)) addEntity(e, 16 * maxChunkDistance, 20, true);
else if (e->instanceof(eTYPE_ENDER_CRYSTAL)) addEntity(e, 16 * maxChunkDistance, INT_MAX, false);
else if (e->instanceof(eTYPE_ITEM_FRAME)) addEntity(e, 16 * maxChunkDistance, INT_MAX, false);
}
else
*/
{
if (e->instanceof(eTYPE_SERVERPLAYER))
{
addEntity(e, 16 * 32, 2);
shared_ptr<ServerPlayer> player = dynamic_pointer_cast<ServerPlayer>(e);
for ( auto& it : entities )
{
if( it && it->e != player )
{
it->updatePlayer(this, player);
}
}
}
else if (e->instanceof(eTYPE_FISHINGHOOK)) addEntity(e, 16 * 4, 5, true);
else if (e->instanceof(eTYPE_SMALL_FIREBALL)) addEntity(e, 16 * 4, 10, false);
else if (e->instanceof(eTYPE_DRAGON_FIREBALL)) addEntity(e, 16 * 4, 10, false); // 4J Added TU9
else if (e->instanceof(eTYPE_ARROW)) addEntity(e, 16 * 4, 20, false);
else if (e->instanceof(eTYPE_FIREBALL)) addEntity(e, 16 * 4, 10, false);
else if (e->instanceof(eTYPE_SNOWBALL)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_THROWNENDERPEARL)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_EYEOFENDERSIGNAL)) addEntity(e, 16 * 4, 4, true);
else if (e->instanceof(eTYPE_THROWNEGG)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_THROWNPOTION)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_THROWNEXPBOTTLE)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_FIREWORKS_ROCKET)) addEntity(e, 16 * 4, 10, true);
else if (e->instanceof(eTYPE_ITEMENTITY)) addEntity(e, 16 * 4, 20, true);
else if (e->instanceof(eTYPE_MINECART)) addEntity(e, 16 * 5, 1, true);
else if (e->instanceof(eTYPE_BOAT)) addEntity(e, 16 * 5, 1, true);
else if (e->instanceof(eTYPE_SQUID)) addEntity(e, 16 * 4, 1, true);
else if (e->instanceof(eTYPE_WITHERBOSS)) addEntity(e, 16 * 5, 1, false);
else if (e->instanceof(eTYPE_BAT)) addEntity(e, 16 * 5, 1, false);
else if (dynamic_pointer_cast<Creature>(e)!=nullptr) addEntity(e, 16 * 5, 1, true);
else if (e->instanceof(eTYPE_ENDERDRAGON)) addEntity(e, 16 * 10, 1, true);
else if (e->instanceof(eTYPE_PRIMEDTNT)) addEntity(e, 16 * 10, 10, true);
else if (e->instanceof(eTYPE_FALLINGTILE)) addEntity(e, 16 * 10, 20, true);
else if (e->instanceof(eTYPE_HANGING_ENTITY)) addEntity(e, 16 * 10, INT_MAX, false);
else if (e->instanceof(eTYPE_EXPERIENCEORB)) addEntity(e, 16 * 10, 20, true);
else if (e->instanceof(eTYPE_ENDER_CRYSTAL)) addEntity(e, 16 * 16, INT_MAX, false);
else if (e->instanceof(eTYPE_ITEM_FRAME)) addEntity(e, 16 * 10, INT_MAX, false);
}
}
void EntityTracker::addEntity(shared_ptr<Entity> e, int range, int updateInterval)