cat /etc/centos-release
dhclient
yum update
L2J is a complex piece of software engineering, it's divided in three main components, login server, game server and datapack.
CentOS 7.6+ comes with OpenJDK 11.
cat /etc/centos-release
dhclient
yum update
L2J is built using Java SE, to build you need Java JDK as well.
yum -y install java-11-openjdk java-11-openjdk-devel
java -version
openjdk version "11.0.4" 2019-07-16 LTS
L2J uses Git as version control system on BitBucket, use it to get the latest versions.
yum install git
L2J uses Maven to build the components from the source code.
wget https://www-us.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz -P /tmp
tar xf /tmp/apache-maven-3.6.1-bin.tar.gz -C /opt
ln -s /opt/apache-maven-3.6.1 /opt/maven
vi /etc/profile.d/maven.sh
# Paste
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.4.11-0.el7_6.x86_64/
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
chmod +x /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh
Get latest version from here.
vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.4 CentOS repository list - created 2019-08-11 20:34 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum install MariaDB-server MariaDB-client
mariadb -u root -p
MariaDB > CREATE OR REPLACE USER 'l2j'@'%' IDENTIFIED BY 'l2jserver2019';
MariaDB > GRANT USAGE ON *.* TO 'l2j'@'%' IDENTIFIED BY 'l2jserver2019';
MariaDB > FLUSH PRIVILEGES;
Our official repositores are the ones listed bellow.
mkdir -p /opt/l2j/git && cd /opt/l2j/git
git clone https://bitbucket.org/l2jserver/l2j-server-login.git
git clone https://bitbucket.org/l2jserver/l2j-server-game.git
git clone https://bitbucket.org/l2jserver/l2j-server-datapack.git
We use Maven to build the server files.
cd /opt/l2j/git/l2j-server-login && mvn install
cd /opt/l2j/git/l2j-server-game && mvn install
cd /opt/l2j/git/l2j-server-datapack && mvn install
The deployment process at the moment is simply unzipping the built files.
mkdir -p /opt/l2j/server/login
unzip /opt/l2j/git/l2j-server-login/target/l2jlogin.zip -d /opt/l2j/server/login
mkdir -p /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-game/target/l2j-server-game-2.6.1.0-SNAPSHOT.zip -d /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-datapack/target/l2j-server-datapack-2.6.1.0-SNAPSHOT.zip -d /opt/l2j/server/game
The file names may change with each new version, take that into consideration.
L2J CLI is a tool developed by Zoey76 that allows us to implement automated deployments and initial configurations.
mkdir -p /opt/l2j/cli && cd /opt/l2j/cli
wget https://github.com/L2J/l2j-server-cli/releases/download/1.0.0-alpha1/l2jcli-1.0.0.zip -P /tmp
unzip /tmp/l2jcli-1.0.0-alpha.zip -d /opt/l2j/cli
chmod 755 l2jcli.sh
./l2jcli.sh
> db install -l /opt/l2j/server/login/sql -u l2j -pw l2jserver2019 -m FULL -t LOGIN
> db install -l /opt/l2j/server/game/sql -u l2j -pw l2jserver2019 -m FULL -t GAME
> quit
You need to give certain permissions for the server to run properly.
cd /opt/l2j/server/login && mkdir -p log
chmod 755 LoginServer_loop.sh
chmod 755 startLoginServer.sh
cd /opt/l2j/server/game && mkdir -p log
chmod 755 GameServer_loop.sh
chmod 755 startGameServer.sh
Use the L2J CLI to create an administrator account, 8 is the maximum account level (master).
cd /opt/l2j/cli
./l2jcli.sh
> account create -u Zoey76 -p -a 8
> quit
To start the server you need to run two scripts.
cd /opt/l2j/server/login
./startLoginServer.sh
cd /opt/l2j/server/game
./startGameServer.sh
If you are not playing from localhost you may need to open the following ports.
firewall-cmd --zone=public --add-port=2106/tcp --permanent
firewall-cmd --zone=public --add-port=7777/tcp --permanent
firewall-cmd --reload
Only this ports are required to connect to the server as a player.
In order to connect to the server you have the following options:
Edit C:\Windows\System32\drivers\etc\hosts and add this line:
127.0.0.1 l2authd.lineage2.com
Create a .bat file with the following content:
@start l2.bin IP=127.0.0.1
Here is a C++ Win32 exe example:
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#define NOMINMAX
#include <windows.h>
#include <cstdlib>
// Start L2 as .bin with IP as parameter.
// You can use IP or DNS as IP parameter.
// You could include other parameters.
// You can change the path to the .bin file to avoid including the L2.exe inside the System folder.
// Author: Zoey76
int _stdcall wWinMain(HINSTANCE hInst, HINSTANCE prevInst, LPWSTR szCmdLine, int nCmdShow)
{
ShellExecute(0, L"open", L"cmd.exe", L"/C start l2.bin IP=127.0.0.1", 0, SW_HIDE);
}
More information here.
Client modification are not allowed in L2J, this include GameGuard and L2.ini changes.