I was proud of the Tick Update Scheduler I had made to completely decouple my rendering code from my game logic code until I was creating a writeup for it. I had noticed that my logic is not decoupled at all. Take a look at my application loop.
while (!self.window.shouldClose()) {
try map.tickScheduler.runTicks(io);
try self.draw();
}
self.draw() needs to finish executing before the loop iterates over itself again. I completely ignored this until now. It looks right from a glance. I run my application with a system meant to print a word out 120 times per second. It looks no difference from 60 FPS frame rate that I had limited it to. I can confirm this by having that same system unchanged and capping my FPS to 3. Sure enough, it is blocked.

