- Fix exception when trying to place an item without one selected
- Add access modifiers to all class members
- Add `final` to all variables if applicable
- Add `TestBehaviour` to the machines to test the event system
- Convert classes to records where appropriate
- Change `Function<T, T>` to `Consumer<T>`
- Change non generic methods in the `EventHandler` class to generic methods
- Remove unused imports
- Other minor improvements