2024/12/13 [Minecraft]ver_1.16.5以降のmodサーバーを行き来できるプロキシサーバーを立てる！

# 経緯
以前にWaterfallでマインクラフトのプロキシサーバーを立てたが、modサーバーでは1.12以降のバージョンでは動作しなかった。そこで！今回はver_1.16.5以降のmodサーバーを行き来できる**Lightfall**というプロキシサーバーを立てていく。

# 環境
・Windows11
・java23インストール済み

# modサーバーを立てる
modサーバーを行き来するんだからmodサーバーがなくっちゃいけいない、ということでサーバーを立てていきます。
**mohist_ver1.16.5**のサーバーを二つ作成します。
server1とserver2をそれぞれ**ポート番号25570,25571**で設定しておきます。
ここのやり方は調べればゴロゴロ出てくるので飛ばします。下記URLを参照して作成してください。

https://agepote.jp/mcserver/mohist-server

## online-mode=falseにする
mohistサーバーができたら両サーバーのserver.propertiesにあるonline-modeをtrueからfalseにします。
この設定を忘れがちなので注意してください。
```diff
max-world-size=29999984
motd=
network-compression-threshold=256
- online-mode=true 
+ online-mode=false
op-permission-level=4
player-idle-timeout=0
prevent-proxy-connections=false
pvp=true
```

# Lightfallサーバーを立てる
まず、下記サイトから最新バージョンの**lightfall.jar**をダウンロードしてください。

https://github.com/ArclightPowered/lightfall/releases

ダウンロード出来たら**lightfall.jar**と同じフォルダに起動用のstart.batを作成します。

```bat:start.bat
@echo off
java -Xms512M -Xmx512M -jar lightfall.jar nogui
pause
```
プロキシサーバーはほとんどメモリを使用しないので、512MBと設定しています。
batファイルをダブルクリックし、起動が完了したら一度**end**と打ち込んで終了してください。

### 設定変更
自分で作成したmodサーバーに接続させるように設定を変更します。
config.ymlを以下のように変更します。

```yml:config.yml
enforce_secure_profile: false
listeners:
- query_port: 25577
  motd: '&1Another Bungee server'
  tab_list: GLOBAL_PING
  query_enabled: false
  proxy_protocol: false
  forced_hosts:
    pvp.md-5.net: pvp
  ping_passthrough: false
  priorities:
  - lobby
  bind_local_address: true
  host: 0.0.0.0:25565 #ポート番号をデフォルトのものに変更
  max_players: 1
  tab_size: 60
  force_default_server: false
remote_ping_cache: -1
network_compression_threshold: 256
permissions:
  default:
  - bungeecord.command.server
  - bungeecord.command.list
  admin:
  - bungeecord.command.alert
  - bungeecord.command.end
  - bungeecord.command.ip
  - bungeecord.command.reload
  - bungeecord.command.kick
log_pings: true
connection_throttle_limit: 3
server_connect_timeout: 5000
timeout: 30000
stats: 95dd3758-68ca-4aa6-9f59-9be3899595dc
player_limit: -1
ip_forward: false
groups:
  md_5:
  - admin
remote_ping_timeout: 5000
connection_throttle: 4000
log_commands: false
prevent_proxy_connections: false
online_mode: true
forge_support: true
disabled_commands:
- disabledcommandhere
servers:
  lobby: #ポート番号25570のサーバーを設定
    motd: '&1This server has super lightfall power - Forced Host'
    address: localhost:25570
    restricted: false
  wolrd: #ポート番号25571のサーバーを設定
    motd: '&1This server has super lightfall power - Forced Host'
    address: localhost:25571
    restricted: false
  #追加で設定する場合以下のように追加可能
  #new_wolrd:
    #motd: 'new!server'
    #address: localhost:ポート番号
    #restricted: false
```

# クライアントmodを追加
lightfallで作成したサーバーに参加するにはクライアントmodを追加する必要があります。
また、1.16.5と1.19.2以降とで使用するクライアントmodのバージョンが異なるので注意してください。
今回は1.16.5をダウンロードしていきます。下記URLの**lightfall-client-1d4473d.jar**
をダウンロードしてmodを追加してください。

https://github.com/ArclightPowered/lightfall-client/releases/tag/1.16-1

# 検証
以上で構築完了となります。お疲れさまでした。ワールドに参加し、**/server**コマンドを使用してサーバーを行き来することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3716513/188df94a-938b-9095-b050-020d549eb3e7.png)

# おわり
1.16.5のmodサーバーと1.19.2のmodサーバーの行き来も実装できないかといろいろやってみましたが、1.16.5のクライアントmodを1.19.2のforgeで実行するとクラッシュするのでうまくいきませんでした。なので1.16.5で統一するか、全て1.19.2以降のサーバーで統一するかの二択になってしまいます。おおよそWaterfallと使用方法は同じなのでWaterfallを使用したことのある方は比較的簡単に作成できると思います。

# 参考文献
https://agepote.jp/mcserver/lightfall-server