Berahthrabans patch of MoMIME
Posted: Fri Jul 24, 2020 8:23 pm
Hi guys,
After being a long-time silent observer, 5 years at the very least, I finally decided to go out of hiding and do some tinkering on the source. But first things first: Words can not tell how grateful I am, for Implode starting this project so long ago, making it free software, and sticking with it to this point! This is a kind of perseverance rarely seen among hobby project devs. After taking a look at the code, I have to add: It's nicely done! The project has become quite big. But it's so well structured, it took me about an hour from checking out the code to implement a first minor change in server-side city processing. ;-)
What I did so far:
- A "feature" which already got on my nerves over 20 years ago, when I played MoM for the very first time: No production carry-over from one project to the next! I hated it back then and I hate it now. But since Implodes code is so very well done, it was easy for me to change. So, now production carries over! I implemented the feature on top of 0.9.8.1 in the server.
- Another small feature I implemented are cancelable spells. This is realized via the Apprentice window (F3). Click on the spell you want to cancel and then on the "Cancel spell" button and the spell vanishes from the list, along with all mp you may already have invested in it. So, be careful! - It's implemented in the client.
- Yet another small feature is a toast message when casting a overland spell via the spell book. (The spell gets added to the queue.) In this case the spell book remains open.
If you want to give those changes a try, download the server / client from my dropbox: https://www.dropbox.com/sh/yysvmq6p4kmm ... AQH2a?dl=0
If you just want to play, you only need to grab the momime-server-0.9.8.1.jar (for carried over production) / momime-client-0.9.8.1.jar (for cancelable spells and spell casting toasts) and put it in your installation directory in the "lib" folder. Restart the server / client and the appropriate change gets active.
Maybe Implode wants to incorporate some or all of the changes into his project. I created and uploaded patch files for this. (I'd feel honored if he did.)
I've also got the following further features on my agenda:
- fix (client doesn't start a new turn, freezes in turn processing):
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:373)
at java.base/java.util.ArrayList.remove(ArrayList.java:503)
at momime.client.messages.process.RemoveQueuedSpellMessageImpl.start(RemoveQueuedSpellMessageImpl.java:41)
at com.ndg.multiplayer.base.client.MultiplayerBaseClientThread.startFirstMessageOnQueue(MultiplayerBaseClientThread.java:138)
at com.ndg.multiplayer.base.client.MultiplayerBaseClientThread$1.run(MultiplayerBaseClientThread.java:88)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
- client: city screen: checkbox which prevents further city growth
- client: speed up unit movement
- client: display number of turns for current project
- client: conquered city screen: Yes in red and No in green
- server: analyze possibilities to utilize concurrency in turn processing
- client: all num pad keys should move selected units
- client: wider zooming-range in overland map
- client: ability to increase font size of user interface
- client: ability to fullscreen mode (enhances immersion and scrolling)
- maybe help with some of the tickets logged over at sourceforge
I'm really excited Implode made it so easy to implement features for one of the best 4x games of all times!
Best regards!
After being a long-time silent observer, 5 years at the very least, I finally decided to go out of hiding and do some tinkering on the source. But first things first: Words can not tell how grateful I am, for Implode starting this project so long ago, making it free software, and sticking with it to this point! This is a kind of perseverance rarely seen among hobby project devs. After taking a look at the code, I have to add: It's nicely done! The project has become quite big. But it's so well structured, it took me about an hour from checking out the code to implement a first minor change in server-side city processing. ;-)
What I did so far:
- A "feature" which already got on my nerves over 20 years ago, when I played MoM for the very first time: No production carry-over from one project to the next! I hated it back then and I hate it now. But since Implodes code is so very well done, it was easy for me to change. So, now production carries over! I implemented the feature on top of 0.9.8.1 in the server.
- Another small feature I implemented are cancelable spells. This is realized via the Apprentice window (F3). Click on the spell you want to cancel and then on the "Cancel spell" button and the spell vanishes from the list, along with all mp you may already have invested in it. So, be careful! - It's implemented in the client.
- Yet another small feature is a toast message when casting a overland spell via the spell book. (The spell gets added to the queue.) In this case the spell book remains open.
If you want to give those changes a try, download the server / client from my dropbox: https://www.dropbox.com/sh/yysvmq6p4kmm ... AQH2a?dl=0
If you just want to play, you only need to grab the momime-server-0.9.8.1.jar (for carried over production) / momime-client-0.9.8.1.jar (for cancelable spells and spell casting toasts) and put it in your installation directory in the "lib" folder. Restart the server / client and the appropriate change gets active.
Maybe Implode wants to incorporate some or all of the changes into his project. I created and uploaded patch files for this. (I'd feel honored if he did.)
I've also got the following further features on my agenda:
- fix (client doesn't start a new turn, freezes in turn processing):
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:373)
at java.base/java.util.ArrayList.remove(ArrayList.java:503)
at momime.client.messages.process.RemoveQueuedSpellMessageImpl.start(RemoveQueuedSpellMessageImpl.java:41)
at com.ndg.multiplayer.base.client.MultiplayerBaseClientThread.startFirstMessageOnQueue(MultiplayerBaseClientThread.java:138)
at com.ndg.multiplayer.base.client.MultiplayerBaseClientThread$1.run(MultiplayerBaseClientThread.java:88)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
- client: city screen: checkbox which prevents further city growth
- client: speed up unit movement
- client: display number of turns for current project
- client: conquered city screen: Yes in red and No in green
- server: analyze possibilities to utilize concurrency in turn processing
- client: all num pad keys should move selected units
- client: wider zooming-range in overland map
- client: ability to increase font size of user interface
- client: ability to fullscreen mode (enhances immersion and scrolling)
- maybe help with some of the tickets logged over at sourceforge
I'm really excited Implode made it so easy to implement features for one of the best 4x games of all times!
Best regards!