Commit Graph
100 Commits
Author SHA1 Message Date
P0nk 5651bee2b5 Move client transition state and hostAddress to fields 2021-06-23 19:03:54 +02:00
P0nk 9638d5c417 Initial Netty implementation for networking
Split into 1 LoginServer and 1 ChannelServer per channel.

There is still a lot of cleanup and refactoring to be done.
Currently, the reliance on IoSession holding client state
is the most pressing issue to be addressed.
2021-06-23 18:20:08 +02:00
P0nk 0fa6ad0e24 Refactor PacketProcessor, split into more methods 2021-06-23 16:09:43 +02:00
P0nk 5431150362 Set up packet codec and channel initialization 2021-06-22 20:32:51 +02:00
P0nk 171215e653 Clean up old In/OutPacket 2021-06-22 17:15:19 +02:00
P0nk 442684d852 Merge branch 'master' into netty
# Conflicts:
#	pom.xml
2021-06-21 22:15:00 +02:00
P0nk 72ff8d563b Refactor packet string charset 2021-06-21 22:03:20 +02:00
P0nk c4c5700d32 Add basic unit tests for ByteBufOutPacket 2021-06-21 21:45:30 +02:00
P0nk 4fd64884f2 Simplify getBytes and add tests for it 2021-06-21 21:45:06 +02:00
P0nk 6d02a95273 Simplify test setup for written bytes 2021-06-20 23:02:01 +02:00
P0nk 926371c9a7 Add unit tests for ByteBufInPacket 2021-06-20 22:53:20 +02:00
P0nk aaf4b558f3 Finish InPacket & OutPacket implementations 2021-06-20 21:27:50 +02:00
P0nk f3faee2e16 Add OutPacket interface and ByteBuf implementation
Replacement for LittleEndianWriter, GenericLittleEndianWriter,
and MaplePacketLittleEndianWriter.
2021-06-20 21:20:39 +02:00
P0nk 00abbb4acd Add InPacket interface and ByteBuf implementation
Replacement for LittleEndianAccessor, SeekableLittleEndianAccessor,
GenericLittleEndianAccessor, and GenericSeekableLittleEndianAccessor.
2021-06-20 21:20:38 +02:00
P0nk 23bad12f8c Netty WIP
Implementing ByteBuf backed In/OutPacket first in a separate branch
2021-06-15 22:12:40 +02:00
P0nk 4dc0935391 Reformat MapleClient
Now uses 4 space indentation
2021-06-08 19:32:06 +02:00
P0nk ef12275f35 Move db stuff to its own directory, update README 2021-05-24 20:29:59 +02:00
P0nk c514c303c7 Increase db init timeout
60 seconds might not be enough during the initial
Docker db setup, but 90 seconds should be plenty.
2021-05-24 20:26:18 +02:00
P0nk 75078a5fa1 Add sql script for basic admin account 2021-05-24 08:25:41 +02:00
P0nk d9d63a1b44 Refactor event max lobbies - is no longer a range
It's no longer a range because it:
1. Makes no sense for it to be a range
2. Makes for simpler scripts since returning a JS array is a hassle with Graal
2021-05-21 20:54:51 +02:00
P0nk 095008a20f Fix event scripts' getEligibleParty
Cannot return a JavaScript array straight up
(otherwise you'll get a PolyglotMap):
it has to be converted first from inside the script.
2021-05-21 19:09:40 +02:00
P0nk bcefd42093 Handle reactor scheduling outside of script
No longer need to make all invocations synchronized
2021-05-21 08:15:01 +02:00
P0nk f9aec05779 Update GraalVM to latest version (21.1.0) 2021-05-20 22:22:26 +02:00
P0nk 406c43b0ec Make all event script invocations thread safe
Simple solution for avoiding concurrent access
of the same evaluated script, but I would be surprised
if performance is not affected for the worse.
The same Invocable is used for all instances of an event,
so more active instances means higher contention of the single Invocable.
Hopefully the number of instances required for it to be noticeably slow
is high enough that this is not an issue.
2021-05-20 22:03:11 +02:00
P0nk cdfb7074ec Make all reactor script invocations thread safe
Might be a bit overkill to force synchronization
for every single method invocation when the only
scheduling done in reactor scripts are:
- 5511000 (summon Targa)
- 5511001 (summon Scarlion)
2021-05-20 21:30:46 +02:00
P0nk 2ce6041ef8 Add thread safe wrapper for Invocable 2021-05-20 21:00:48 +02:00
P0nk 3cda07db52 Merge branch 'master' into java-16-and-graal
# Conflicts:
#	Dockerfile
2021-05-19 18:03:57 +02:00
P0nk 5d4a2506e8 Update README with Java 16 2021-04-18 16:01:10 +02:00
P0nk 4b03b3c4ac Update Dockerfile to Java 16 2021-04-18 12:40:11 +02:00
P0nk cd6415b061 Enforce implementation of PortalScript 2021-04-18 12:31:01 +02:00
P0nk 46c2d92082 refactor: use Invocable instead of ScriptEngine in script managers
- Make fields final
- Inject event script variable earlier
- Remove redundant fields
2021-04-18 11:26:05 +02:00
P0nk 58e69654a2 Let scripts access Java classes
Fix script attempting to schedule with non-long (double) time value
2021-04-17 22:26:18 +02:00
P0nk fcd879f97c Convert remaining scripts to Graal
Mainly missed scripts that use Nashorn's "Packages"
2021-04-17 21:59:15 +02:00
P0nk d2c7023e7b Convert NPC scripts to Graal 2021-04-17 21:57:57 +02:00
P0nk 256e5688e0 Convert quest scripts to Graal 2021-04-17 21:57:48 +02:00
P0nk 542a7b7fd2 Convert reactor scripts to Graal 2021-04-17 21:57:37 +02:00
P0nk 984adc7885 Convert portal scripts to Graal 2021-04-17 21:57:27 +02:00
P0nk 938f7c9390 Convert map scripts to Graal 2021-04-17 21:57:16 +02:00
P0nk 3458d1c7b3 Convert event scripts to Graal 2021-04-17 21:57:04 +02:00
P0nk a18a1cb8ce Replace NashornScriptEngine with implicit GraalJSScriptEngine
GraalJSScriptEngine implements Invocable, which is why casting to it works.
However, this is just a quick and ugly fix to make it compile.
A better solution would be to cast it once, immediately after `eval`,
and from then on only handle it as Invocable.

Scripts still need to be fixed. They are still using Rhino and Nashorn-specific
ways of importing packages.
Usages of "importPackage" and "Packages" need to be replaced with
the Graal specific "Java.type".
2021-04-17 15:12:19 +02:00
P0nk e42fb27459 Bump to Java 16 and updated dependencies
Scripting is not fixed yet
2021-04-17 14:55:06 +02:00
P0nk 5a5110d905 Use existing connection for loading new year + family
Move async tasks earlier for lower chance of having to wait
2021-04-16 20:41:17 +02:00
P0nk 8335e77f2e Load developer room async on startup 2021-04-13 22:44:20 +02:00
P0nk dd7c2a697a Load skillbook source information async on startup 2021-04-13 08:14:11 +02:00
P0nk 055ee01ae9 Load quests async on startup 2021-04-12 22:05:57 +02:00
P0nk a59b55db57 Load cash items async on startup 2021-04-12 21:44:47 +02:00
P0nk 415376ce08 Load skills async on startup 2021-04-12 21:06:05 +02:00
P0nk ab56d18bd3 Log startup time 2021-04-11 14:02:25 +02:00
P0nk 68239bc0b5 Make database operations during startup consistent
Use the same Connection. and log things in a similar fashion
2021-04-11 13:52:35 +02:00
P0nk 858fcd2a3a Actually perform name changes & world transfers on startup
No changes were being committed
2021-04-11 13:05:12 +02:00
P0nk a5b42b8a43 cleanup: use primitive type instead of wrapper type 2021-04-08 17:49:22 +02:00
P0nk 202f2d8bc5 cleanup: use bulk operation instead of iteration 2021-04-08 17:49:21 +02:00
P0nk 3434c7334b cleanup: remove redundant cast 2021-04-08 17:39:55 +02:00
P0nk ebb3aa7ba3 cleanup: prefer List#sort over Collections#sort 2021-04-08 07:44:02 +02:00
P0nk 5730b3b42d cleanup: use implicit generic type with diamond operator 2021-04-08 07:42:10 +02:00
P0nk 8aa44711e3 cleanup: use Integer#parseInt where applicable 2021-04-08 07:40:42 +02:00
P0nk 7ff8190977 cleanup: remove unnecessary boxing 2021-04-08 07:39:02 +02:00
P0nk 5c6f515d18 cleanup: use for-each loop where applicable 2021-04-08 07:36:38 +02:00
P0nk 0ff8a80ef2 cleanup: remove unnecessary semicolon 2021-04-08 07:34:56 +02:00
P0nk f37d4063fb cleanup: remove unnecessary interface modifiers 2021-04-08 07:33:52 +02:00
P0nk dde52653e5 cleanup: remove unnecessary conversion to String 2021-04-08 07:30:12 +02:00
P0nk 5e3b346053 cleanup: use Java-style array declaration 2021-04-08 07:17:03 +02:00
P0nk ed5a444753 cleanup: remove unnecessary unboxing 2021-04-07 23:52:58 +02:00
P0nk 6253169e35 cleanup: replace anonymous inner class with lambda 2021-04-07 23:45:28 +02:00
P0nk 1b36852c8d Clean up README, add section about contributions 2021-04-07 19:28:52 +02:00
P0nk b3c1259580 Use new logging for all startup messages 2021-04-07 18:40:47 +02:00
P0nk 045bcf6dc5 Set up Slf4j and Log4j2 for logging
All logs are kept in the "logs" directory as before.
The most recent logs (up to 20MB) are kept in cosmic-log.log in the root of "logs".
Previous logs (either from previous server starts or logfiles that exceeded max size of 20MB) are stored away in directories according to their creation date.
2021-04-07 18:40:46 +02:00
P0nk 2f34b3ed8b Fix ranking update query using a keyword for field name
"Rank" is a reserved keyword in MySQL 8.
This caused an SQLSyntaxErrorException during the task run.
2021-04-06 21:12:23 +02:00
P0nk 02256e04ed Fix SQL type conversion error during ranking move update
Caused by prior upgrade to MySQL 8 which seems more strict when it comes to type conversions.
2021-04-06 21:11:56 +02:00
P0nk b80d98f36e Add descriptions to all gm 6 commands 2021-04-06 20:08:57 +02:00
P0nk 3b59f95f20 Add descriptions to all gm 5 commands 2021-04-06 20:05:21 +02:00
P0nk f25539f389 Add descriptions to all gm 4 commands 2021-04-06 20:04:20 +02:00
P0nk f9fcc79565 Add descriptions to all gm 3 commands 2021-04-06 20:00:43 +02:00
P0nk a9b23552b0 Add descriptions to all gm 2 commands 2021-04-06 19:51:20 +02:00
P0nk 3cd23a07e2 Add descriptions to all gm 1 commands 2021-04-06 19:42:38 +02:00
P0nk 70d895fef5 Add descriptions to all gm 0 commands 2021-04-06 19:42:38 +02:00
P0nk ca78bce534 Add Discord link 2021-04-05 14:14:32 +02:00
P0nk 4bce7fadb4 Update the README with guides and new tools 2021-04-05 13:42:21 +02:00
P0nk 69635f5e6c refactor: use try-with-resources for db operations in various places 2021-04-05 00:19:59 +02:00
P0nk 4ec4600406 refactor: use try-with-resources for Fredrick db operations 2021-04-05 00:13:32 +02:00
P0nk e13c313839 refactor: use try-with-resources for db operations in various handlers 2021-04-05 00:11:42 +02:00
P0nk 429f82e4fe refactor: use try-with-resources for nx coupon db operations 2021-04-05 00:09:51 +02:00
P0nk 0334391e33 refactor: use try-with-resources for fm shop db operations 2021-04-05 00:07:40 +02:00
P0nk 80e193398c refactor: use try-with-resources for ban db operations 2021-04-04 23:59:24 +02:00
P0nk 8b686b60f1 refactor: use try-with-resources for ranking db operations 2021-04-04 23:56:46 +02:00
P0nk f1ff0cb55f refactor: use try-with-resources for wedding ring db operations 2021-04-04 23:48:56 +02:00
P0nk cb518863b0 refactor: use try-with-resources for various world wide db operations 2021-04-04 23:45:40 +02:00
P0nk 6b6558af01 refactor: use try-with-resources for perma npc/mob db operations 2021-04-04 23:34:35 +02:00
P0nk 59014b86bf refactor: use try-with-resources for monster book db operations 2021-04-04 23:26:15 +02:00
P0nk 9d70f4de04 refactor: use try-with-resources for ring db operations 2021-04-04 23:15:52 +02:00
P0nk 8ceba9fbee refactor: use try-with-resources for PlayerNPC db operations 2021-04-04 23:12:39 +02:00
P0nk 5cb69910bd refactor: use try-with-resources for pet db operations 2021-04-04 22:54:25 +02:00
P0nk 0b91b02f80 refactor: use try-with-resources for monster information db operations 2021-04-04 22:50:09 +02:00
P0nk 50b76bf2ec refactor: use try-with-resources for item information db operations 2021-04-04 22:43:06 +02:00
P0nk de14c5782d refactor: use try-with-resources for item saving & loading db operations 2021-04-04 22:28:52 +02:00
P0nk fc34d54cdd refactor: use try-with-resources for buddy list db operations 2021-04-04 21:48:52 +02:00
P0nk 8c41f713a6 refactor: use try-with-resources for character saving db operations 2021-04-04 21:29:18 +02:00
P0nk 2b0d918401 refactor: use try-with-resources for new character db operations 2021-04-04 21:29:18 +02:00
P0nk b56e1d501f refactor: use try-with-resources for character db operations
Covers everything in MapleCharacter except saving a character, and inserting a new character.
This commit got a bit too big...
2021-04-04 21:29:17 +02:00
P0nk 7e206d4589 refactor: use try-with-resources for client db operations 2021-04-04 16:49:01 +02:00