Ok, so what I'm doing is I'm constantly (every 5 server ticks) setting the velocity of invisible armorstands with a slime as passenger to vector (1, 0, 0). I'm using two BukkitRunnables. One of them spawns ArmorStands with a Slime every 80 ticks and the other keeps them moving while seemingly floating in the air (that's the reason I'm using an invisible armor stand, if I set the gravity of the slime to false it doesn't move I still don't know why). The armor stands are saved in an ArrayList so I can always know which ones to move, and they (and the slimes) get removed from the world and from the list when they are more than 60 blocks away from their origin. All this stuff seems to work, with the exception that sometimes the slimes spawn later than they should (there are 7 "slime cannons" facing the same direction and they should spawn an armor stand with a slime every 80 ticks, which they usually do but not every time). However, the big problem is that if I leave it running for a while (~half an hour or an hour) the game (client-size) lags a lot when I approach the part of the world where this happens. I've made kind of a debugging command to check for the number of alive slimes and armor stands, and also the number of armor stands in the list (so I know how many are being moved by the BukkitRunnable). The numbers are OK, the entities get despawned and removed as they should. The server TPS start at 20 and drop to about 19.3 or 19.4 when I notice the client is lagging (not talking about a specific moment, it slowly happens). However, the client shows non-moving slimes and slimes moving through them and lots of lag only where all of this is happening (If I tp away it runs fine). I will post code if you ask me to, and I can also post screenshots of the moving slimes (and the stuck ones during lag) if needed. Thanks in advance! EDIT: changed something to make it more understandable.