P0nk
3de827553e
Fix idle state disconnecting regardless of received pong
2021-07-12 19:52:55 +02:00
P0nk
5a7d8e6b1f
Use MapleClient for session management
...
First working version of the Netty implementation,
but there's a lot remaining to be done.
2021-07-11 18:56:45 +02:00
P0nk
86224f5152
Merge branch 'master' into netty
2021-07-11 15:20:00 +02:00
P0nk
b8781ee209
Merge branch 'master' into fix-tools
...
# Conflicts:
# pom.xml
2021-07-11 14:53:11 +02:00
P0nk
849d5c63cb
Clean up remaining tools stuff
2021-07-11 14:50:29 +02:00
P0nk
e3b22363d7
Remove undocumented tools written in C
...
I see no point in keeping them if all they do is cause confusion
2021-07-11 14:47:41 +02:00
P0nk
04c4fac58d
Remove DropSpider tool
...
It was meant to crawl hidden-street.net, but it doesn't work
2021-07-11 14:45:52 +02:00
P0nk
c437a08084
Move MapleSkillMakerReagentIndexer to main module
2021-07-11 14:44:15 +02:00
P0nk
93f067379c
Move MapleSkillMakerFetcher to main module
2021-07-11 14:38:43 +02:00
P0nk
91b2901f05
Move MapleSkillbookStackUpdate to main module
2021-07-11 14:29:25 +02:00
P0nk
9563755f26
Move MapleSkillbookChanceFetcher to main module
2021-07-11 14:17:42 +02:00
P0nk
3e1b0dc4e3
Move MapleEquipmentOmnileveler to main module, use existing wz files
2021-07-11 14:05:18 +02:00
P0nk
d09b237157
Move MapleDojoUpdate to main module, use existing wz files
2021-07-11 13:52:33 +02:00
P0nk
798ccecb2f
Move MapleQuestMesoFetcher to main module
2021-07-11 12:08:40 +02:00
P0nk
56f3511395
Move MapleQuestItemFetcher to main module
2021-07-11 12:00:05 +02:00
P0nk
f8ef9afdd9
Move MapleMobBookUpdate to main module
2021-07-11 11:46:40 +02:00
P0nk
c6e915448e
Move MapleMobBookIndexer to main module
2021-07-11 11:40:59 +02:00
P0nk
cbb0f7f09b
Move MapleGachaponItemidRetriever to main module
2021-07-11 11:31:22 +02:00
P0nk
6d49ab45c3
Move MapleWorldMapChecker to main module
2021-07-11 11:15:03 +02:00
P0nk
932ed9f784
Move MapleMapInfoRetriever to main module
2021-07-11 11:08:16 +02:00
P0nk
e2f1981dc4
Move MapleIdRetriever to main module
2021-07-11 10:54:29 +02:00
P0nk
a0215cd3f4
Move MapleMapFieldLimitChecker to main module
2021-07-10 23:42:25 +02:00
P0nk
26e98d012f
Move MapleEventMethodFiller to main module
2021-07-10 23:35:43 +02:00
P0nk
1f94a3b545
Move MapleQuestlineFetcher to main module
2021-07-10 23:26:05 +02:00
P0nk
fc7e97a355
Move MapleQuestItemCountFetcher to main module
2021-07-10 23:18:20 +02:00
P0nk
fdef9e37bb
Move MapleNoItemNameFetcher to main module
2021-07-10 23:10:22 +02:00
P0nk
a088fd29b7
Move MapleNoItemIdFetcher to main module
2021-07-10 22:57:38 +02:00
P0nk
b5ff5f19fc
Move MapleMesoFetcher to main module
2021-07-10 22:51:57 +02:00
P0nk
7af3d6924e
Move MapleReactorDropFetcher to main module
2021-07-10 22:43:05 +02:00
P0nk
e6fef246cb
Move MapleEmptyItemWzChecker to main module
2021-07-10 22:10:21 +02:00
P0nk
08d2b40cc4
Move MapleCouponInstaller to main module, use wz files directly
2021-07-10 20:34:00 +02:00
P0nk
45f3cfdfa6
Move MapleCodeCouponGenerator to main module
2021-07-10 20:17:47 +02:00
P0nk
e93db8b48f
Move MapleCashVegaChecker to main module
2021-07-10 20:02:26 +02:00
P0nk
5b4815f173
Move MapleCashDropFetcher to main module
2021-07-10 19:56:17 +02:00
P0nk
0af167d174
Move MapleCashCosmeticsFetcher to main module
2021-07-10 19:38:00 +02:00
P0nk
da66e7614d
Move MapleCashCosmeticsChecker to main module
2021-07-10 19:20:25 +02:00
P0nk
fdd2ef7b3a
Move MapleBossHpBarFetcher to main module
2021-07-10 18:28:09 +02:00
P0nk
a7cf7b90ce
Clean up the old MapleArrowFetcher
2021-07-10 18:12:53 +02:00
P0nk
bc6593fd81
Move MapleArrowFetcher to the main module
2021-07-10 18:12:36 +02:00
P0nk
14a405adb2
Consistent handling of wz files and their paths
2021-07-10 17:49:04 +02:00
P0nk
fcb43af8e3
Minor refactors
2021-07-10 13:52:19 +02:00
P0nk
0e98abff41
Minor renaming and refactoring
2021-06-29 20:27:32 +02:00
P0nk
828c3c5345
Add Hwid class for "nibble hwid" part of "remote host"
2021-06-29 20:26:14 +02:00
P0nk
d34798649b
Add dedicated host hwid cache, further refactor session coordinator
2021-06-29 08:35:21 +02:00
P0nk
671313ab57
Encapsulate hwid validation
2021-06-29 08:29:29 +02:00
P0nk
50e2b909f1
Use Instant instead of long for time measurement
2021-06-28 12:29:19 +02:00
P0nk
5bc2f47883
Move session init management to new class
2021-06-28 12:00:09 +02:00
P0nk
69a4dd8c6d
Factor out duplicated code that adds remote host to pool
2021-06-28 11:02:06 +02:00
P0nk
b35c4d3de8
Handle hwid assocation expiry in dedicated class
2021-06-28 10:37:06 +02:00
P0nk
2c18f7a4a8
Move the remaining session database logic
2021-06-27 21:35:43 +02:00
P0nk
8041ccd6bd
Move some session database logic to dedicated class
...
I need to clean up this class before attempting
to migrate away from IoSession for session handling.
2021-06-27 09:44:55 +02:00
P0nk
b19f65f7ee
Encapsulate ip address logic in new class
2021-06-26 23:40:59 +02:00
P0nk
f6aca2018e
Packet sending during Netty migration
2021-06-25 14:43:05 +02:00
P0nk
80cacd609a
Disconnect client if idle
...
Thanks SharpAceX for Guida,
which I used as a reference.
2021-06-24 22:09:21 +02:00
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