태그 보관물: 게임

OmniOS에서 마인크래프트 서버 구축하기 (Paper Spigot 1.17 +) (Unix / Oracle Solaris / illumos)

OS 정보

~$ uname -a

SunOS minecraft 5.11 omnios-master-72433da6283 i86pc i386 i86pc

~$ cat /etc/os-release

NAME="OmniOS"
PRETTY_NAME="OmniOS Community Edition v11 r151041"
CPE_NAME="cpe:/o:omniosce:omnios:11:151041:0"
ID=omnios
VERSION=r151041
VERSION_ID=r151041
BUILD_ID=151041.0.2021.11.19
HOME_URL="https://omnios.org/"
SUPPORT_URL="https://omnios.org/"
BUG_REPORT_URL="https://github.com/omniosorg/omnios-build/issues/new"

Java 확인 및 설치

~$ java

-bash: java: command not found

~$ pkg search jdk | awk '/17/'

basename    dir    usr/jdk                   pkg:/runtime/java/openjdk17@17.0.1.12-151041.0
basename    dir    usr/jdk                   pkg:/runtime/java/openjdk17@17.0.1.12-151041.0

~$ sudo pkg install openjdk17

     설치할 패키지:   2
     변경할 조정자:   1
     변경할 서비스:   1
   부트 환경 만들기: 아니오
백업 부트 환경 만들기: 아니오

다운로드                                     패키지            파일     XFER(MB)      속도
완료됨                                      2/2       250/250  139.1/139.1  1.4M/s

단계                                                항목
새 작업 설치                                      624/624
패키지 상태 데이터베이스 업데이트                                완료 
패키지 캐시 업데이트                                      0/0 
이미지 상태 업데이트                                       완료 
빠른 조회 데이터베이스 만들기                                  완료 
검색 색인 읽기                                          완료 
검색 색인 업데이트                                       2/2 
패키지 캐시 업데이트                                      2/2 

~$ java -version

openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-omnios-151041)
OpenJDK 64-Bit Server VM (build 17.0.1+12-omnios-151041, mixed mode, sharing)

마인크래프트 디렉터리 생성, Paper Spigot 다운로드 및 실행

~$ mkdir ~/minecraft && cd ~/minecraft

https://papermc.io/downloads 에서 최신버전의 Paper Spigot 다운로드

~/minecraft$ wget https://papermc.io/api/v2/projects/paper/versions/1.17.1/builds/388/downloads/paper-1.17.1-388.jar

--2021-11-26 11:20:47--  https://papermc.io/api/v2/projects/paper/versions/1.17.1/builds/388/downloads/paper-1.17.1-388.jar
Resolving papermc.io... 172.67.72.198, 104.26.13.138, 104.26.12.138, ...
Connecting to papermc.io|172.67.72.198|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 61843877 (59M) [application/java-archive]
Saving to: ‘paper-1.17.1-388.jar’

paper-1.17.1-388.jar                                                                100%[================================================================================================================================================================================================================>]  58.98M  66.0MB/s    in 0.9s    

2021-11-26 11:20:48 (66.0 MB/s) - ‘paper-1.17.1-388.jar’ saved [61843877/61843877]

~/minecraft$ java -Xms14G -Xmx15G -jar paper-1.17.1-388.jar 

Downloading vanilla jar...
Patching vanilla jar...
System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.1+12-omnios-151041) Host: SunOS 5.11 (amd64)
Loading libraries, please wait...
[11:32:27 ERROR]: Failed to load properties from file: server.properties
[11:32:27 WARN]: Failed to load eula.txt
[11:32:27 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

~/minecraft/eula.txt 의 eula=false 부분을 eula=true 로 수정

~/minecraft$ java -Xms14G -Xmx15G -jar paper-1.17.1-388.jar

System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.1+12-omnios-151041) Host: SunOS 5.11 (amd64)
Loading libraries, please wait...
[11:33:17 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[11:33:17 INFO]: Found new data pack file/bukkit, loading it automatically
[11:33:18 INFO]: Reloading ResourceManager: Default, bukkit
[11:33:18 INFO]: Loaded 7 recipes
[11:33:19 INFO]: Starting minecraft server version 1.17.1
[11:33:19 INFO]: Loading properties
[11:33:19 INFO]: This server is running Paper version git-Paper-388 (MC: 1.17.1) (Implementing API version 1.17.1-R0.1-SNAPSHOT) (Git: 22aaf91)
[11:33:19 INFO]: Server Ping Player Sample Count: 12
[11:33:19 INFO]: Using 4 threads for Netty based IO
[11:33:19 INFO]: Default game type: SURVIVAL
[11:33:19 INFO]: Generating keypair
[11:33:19 INFO]: Starting Minecraft server on *:25565
[11:33:19 INFO]: Using default channel type
[11:33:19 INFO]: Paper: Using Java 11 compression from Velocity.
[11:33:19 INFO]: Paper: Using Java cipher from Velocity.
[11:33:20 INFO]: Preparing level "world"
[11:33:22 WARN]: Unable to find spawn biome
[11:33:23 WARN]: Unable to find spawn biome
[11:33:23 INFO]: Preparing start region for dimension minecraft:overworld
[11:33:23 INFO]: Preparing spawn area: 0%
[11:33:23 INFO]: Time elapsed: 289 ms
[11:33:23 INFO]: Preparing start region for dimension minecraft:the_nether
[11:33:23 INFO]: Time elapsed: 170 ms
[11:33:23 INFO]: Preparing start region for dimension minecraft:the_end
[11:33:23 INFO]: Time elapsed: 69 ms
[11:33:23 INFO]: Running delayed init tasks
[11:33:23 INFO]: Done (4.384s)! For help, type "help"
[11:33:23 INFO]: Timings Reset
> 

※ 실행 명령어의 -Xms14G/-Xmx15G 부분을 서버 환경에 맞게 수정하여 할당할 최소 메모리와 최대 메모리 설정

HordePlusLite – 모드하우 서버 전용 모드

캐쥬얼한 바닐라 호드 플레이를 제공하는 서버 전용 모드

mod.io 사이트가 중국 정부에 의해 중국에서의 접근이 금지된 이후로, 모드 서버 운영에 큰 난관을 맞닥뜨리게 된 중국인 친구 Cabbageman3와 그가 운영하는 QQ 그룹의 회원들의 방황을 보다 못해 만들게 되었다.

서버 측에만 설치하는 모드이다 보니 바닐라 서버로 인식이 되며, 플레이어들은 별다른 다운로드 없이 서버에 접속해서 모드의 기능들을 즐길 수 있다.

일반적인 모드들에 비하면 매우 조촐하지만, 그래도 바닐라 호드 모드 보다는 훨씬 덜 지루하고 재미있다.

설치

1. zip 파일로 압축 된 모드를 다운로드 한다.

2. 압축을 풀어서 나온 HordePlusLite.pak 파일을 해당 서버 디렉토리에 넣는다.

리눅스 : Mordhau/Content/Paks
윈도우즈 : Mordhau\Content\Paks

3. 아래 경로에 위치한 Game.ini 파일을 연다.

리눅스 : Mordhau/Saved/Config/LinuxServer/Game.ini
윈도우즈 : Mordhau\Saved\Config\WindowsServer\Game.ini

4. 아래의 한 줄을

SpawnServerActorsOnMapLoad=/Game/Mordhau/Maps/HordePlusLite/BP_HordePlusLite.BP_HordePlusLite_C

이 밑에 추가한다.

[/Script/Mordhau.MordhauGameMode]

지원되는 맵 리스트

  • HRD_Camp
  • HRD_Castello
  • HRD_Feitoria
  • HRD_Grad
  • HRD_MountainPeak
  • HRD_Taiga
  • HRD_Crossroads

기능 리스트

  • 각 웨이브 보상 골드가 1.5배 늘어남
  • 방패막기를 유지하는 적들은 100%의 추가 피해를 받음
  • 닌자들은 어떤 데미지든 입으면 즉시 사망
  • 토마토 적에게서 화염병 제거
  • 플레이어들이 구매할 수 있는 퍽
    • 닷지
    • 플레시 운드
    • 반쪽짜리 블러드러스트 (근접공격으로 적을 죽일 시 체력 50 회복)
    • 반쪽짜리 퓨리 (근접공격으로 적을 죽일 시 스태미나 50 회복)
  • 랜덤 상자에 아래 무기들 추가
    • Lute
    • Jug
    • Stool
    • Carrot
    • Ancient Falx
    • Ogre Club
    • Seymour’s Longsword
    • Great War Axe
  • 랜덤 상자에서 응가 제거
  • 철이나 쇠로 된 무기의 둔기 부분으로 휘두를 시 적의 방어를 뚫고 피해를 줌
    • Longsword Alt
    • Rusty Longsword Alt
    • Estoc Alt
    • Heavy Hand Axe Alt
    • Pole Axe Alt
    • Blacksmith Hammer
    • Frying Fan
    • Sledgehammer
  • 랜덤 상자의 리스폰 시간 단축 (5초 -> 3초)
  • 킬 수에 따른 보너스
    • 50킬 이상 : 5% 이동속도 보너스
    • 100킬 이상 : 3단 점프
    • 150킬 이상 : 10% 이동속도 보너스
    • 200킬 이상 : 초당 5 스태미나 회복
    • 250킬 이상 : 15% 이동속도 보너스
    • 300킬 이상 : 초당 3 생명력 회복
    • 350킬 이상 : 20% 이동속도 보너스
    • 400킬 이상 : 공격중에 공격당해도 멈추지 않음

모드하우 맵 스크린샷들

King DespacitoMetaMod 에 바닐라 맵들을 서브레벨 한 내 커스텀 맵들의 메타데이터를 등록하기 위해 찍은 사진들인데, 바닐라 서브레벨 한 커스텀 맵들은 바닐라 메타데이터를 재활용할 수 있어서 결국 쓰이진 못했다.

하지만 생각보다 이쁘게 찍혀서 여기에 업로드 해 보았다.

OmniOS에서 마인크래프트 서버 구축하기 (Paper Spigot ~1.16.x) (Unix / Oracle Solaris / illumos)

※ 마인크래프트 1.17 버전 이후는 최신 글 참조

OS 정보

~$ uname -a

SunOS omni 5.11 omnios-master-b7ba24aaa1 i86pc i386 i86pc

~$ cat /etc/os-release

NAME="OmniOS"
PRETTY_NAME="OmniOS Community Edition v11 r151035"
CPE_NAME="cpe:/o:omniosce:omnios:11:151035:0"
ID=omnios
VERSION=r151035
VERSION_ID=r151035
BUILD_ID=151035.0.2020.09.26

Java 확인 및 설치

~$ java -version

-bash: java: command not found

~$ sudo pkg install jdk

Packages to install: 2 Mediators to change: 1 Services to change: 1 Create boot environment: No
Create backup boot environment: No
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 2/2 371/371 101.1/101.1 1.0M/s
PHASE ITEMS
Installing new actions 537/537
Updating package state database Done
Updating package cache 0/0
Updating image state Done
Creating fast lookup database Done
Reading search index Done
Updating search index 2/2
Updating package cache 2/2

~$ java -version

openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-omnios-151035-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)

마인크래프트 디렉터리 생성 및 실행

~$ mkdir ~/minecraft && cd ~/minecraft

https://papermc.io/downloads 에서 다운로드 받은 서버 파일을 ~/minecraft 디렉터리로 이동

~/minecraft$ java -Xmx1G -jar paper-209.jar

Downloading vanilla jar…
Failed to download vanilla jar
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at sun.security.ssl.Alerts.getSSLException(Alerts.java:214)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1967)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1924)
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1907)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1423)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1400)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1570)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:268)
at java.net.URL.openStream(URL.java:1068)
at io.papermc.paperclip.Paperclip.checkVanillaJar(Paperclip.java:190)
at io.papermc.paperclip.Paperclip.checkPaperJar(Paperclip.java:121)
at io.papermc.paperclip.Paperclip.setupEnv(Paperclip.java:94)
at io.papermc.paperclip.Paperclip.main(Paperclip.java:48)
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at sun.security.validator.PKIXValidator.(PKIXValidator.java:104)
at sun.security.validator.Validator.getInstance(Validator.java:181)
at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:318)
at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:179)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:193)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1670)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:226)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1082)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:1010)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1079)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1388)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1416)
… 11 more
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)
at java.security.cert.PKIXParameters.(PKIXParameters.java:120)
at java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104)
at sun.security.validator.PKIXValidator.(PKIXValidator.java:102)
… 23 more

https://www.oracle.com/kr/java/technologies/javase/javase-jdk8-downloads.html 에서

jdk-8u261-solaris-x64.tar.gz 파일 다운로드 및 압축 풀기

서버 /etc/ssl/java/cacerts 파일을 압축 풀어서 나온 /jdk-8u261-solaris-x64/jdk1.8.0_261/jre/lib/security/cacerts 파일로 대체

~/minecraft$ java -Xmx1G -jar paper-209.jar

Downloading vanilla jar…
Patching vanilla jar…
System Info: Java 1.8 (OpenJDK 64-Bit Server VM 25.265-b01) Host: SunOS 5.11 (amd64)
Loading libraries, please wait…
[16:23:35 ERROR]: Failed to load properties from file: server.properties
[16:23:35 WARN]: Failed to load eula.txt
[16:23:36 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

~/minecraft/eula.txt 의 eula=false 부분을 eula=true 로 수정

~/minecraft$ java -Xmx1G -jar paper-209.jar

※ – 실행 명령어의 -Xmx1G부분에서 할당할 메모리 변경
4GB의 경우 -Xmx4G, 16GB의 경우 -Xmx16G