- TickerCoordinator.pendingChanges is now a HashSet - TickerCoordinator now makes some best-effort checks to make sure the world does not change during evaluation phase - Extracted Cached{Block,Tile}Change - these classes implement hashCode() and equals() based on the location of the block/tile they affect, thus ensuring that only one per block/tile remain in the aforementioned set - Similarly extracted PacketAffect{Block,Tile,Entity} - Renamed a bunch of packets