So I'm working on an AFK-kicking plugin for a fairly large server (average load of 70-100 people), so I'm trying to keep things as performant as possible. Despite a lot of thought on the subject, I don't know how to do it without listening to a bunch of events. Basically, every time one of the specified events happens, I find out what Player caused it, and update the entry corresponding to that player in a HashMap with the current time. The only problem is, PlayerMoveEvents are thrown hundreds of times a second...per player. Assuming they're moving, of course. Multiply that by 75 people, I'm doing a lot of put operations per second. Unfortunately, I don't see how to get around using PlayerMoveEvents, because people could be walking around the world not clicking on anything and get booted. Is there some way to figure out what the last event that happened to player was? Is there a better way of doing this altogether? Please help!