Minecraftサーバーの負荷軽減やサバイバル用の設定についてです
PaperもしくはPaperをForkしたサーバー(Airplaneなど)を導入していることが前提の記事です
目次
前提
設定をする上で最低限知っておかないといけない前提知識
サーバーの名前 | 設定ファイル | Fork元 |
公式サーバー | server.properties | 無し |
CraftBukkit | bukkit.yml commands.yml permissions.yml help.yml | 公式サーバー |
Spigot | spigot.yml | Bukkit |
Paper | paper.yml | Spigot |
Airplane | airplane.air | Paper |
※ここでCraftBukkitの設定ファイルと書かれているものはBukkitの設定ファイルも含む
※Forkとは派生や改造といった意味
ForkしているのでFork元のサーバーの設定ファイルも存在します Paperのサーバーであればserver.properties bukkit.yml commands.yml permissions.yml help.yml spigot.yml paper.yml の7ファイルが設定ファイルです
このサイトでは主にpaper.ymlの最適化設定を紹介します
ですが最初に(server.properties)と書いていたらそれはserver.propertiesの設定ファイルです
起動引数
aikarを使用してGCを最適化します
java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=20 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar nogui
Xms Xmx -jarをあなたのサーバーにあったものに変えて使ってください
1.19以降について
1.19からpaperのconfigの構成が大きく変わりワールドごとにファイルを分ける形となりました
従来のバージョンのconfigからは自動変換されます
読み込みチャンク(1.18未満)
読み込みチャンクを減らすことで大幅に負荷を軽減します 送信チャンク数は変わらないのでプレイにはあまり影響しません
ここでは、例として送信チャンク数をプレイヤーの周りの半径10チャンク、時間が動くチャンク数をプレイヤーの周りの半径4チャンクに設定します
読み込みチャンクを指定します デフォルトは10です
(server.properties)
view-distance=4
送信チャンク数を指定します デフォルトは-1(無効)です
viewdistances:
no-tick-view-distance: 10
読み込みチャンク(1.18以上)
読み込みチャンク数と送信チャンク数を分けてサーバーを軽量化させるという設定は1.18から公式サーバーに追加されたためPaperなどからは削除されました
ここでは、例として送信チャンク数をプレイヤーの周りの半径10チャンク、時間が動くチャンク数をプレイヤーの周りの半径4チャンクに設定します
(server.properties)
view-distance=10
simulation-distance=4
スポーンチャンク
スポーンチャンクを変更します
keep-spawn-loadedをfalseにするとスポーンチャンクがなくなります
keep-spawn-loaded-rangeを変更することでスポーンチャンクの大きさを任意の値に変更することが出来ます デフォルトは10です
ここでは、例としてスポーンチャンクを無くしています
ディメンションが多いサーバーにこの設定は非常に有用です
keep-spawn-loaded: false
keep-spawn-loaded-range: 0
Mobスポーン
同じワールドに複数人プレイヤーがいるとMobのスポーンが減ります
MinecraftではワールドごとにMobの上限が定められておりそれを超えるとMobがスポーンしなくなります
以下の設定にすることでMobの上限をワールドごとではなくプレイヤーごとにします
※なおこの機能にはバグがあります プレイヤーのすぐ近くにいきなりMobがスポーンする可能性があります#2614
per-player-mob-spawns: true
Mobのデスポーンを早くします
Minecraftでは32マス以上離れているランダムに選択されたmobと128マス以上の離れているmobはデスポーンします
遠くに居るmobは不要なので64マス以上離れたmobを強制的にデスポーンさせます
despawn-ranges:
soft: 32
hard: 64
最新のPaperではMobの種類ごとに分けられてるっぽいです
全部のMobのhardを64に変えても問題ないと思います
despawn-ranges:
monster:
soft: 32
hard: 64
128から64に変えるとプレイヤーの周辺に約4倍の量のmobが湧くことになるのでspawn-limitsを1/4に減らすことをオススメします
デフォルトは-1ですがこれはBukkitの値を使用する設定です
spawn-limits:
monster: 18
creature: 3
ambient: 4
axolotls: 2
underground_water_creature: 2
water_creature: 2
water_ambient: 5
爆発
爆発を最適化します
爆発の処理が大幅に早くなります
optimize-explosions: true
TNTが水に流されなくなります
prevent-tnt-from-moving-in-water: true
アーマースタンド
アーマースタンドを動かなくします
armor-stands-tick: false
レッドストーン
レッドストーンの処理が大幅に向上しますが通常のMinecraftと違う挙動をする可能性があります
use-faster-eigencraft-redstone: true
Anti-Xray
地面透視チートの対策です 詳細
以下のは1.16向けの設定なのでバージョンによって鉱石を増やしたり減らしたりしてください
anti-xray:
enabled: true
engine-mode: 2
chunk-edge-mode: 2
max-chunk-section-index: 7
update-radius: 2
lava-obscures: false
use-permission: false
hidden-blocks:
- air
- coal_ore
- diamond_ore
- emerald_ore
- gold_ore
- iron_ore
- lapis_ore
- mossy_cobblestone
- redstone_ore
- ancient_debris
- bone_block
- glowstone
- magma_block
- nether_bricks
- nether_gold_ore
- nether_quartz_ore
- polished_blackstone_bricks
replacement-blocks:
- andesite
- diorite
- dirt
- granite
- gravel
- oak_planks
- stone
- basalt
- blackstone
- gravel
- netherrack
- soul_sand
- soul_soil
アイテムをまとめる
Spigotにはドロップしたアイテムや経験値をまとめる設定があります
一括破壊などを導入しているサーバーでは軽くなると思います
(spigot.yml)
merge-radius:
exp: 7
item: 7
Spigotでエンドラを倒すと経験値がまとまって降ってくるのでそれを回避させるためにエンドのみ0に設定します
エンドに経験値トラップなどがあると重くなるかもしれません
(spigot.yml)
world_the_end:
merge-radius:
exp: 0
おまけ
オウムが肩から落ちなくなります
スニークをすることで解除できます
parrots-are-unaffected-by-player-movement: true
猫がチェストの上に乗っていてもチェストが開けられるようになります
disable-chest-cat-detection: true
通常の2/3の速度で魚が釣れます デフォルトはMinimumTicksが100,MaximumTicksが600です
fishing-time-range:
MinimumTicks: 60
MaximumTicks: 400
ウィザーの敵対しないバグの修正 MC-29274
fix-wither-targeting-bug: true