Commit Graph

568 Commits

Author SHA1 Message Date
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
Ponk
7ea26bd052 Merge pull request #44 from P0nk/bytebuf-packets
Implement packets on top of Netty's ByteBuf
2021-06-21 22:11:21 +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
Ponk
eb7ee9dabe Merge pull request #33 from wejrox/Custom-rebirth-npc
Custom rebirth npc ID
2021-05-31 21:13:29 +02:00
James McDowell
136ea68ab3 Updated the rebirth NPC to use GraalJS 2021-05-26 19:45:58 +10:00
James McDowell
ae744aa870 Merge remote-tracking branch 'upstream/master' into Custom-rebirth-npc 2021-05-26 19:44:58 +10:00
James McDowell
e967294eb9 Add back in NPC conversation names
The names of the npc conversations were useful for context. Added them  back in.
2021-05-26 19:41:27 +10:00
Ponk
2193057fce Merge pull request #41 from P0nk/streamline-setup
Streamline setup
2021-05-24 21:04:50 +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
Ponk
0b17725e8e Merge pull request #35 from ronancpl7/fix-change-maps-disorder
Fix mob status crash & dmg from map hazard
2021-05-23 07:44:17 +02:00
Ronan Lana
3d5db5d79c fix: incurred ambiguity import 2021-05-22 14:48:44 -03:00
Ronan Lana
d330376706 fix: missed stream import 2021-05-22 11:56:37 -03:00
Ponk
f01452dd87 Merge pull request #21 from P0nk/java-16-and-graal
Upgrade to Java 16 and GraalJS script engine
2021-05-21 21:23:50 +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
Ronan Lana
2aa09f89db fix: Minor code typo 2021-05-20 13:01:42 -03:00
James McDowell
9128329d37 Swapped from list to set to prevent duplicates
Use a set instead, clone instead of adding directly to the list.
2021-05-20 19:16:22 +10:00
P0nk
3cda07db52 Merge branch 'master' into java-16-and-graal
# Conflicts:
#	Dockerfile
2021-05-19 18:03:57 +02:00
Ponk
aa0d98af8b Merge pull request #31 from wejrox/Mounted-config-files-docker-compose
Mounted config files docker compose and sped up image build times
2021-05-19 17:59:31 +02:00
Ronan Lana
f4a4acf742 Encode status patch
Filter out some status crashing players.
2021-05-18 20:21:38 -03:00
Ronan Lana
458de52dbc Broadcast damage from map hazard
Fix taking damage from map hazard not showing to other players.
2021-05-18 18:16:46 -03:00
Ronan Lana
654d461da5 Revise non-related porridge loots
Remove non-related item from mobs.
2021-05-18 14:54:34 -03:00
James McDowell
0345ce844e Removed unnecessary import 2021-05-16 14:51:54 +10:00
James McDowell
cff3d3df56 Added the ability to specify a custom rebirth npc id, which is automatically added to the list of scriptable npcs for overriding. Changed scriptable npcs to use config instead of a constants file, so that users can easily modify them without digging into the code and requiring a rebuild. 2021-05-16 14:46:38 +10:00
James McDowell
f47b38f65d Skip tests and run compile in parallel for speed 2021-05-16 14:32:27 +10:00
James McDowell
45ca7009c8 Updated to allow a generic rebirth npc id to be passed through and used for rebirthing if it's enabled. 2021-05-16 10:32:51 +10:00
James McDowell
8429d78e01 Optimised multi layered builds to speed up deployment, added comments to help new developers, reduced unnecessary objects being sent to the docker build context, mounted in files that may change regularly to remove the requirement for a full rebuild. 2021-05-16 09:59:12 +10:00
James McDowell
d98ab8cf1e Updated dockerignore to prevent the generated database files from being sent to the build context. This was causing an error connected to the docker daemon when issuing docker-compose up --build, possibly due to the size or number of files in that folder causing an overflow of sorts 2021-05-16 09:11:11 +10:00