Game/Minecraft

https://dexlab.net:443/pukiwiki/index.php?Game/Minecraft
 

Minecraft


プログラムで制御


ブロックIDを調べる


トラブル

  • Minecraft - JIRA 英語だが、既存の問題、修正された問題、新規の不具合報告等できる。
  • パフォーマンスチューニング
    • プレイして暫くするとカクつき出すのはメモリ不足かもしれない。タスクマネージャーでjavaプロセスを見て、1GBまで使っていれば不足している。
      • ドラクエMOD 6.40では最低2GB程度が必要だった
    • 64bit OS, 64 bit版 javaをインストールする
    • メモリを多く積み、javaのメモリ割り当てを増やす。
    • Minecraft Japan Wiki - Minecraft Launcher JVM Arguments参照
      -Xms1G -Xmx2G -XX:PermSize=128M -XX:MaxPermSize=256M

ワールド配布


建築物設計ツール マインプランナー

バックアップ・リストア

  • 以下を丸ごとzip圧縮で良い
    %APPDATA%\.minecraft\
  • セーブデータ単体
    %APPDATA%\.minecraft\saves

スナップショットは開発版

バグフィックス、新機能等はスナップショットとして公開されている。 ただし、不具合もかなりあるので自己責任。
必ず既存のjarや、ワールドはバックアップする。メインのワールドでは試さない方が良いだろう。最悪壊れる。

メリットは、プレイヤーは新規機能や不具合修正を正式リリース前に楽しめる、開発元は正式リリース前にプレイヤーのフィードバックを得る事ができる。
問題を見つけたら、既存の問題がMinecraft - JIRAで確認した上で、新規ならば報告(英語で)する。

  • http://www.mojang.com/
    • クライアント:minecraft.jar
      %APPDATA%\.minecraft\bin
    • サーバ:minecraft_server.jar

1部屋5人まで無料接続可能なVPN「hamachi」を使ってプレイする方法

  • Hamachi
    • http://ja.wikipedia.org/wiki/Hamachi
    • 5人までの部屋を複数作る事で20人同時プレイは可能
    • 無料アカウントではVPNを使って5人まで同時プレイできるが、全員がhamachiアカウントを取得する必要がある
    • 有料版:1ネットワーク最大32名/1,500円
      1ネットワーク最大256名/9,000円
    • 固定IPは不要
    • 簡単にいうとLAN内でプレイするような形になる
    • 1人はMinecraftサーバを立てる必要がある
    • サーバ側はルータ等の設定でポートを開けなくても良い
    • Minecraftのサーバ、クライアントバージョンは揃える必要がある
  • hamachiにログインできて、マイクラマルチにログインできない場合
    • スナップショット等のバージョンがあっているか?
    • サーバ一覧が×でも、hamachiからマイクラサーバを右クリック > IPv4アドレスをコピー でマイクラ側で「ダイレクト接続」で行ける場合もある

Minecraft Server

  • [v1.8以上] JSON, UUIDに変わった。古い設定ファイルがある場合は起動時に自動変換される。
    • banned-ips.json IPアドレスBANリスト
    • banned-players.json BANリスト
    • ops.json オペレータ権限リスト
    • whitelist.json ホワイトリスト
  • [v1.7以下] minecraft_server.jar と同じ場所に、1行1ユーザIDを記述し、改行で区切る
    • banned-ips.txt IPアドレスBANリスト
    • banned-players.txt BANリスト
    • ops.txt オペレータ権限リスト
    • white-list.txt ホワイトリスト

クラッシュ対策

  • ユーザの操作:
  • 複数人が馬で未探索のマップを広げる。(=新しく地形が生成され続ける)
  • 広い範囲(64x64)にある無限水源を潰す事で、水位に変化がある
  • 遠くへテレポートする
  • 現象: logs/latest.log に以下のメッセージが表示され、クラッシュする事がままある
  • Can't keep up! Did the system time change, or is the server overloaded?
  • moved too quickly!
  • 記事
  • Minecraft 1.8以降
  • server.properties の watchdog timerをオフにする。デフォルトでは1回のtickに60秒以上かかると、サーバを停止する。ラグを許容する場合、-1にする事で改善するかもしれない。
- max-tick-time=60000
+ max-tick-time=-1

Monitで自動再起動

希にクラッシュする事があるので自動再起動させる

  1. Ubuntuの場合
    sudo aptitude install monit
    sudo vim /etc/monit/monitrc
    --
    set daemon 60
    set httpd port 2812 and
      use address localhost
      allow localhost
      allow admin:monit
      allow @monit
      allow @users readonly
    include /etc/monit/conf.d/*.conf
    --
  2. filemonit.minecraft.zip を展開し /etc/monit/conf.d/ にコピー
  3. 起動と確認
    sudo vim /etc/monit/conf.d/minecraft.conf
    --
    # PID, homeディレクトリ, port等を変更
    --
    sudo service monit start
    sudo chkconfig monit on
    sudo monit status
    
    # minecraftが監視されているか確認

Zabbixでプレイヤー数を監視をする

Memo/Zabbix?で現在のプレイヤー数の監視をする。
現在のプレイヤー数を取得する方法はいくつかあった。

  • [Linux] 起動スクリプトからlistコマンドを実行する
    • 起動スクリプトを既に利用している場合は簡単
    • minecraft実行ユーザでlistコマンドを利用するため、zabbixユーザにsudoを与える必要があるのがいまいち
  • [Linux/他] Minecraftクライアントの通信を真似てプレイヤー数を取得する
  1. filezabbix-minecraft.zip が必要
  2. Minecraftを実行しているホスト(例:Ubuntu 12.xx LTS)
    # zabbixユーザがsudo出来るように
    sudo sh -c 'echo "zabbix ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zabbix'
    sudo chmod 0440 /etc/sudoers.d/zabbix
    
    # zabbix-agentでminecraftの監視設定を追加
    sudo cp userparameter_minecraft.conf /etc/zabbix/zabbix_agentd.d/userparameter_minecraft.conf
    sudo service zabbix-agent restart
    
    # テスト
    sudo su -
    sudo -u zabbix zabbix_agentd -t 'minecraft.players.num[user01,/home/user01/minecraft/minecraft]'
    minecraft.players.num[/home/user01/minecraft/minecraft] [t|1]
    
    sudo -u zabbix zabbix_agentd -t 'minecraft.players.max[user01,/home/user01/minecraft/minecraft]'
    minecraft.players.max[/home/user01/minecraft/minecraft] [t|10]
  3. Zabbixサーバの設定: 設定 > テンプレート > インポート: Template_App_Minecraft.xml
  4. 設定 > ホスト > <Minecraftサーバ> を開き、テンプレートタブ > 追加で上記のテンプレートを選択
  5. 同テンプレートのマクロタブで以下を設定
    • 起動スクリプトのパスを指定: {$MC_INIT_SCRIPT1} /home/dex/minecraft/minecraft
    • Minecraftサーバの起動ユーザを指定: {$MC_USER1} user01
  6. 同一サーバで複数のバージョンのMinecraftが動作している場合は、テンプレートのアイテムを複製し、マクロを増やす

zabbix-minecraft-players.jpg


1台で複数のマインクラフトサーバを起動する

CPU/メモリの余裕があれば、ポート変更で複数起動できた。

  • 例:
    • 1つめ: /home/user01/minecraft
    • 2つめ: /home/user01/minecraft2
  1. 2つめのポートを変更(1つ目とは異なるように)
    vim /home/user01/minecraft2/server.properties
    ----
    server-port=25566
    rcon.port=25576
    ----
  2. fileminecraft-latest.20181117.zip を展開し、/home/user01/minecraft2/minecraft-02 のように別名でコピー
    • このスクリプト は複数のscreenを扱えなかったので修正
    • 1.7からログファイルのパスが変わったようでcommandが機能しない点を修正。
    • PIDファイルを作るように修正。monit等で自動再起動できる。
    • updateが動作しない点を修正(1.13.2で確認)
  3. 起動スクリプトを変更
    vim /home/user01/minecraft2/minecraft-02
    ----
    # jarファイルの名前。1つめと異なる名前にする
    SERVICE='minecraft_server.1.8.1.jar'
    # SCREEN名。1つめと異なる名前にする
    SCREEN_NAME='minecraft-02'
    # 実行ユーザ名
    USERNAME='user01'
    # ワールド名
    WORLD='world'
    # jarファイルがあるパス
    MCPATH='/home/user01/minecraft2'
    # バックアップ先
    BACKUPPATH='/home/user01/minecraft2/backup'
    ----
  4. 起動/終了
    # 起動
    ./minecraft2/minecraft-02 start
    
    # 終了
    ./minecraft2/minecraft-02 stop

ユーザのUUIDを調べる

ユーザ識別が、Minecraft 1.8からUSER NAMEからUUIDに変わった。
そのため、ops.json, whitelist.json, 等に入力するにはUUIDを調べる必要がある(古い設定ファイルがある場合は、初回起動時に変換されるようだ)

  • curlを使う場合
    curl https://api.mojang.com/users/profiles/minecraft/<username>

死因を集計

  • 死亡原因によって文字列が違うのでそれを集計。filemc_death_counter.php
    ./mc_death_counter.php server.log | head -n 3
    0079 magic
    0040 entity.DQM.ツボック.name
    0038 hit the ground too hard

定期バックアップ

  • fileminecraft-backup.sh Linux用。毎日01:05に"world1", "world2"をバックアップし、7日間保存する場合
    # スクリプト中の以下のパスを適切に設定
    # MCPATH='/home/minecraft/minecraft'
    # BACKUPPATH='/media/remote.share/minecraft.backup'
    
    chmod 755 minecraft-backup.sh
    crontab -e
    ----
    5 1 * * * /usr/bin/nice /home/minecraft/minecraft/minecraft-backup.sh "world1" "world2" > /home/minecraft/minecraft/minecraft-backup.log 2>&1
    ----

minecraft missing the required element 'version' and a version.properties file could not be found

Forge Server + フックショット[162_87].zip で下記エラーが発生
「minecraft missing the required element 'version' and a version.properties file could not be found.」
versionに全角文字が入っているのが問題。削除すれば良い。

  1. 7-zip 等で 該当MOD を開く
  2. mcmod.infoをエディタで開く
  3. versionから全角文字を取り除く
    "version":"162_87",
  4. サーバ、クライアント共に同じMODをmods/にコピー

ForgeをServerにインストールする

  • Clientにも同じバージョンのForge, MODを入れる必要がある。
  • Forgeインストーラを使う場合、事前に minecraft_server.1.6.2.jar をダウンロードする必要は無い
  • GUI環境での方法。CUI環境のみでinstallerを使ってインストールする方法は分からなかった
  1. http://files.minecraftforge.net/ から Recommended版installerをダウンロード
  2. インストーラの起動
    java -jar minecraftforge-installer-1.6.2-9.10.0.804.jar
  3. Install serverを選択。必要なパッケージをダウンロードしてくれる
    libraries
    minecraftforge-installer-1.6.2-9.10.0.804.jar
    minecraftforge-universal-1.6.2-9.10.0.804.jar
    minecraft_server.1.6.2.jar
  4. minecraftforge-universal.x.x.x.jar から起動するように変更する
    java -Xmx1024M -Xms1024M -jar minecraftforge-universal-1.6.2-9.10.0.804.jar nogui
  5. 自動的に必要なファイル類が作成される。MODは mods/ の中にいれて再起動

MOD


RCONでリモートからサーバを操作

  • 例としてUbuntuでMinecraftサーバを動作させ、Windowsクライアントから操作する
    • Minecraft serer IP: 192.168.1.10
  1. 設定ファイルを編集
    vim server.properties
    ----
    enable-rcon=true
    rcon.port=25575
    rcon.password=YOUR PASSWORD
    ----
  2. ファイアウォールを設定。ローカルネットワークからのみ接続可能にする場合
    • Ubuntu
      sudo ufw allow proto tcp from 192.168.1.0/24 to any port 25575
  3. RCON操作クライアントで操作
    • Windows用GUIクライアント Minecraft RCON Tool by R3B0RN - Minecraft Forum コマンドを直接入力
      • Address: 192.168.1.10:25575
      • RCON: パスワード
      • Connectで接続。Commandで各種操作。/help または /? でヘルプ
    • Windows/Linux/MacOSX用CUIクライアント mcrcon, remote connection client for minecraft servers
      # Linux
      chmod 755 mcrcon
      
      # -t: インタラクティブモード
      ./mcrcon -t -H 192.168.1.10 -P 25575 -p 'YOUR PASSWORD'
      
      # 終了
      > Q
    • java製 CUIクライアント Rcon cmd line.zip よくExceptionが発生して使いにくい
      # Windows:
      run.bat
      
      # Linux他:
      java -jar Client.jar
      
      # 接続
      Ip of server? 192.168.1.10
      Port? 25575
      Password? YOUR PASSWORD
      > /?
      
      # 終了
      CTRL+C
    • java製 GUIクライアント rcon-client 開発中らしく、コマンドが未実装。右クリックから選択式でコマンドを実行。
      • RConClient.jarをダウンロード。
        # windows: RConClient.batを作り、以下を記入して実行
        @echo off
        java -jar RConClient.jar
        
        # Linux他
        java -jar RConClient.jar

フレンドのみサーバを立てる

  1. server.properties で white-list=true
  2. ホワイトリスト(許可リスト)に追加
    • v1.8以上
    1. whitelist.json に uuid, nameを追加
    • v1.7以下
    1. white-list.txt にユーザ名を追加
  3. サーバ再起動
    • サーバコマンド
      /whitelist on/off	ホワイトリストの有効/無効。有効にした場合、リストに載っているプレイヤー以外は参加できなくなる
      /whitelist add/remove <player>	playerをホワイトリストに追加/削除する。
      /whitelist list	ホワイトリストに載っているプレイヤーの一覧を表示
      /whitelist reload	ホワイトリストのファイルを再ロードする。

管理者(オペレータ)権限を付与

  • v.1.8以上
    • ops.json にUSER NAME, UUIDを追加。
  • v1.7以下
  1. サーバに「ops.txt」があるので探す
  2. ops.txt にオペレータ権限を与えたいユーザ名(例:satou, suzuki)を1行に一つ、改行区切りで書く
    satou
    suzuki
  3. サーバの再起動
  4. オペレータコマンドが有効になっているか確認
    /help または /? でコマンド一覧が出てくるか。出て来ない場合はオペレーター権限が無い

CentOS/RedHat/Fedora

Minecraft自体のセットアップはUbuntuとほぼ同じ。
コマンドが多少異なる。起動スクリプトはそのまま使えるだろう。


Ubuntuでminecraftサーバを起動

  • Ubuntu 14.04 LTS:
    sudo apt-get install openjdk-8-jdk
  • Ubuntu 12.04 LTS:
    sudo add-apt-repository ppa:openjdk-r/ppa
    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
  • javaの設定
    sudo update-alternatives --config java
    # java8を選択
    
    sudo sh -c "cat >> ~/.bashrc << 'EOS'
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    EOS"
    . ~/.bashrc
  • ポート開放:tcp/25565
    sudo ufw allow 25565/tcp
  • インターネット側からアクセスさせるにはルータの説明書を参照
  • サーバ本体をダウンロード
    mkdir minecraft
    cd minecraft/
    wget "https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar"
    
    sudo apt-get install screen
    wget -O minecraft "http://www.minecraftwiki.net/wiki/Tutorials/Server_startup_script/Script?action=raw"
    vim minecraft
    ----
    # jarファイルの名前
    SERVICE='minecraft_server.jar'
    # 実行ユーザ名
    USERNAME='minecraft'
    # ワールド名
    WORLD='world'
    # jarファイルがあるパス
    MCPATH='/home/minecraft/minecraft'
    # バックアップ先
    BACKUPPATH='/home/minecraft/minecraft/backup'
    ----
    sudo mv minecraft /etc/init.d/
    chmod a+x /etc/init.d/minecraft
    
    # 自動起動に設定
    sudo update-rc.d minecraft defaults
  • 起動
    /etc/init.d/minecraft start
  • 動作確認
    /etc/init.d/minecraft status
    
    minecraft_server.jar is running.
  • 停止
    /etc/init.d/minecraft stop
  • 毎日 1:5 にバックアップする場合。7日前のバックアップは削除
    mkdir /home/minecraft/minecraft/backup
    crontab -e
    ----
    5 1 * * * (/usr/bin/find /home/minecraft/minecraft/backup/ -follow -name "*.gz" -type f -mtime +7 -delete;/etc/init.d/minecraft backup) > /home/minecraft/minecraft/backup/backup.log 2>&1
    ----
  • 仮想スクリーンに接続してコマンド入力
    • スクリプトから入力。出力はログに出る
      ./minecraft command list
    • 直接接続
      # 仮想スクリーンの一覧表示
      screen -ls
      
      # 仮想スクリーンを見る(複数ある場合は、 -r 1234567890.minecraft のようにする)
      screen -r
      
      # 仮想スクリーンから抜ける
      CTRL+a+d
  • ログ
    # 1.7.x以降
    tail -f logs/latest.log
    
    # 1.6.x以前
    tail -f server.log
  • 自動起動の停止
    sudo update-rc.d -f minecraft remove

  • バックグラウンドで起動させる場合
    nohup ./minecraft-server.sh start &
  • ログファイル
    tail -f nohup.out
    tail -f server.log
  • サーバ停止
    ./minecraft-server.sh stop

添付ファイル: fileminecraft-latest.20181117.zip 487件 [詳細] filemonit.minecraft.zip 493件 [詳細] filezabbix-minecraft-players.jpg 853件 [詳細] fileminecraft-01 396件 [詳細] filezabbix-minecraft.zip 927件 [詳細] filemc_death_counter.php 1051件 [詳細] fileminecraft-server.sh 724件 [詳細] fileminecraft-backup.sh 762件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-11-17 (土) 04:55:09 (791d)