広告

bitFlyer ビットコインを始めるなら安心・安全な取引所で

カウンター

  • 51682総訪問者数:
  • 7今日の訪問者数:
  • 35昨日の訪問者数:
  • 41一日あたりの訪問者数:
  • 0現在オンライン中の人数:
  • 2014年9月21日カウント開始日:

SkyBlocks

SkyBlockの導入が出来ないか検証してみた。 どうしてこうマルチサーバ前提に作られていないのか・・・

  ワールド 前提 報償 他ワールドと インベ分割 JoeSkyBlock v1.0.4 自動生成 (自作も可) 有り (必須では無い) 無し 出来る uSkyBlock v.0.9.6 自動生成 無し 有り 出来ない Mini-SkyBlock v0.2 今居るワールドに作る 無し 有り 出来ない askyblock V2.5 自動生成 無し 有り 出来ない IslandWorld v4.5 事前に生成 有り 有り 出来ない

 

Joe's SkyBlock

非常にシンプル。報償は無いが、SkyBlockへの参加・戻り時のインベントリの棲み分けがちゃんと出来てる。 flyやEnderChestの使用禁止、土地の保護も出来てる。 死んだときにSkyBlockと非SkyBlockのインベントリが逆転してしまうバグがあるのが致命的。

uSkyBlock

SkyBlock […]

プラグインResidence

プラグイン:Residence_v2.6.6.6.jar サーバ:spigot-1.7.10-R0.1-SNAPSHOT_1641.jar

ResidenceはTownyのような町作り系のプラグインですが、Townyよりシンプルかな。結局使わなかったので、簡単にご紹介だけ。

使い勝手的にはWorldGuard(region)の逆という感じ。

どういうことかというと、regionは保護されてない土地に対して範囲を指定して保護するプラグインだけど、Residenceは保護されている土地に対して自分が使いたい土地を範囲で取得する感じです。なので、regionとTownyのいいところを両方持ち合わせている感じですね。

regionと同じ感じで細かく範囲を指定できる(Townyはチャンクだけ。Residenceはチャンクを範囲で指定もできるし、特定の立方体範囲もできる) しかも、WorldEditCUIにも対応してるみたい。 初期状態でワールドでの建築を拒否にしておけば、事実上荒らしの被害を受けない。(許可しない限り他者に建築を許可しないし、範囲を指定しないと自分自身も建築できないから)。この辺はTownyのメリットと同じ。

シンプルさではTownyよりも使い易いんだけど、必ず初めに範囲指定しないと建築できない煩わしさはTownyと同じで、管理者としては気にしなければならないポイントですね。デフォルトでワールド建築許可にしたらregionと何も変わらないし。

regionよりも安全に、且つTownyほど複雑にしたくないなら、間違えなくこれを選択した方がいいです。

BVotifier

BVotifier_v1.0.7.jar

Japan Minecraft Serversなどの外部サイトで投票してもらってそのお返しにアイテムを渡したりできますが、仕組み的にはVotifierなどのプラグインで受信し、その情報をSimpleVoteListenerなどでコマンド化してます。

BungeeCordでマルチサーバ化してる場合は、何もしなければ当然どれか一つのサーバでしか投票を受信できません(サーバ分だけ投票サイトに登録すれば別だけど)

それを一回の投票情報を複数のサーバに分散できるのがこのBVotifierです。BVotifierはBungeeCordのプラグインとして動作します。 既にVotifier運用しているなら導入は比較的楽です。何故ならこのプラグインはBVotifier→Votifierという連動をするので、Votifierも必要になるからです。 導入方法も簡単で、BVotifierをBungeeCordとマインクラフトサーバのpluginsディレクトリに置くだけです。Votifier側の設定はいじらないで連動してくれます。(※マインクラフトサーバ側は、Votifier.jarを消して、BVotifier.jarを有効にするが正解かも)

ただし、ポート情報はバッティングしてはならないので、適当にずらして下さい。

設定は本当にこれだけ。なお、ログインしてないと投票してるように見えないですが、ログインすれば投票したことがわかります。

Dynmap-MultiServer

Dynmap-MultiServer_0.5.0.jar

マルチワールドではなく、マルチサーバです。BungeeCordなどでマルチサーバ運用をする場合、Dynmapも複数に分かれてしまいます。それを束ねて一つのWebサーバにするのがこれです。

これ自体、何かのプラグインではなく、単体のJavaプログラムとして動作します。(BungeeCordと連携する訳でも無いです) 主立った動かし方は以下の通り。

ダウンロードして起動する。エラーで落ちるけど、この際にconfig、log、webディレクトリが作られる。 java -jar Dynmap-MultiServer_0.5.0.jar configをいじる。 各サーバのDynmapをJsonFileClientUpdateComponentで動作させる。 「- class: org.dynmap.InternalClientUpdateComponent」って設定とそれ以降の段落?の設定を全てコメントアウトし、「- class: org.dynmap.JsonFileClientUpdateComponent」って設定項目とそれ以降の段落(もともとコメントアウトされてる)を有効にする。 設定変更後にdynmapをリロードすると反映されるが、この段階でdynmapをブラウザで見れなくなります。 どのサーバのでもいいので、Dynmapの設定ディレクトリ以下のwebディレクトリを、Dynmap-MultiServerのwebディレクトリにコピーする。これは、Dynmap-MultiServer経由でWebを見る際のHTMLやCSSファイルを参照する為だと思います。 なので、webディレクトリ配下のtilesディレクトリ(マップの画像が格納されたものすごくファイルサイズの大きいディレクトリ)のコピーは不要。 Dynmap-MultiServerを起動させる。UNIX系ならコマンドの最後に&を付けてバックグラウンドで起動してあげればいいです。 java -jar Dynmap-MultiServer_0.5.0.jar &

config/main.ymlの書きっぷりは以下の様な感じ

config/main.yml

Webserver: IP: 0.0.0.0 Port: 8123 webDir: web/ Title: Dynmap WorkerThreads: 16 DynMap: – Folder: /mcserver1/plugins/dynmap/web UpdateInterval: 4 – Folder: /mcserver2/plugins/dynmap/web UpdateInterval: 4

気にすべき点はポート番号と「DynMap」以下に各サーバのDynmapディレクトリを書き連ねるというところ。 また、運用する上で気にしなければならない点は以下のところかな。

上記の通り、Dynmap-Multiserverを動かすサーバから各Dynmapのディレクトリが見えないとダメです。1台のサーバにマインクラフトサーバを複数建てるなら全然問題無いですが、サーバそのものを分ける場合は、ファイル共有なり、NFSなりでディレクトリを共有しないとダメです。 Webの画面設定が結構難しいです(設定ファイルが無いので)。webディレクトリをコピーする前に、ある程度設定してしまいましょう。 各Dynmapのバージョンを合わせないとダメです。ちょっと苦労したのは、バニラサーバとModサーバとでバージョンが合わなかったこと。これは各Dynmapの「web/standalone/dynmap_config.json」の中の「coreversion」を見てますので、私はここの数字を変更して起動してます。 Dynmap-Multiserverの起動障害のうち、カレントディレクトリをjarファイルのあるディレクトリにしておかないと起動に失敗することがありました。 Dynmap-Multiserverを起動すると特定のサーバで存在しないワールドデータを見に行って落ちる事象が起きました。どうやって直したかわすれたけど、確かweb/standalone/dynmap_ワールド名.jsonってファイルが影響してた気がする。 JsonFileClientUpdateComponentを有効にした場合によくあるんですが、マップ上のプレイヤーの所在がよくわからなくなることがあります。未だに原因はよくわからないんですけどね。 ※JsonFileClientUpdateComponentは、そもそもWebサーバ機能をapacheなどの外部サーバに委託する時に使う設定なんですが、apacheでも同様の事象が起きていたので、この問題はDynmap-Multiserver側の問題では無いと思います。

起動したらconfigに設定したポートへブラウザ経由でアクセスすると、全サーバのワールドが混ざって閲覧できるようになります。

[…]

BungeeCard / TeleportSigns

BungeeCard_build#1013 TeleportSigns_v1.3.2

BungeeCardはサーバ間ゲートですね。プラグインではなく、Bukkitやspigotと同様に単体で可動するJavaサーバです。 よく、PvPサーバなどで見かけますが、ロビーサーバやゲームサーバなど一つのサーバ内で納められない場合や、全然別の他サーバとのサーバ間接続に使われますね。絵に描くと以下の様な感じ。

絵面的にはBungeeCardへログインしているように見えますが、入り口としての橋渡しになってるだけで、ログインすると直ぐにロビーサーバへ接続されます。 TeleportSignsは移動用のゲートを看板で実現するプラグインですね。BungeeCardはコマンドでサーバ間を移動するので、それをしやすくするだけのものです。

実現方法や機能制限などを纏めると以下の様な感じ。

BungeeCard自身が独自のポート番号を持つので、同じサーバ上のマイクラサーバが居るなら、その番号とは別にしなければならない。 BungeeCardを経由しなくても各マイクラサーバへのログインは可能(ただしそれは推奨できない。詳しくは次項以降) 1.7の後半のバージョンから、マイクラサーバが個人情報をUUIDで管理するようになったが、BungeeCard経由だとUUIDが変わるので、運用中のサーバにこの機能を追加すると「お初さん」になってしまう。回避するには以下の設定が必要。 ・spigotサーバを使って、設定ファイルspigot.yml内のbungeecordをtrueにする。 ・BungeeCardのconfig.ymlのip_forwardをtrueにする。 各サーバはonline-modeをfalseにしなければならない。(server.propertiesか、起動オプション-o trueを付ける) どこのサーバに居ても外部から見えるサーバ全体のログインプレイヤー数はカウントされる。 MinecraftForgeの入ったクライアントだとログイン時のサーバ一覧にバニラ(V)かどうかの表示がでますが、バニラでは無いという表示になってしまいます。それでもロビーサーバがバニラならバニラで入れるし、そのほかのサーバがModサーバならサーバ間移動の時に遮断されます。

ちなみにspigot.ymlのbungeecordをtrueにすると、BungeeCord経由でなければログインできなくなります。何れにしろonline-modeを切ると管理者アカウントを奪われる危険性があるので、直接ログインはしない運用にするのが吉ですね。

以下、設定方法です。

TeleportSignsを使うなら、BungeeCordのconfig.ymlのpermissionsにあるbungeecord.command.serverはadminに移すべき。看板を使わなくても誰でもテレポートできちゃうっぽいので。 また、以下の様な設定にすると、指定したプレイヤーだけがadmin permissionsに設定されたコマンドが使えますね。

groups: プレイヤー名: – admin

config.ymlのlisteners設定の意味は以下の様な感じ。 max_players…最大ログイン数だが、これは表示上だけ。実際には個々のサーバの上限が制限となる。 fallback_server…ロビーサーバが死んでしまっている時に接続するサーバ名。 host…BungeeCord自体の接続設定「0.0.0.0:25555」みたいにすると「25555」ポートで接続可能となる。 default_server…ロビーサーバ motd…マイクラのクライアント側に表示させる紹介文 config.ymlのserversは、接続するサーバ分全て記入する。

サーバ名: address: 192.168.xxx.xxx:25553  ←マイクラサーバのIPとポート restricted: false motd: ‘サーバ説明’  ←サーバの説明。ほとんど表示されることは無い。

ちなみに、config.ymlにもonline_modeの設定がありますね。当然、trueで運用すべき。 ip_forwardについては上に書いた通りです。 […]

プラグインEpicBoss_GoldEdition

プラグイン:EpicBossGoldEditionD10_1.7.10.jar サーバ:spigot-1.7.10-R0.1-SNAPSHOT_1641.jar

既に公開されていないプラグインで、古いサーババージョンでしか動かないプラグインなんですが、改造して動かしてます。

既に何度も改造しているのですが、今回はワールドの中央から離れれば離れるほど強い敵が出ない仕様に改造してみました。基本的には敵の強さ毎にランク1~6までを定義し、敵の定義名に番号を振っているので、その数字を見て出現を制御してます。

ちなみに敵の出現量が100だとして、その中にランク3の敵が30%居た場合で、ランク3の敵が出ない地域に居る場合は、出現量が70となります。だから、敵の数自体もワールドの中央に近づくにつれて多くなります。

プラグインdynmap

プラグイン:dynmap-2.0.0-alpha-1.jar サーバ:spigot-1.7.10-R0.1-SNAPSHOT_1641.jar

資源マップの生成をしてるけど、どうも地下を見せると、慣れてる人が欲しい地下生成物を片っ端から取っていってしまうということが起こります。とは言え完全に隠すのもわかりづらい。

というバランスを考えてカスタマイズしてみた結果がこれ

先ず、worlds.txtの定義の部分にこんな感じで記載。(caveの定義だけ抜粋)

– class: org.dynmap.hdmap.HDMap name: cave title: “Cave” prefix: ct perspective: custom_cave shader: lit-cave lighting: default mapzoomin: 3

shader: lit-caveというのが、どうも明かりをともした場所だけ描画するというシェーダらしい。定義済みなので、書くだけで機能します。なので、探索したところだけ見えるようにできそう。(実際にはその周辺の溶岩光がある場所も見えてる?) 「perspective: custom_cave」はカスタムパースペクティブ。custom-perspectives.txtに以下の様に追記して、それを参照してます。

perspectives: – class: org.dynmap.hdmap.IsoHDPerspective name: custom_cave azimuth: 135 inclination: 15 scale: 1

azimuthが視点の方向を示す角度。135というのは南東から見てるよという数値。dynmapの他のデフォもこの角度をよく使ってるので、合わせてます。 inclinationが視点の高さ。90が真上で0が真横。15なので、かなり水平に近い視点です。 scaleが解像度みたいなもの。定義済みのパースペクティブで使われてる高解像度(hires)が16、中解像度(midres)が8、低解像度が4だそうで。上記は1なので、低解像度よりもさらに小さい数値です。

こんな感じで、「とりあえず見えるけど、探索しないと見えないし、見えても見づらい」というのを演出してみました。

プラグインTNTRun

プラグイン:TNTRun_v3.4.jar サーバ:spigot-1.7.10-R0.1-SNAPSHOT_1641.jar

前から入れて見たかったミニゲーム系。Alicornに似たようなプラグインでMinigamePartyというのが入ってるけど、あっちは重すぎるのでAvalon用の代替えプラグインとして入れられればなという感じ。

しかし、( ゚д゚)ハッ!と気がついたときには何故か翻訳作業を始めてたw

検証が先でしょうに・・・動かなかったらどうするのか。

・・・で、検証したらあっさり動きました。先ずこういう地形を作成。

WorldEditで対象エリアを全部選択し(後述のLoseAreaも含めて)、

/trsetup create アリーナ名 ・・・作成 /trsetup setarena アリーナ名 ・・・上記の選択範囲をエリアにする /trsetup setloselevel アリーナ名 ・・・敗北判定の区画。先に対象エリアを選択する。基本的には床の下のエリアで、そこに入ると負け判定になる。 /trsetup setspawn アリーナ名 ・・・出現場所(スタート地点)の設定 /trsetup setspectate アリーナ名 ・・・観客席?たぶん負けた人の保留エリア /trsetup finish アリーナ名 ・・・完了

あとは、看板を設置して1行目[TNTrun]、2行目[Join]、3行目アリーナ名とすれば、そこを叩くと参加となる。

ちなみに2名以上じゃないと開始できません。

・・・おっとBarAPIに緩衝するか?

[11:36:43 WARN]: java.lang.NoSuchMethodException: net.minecraft.server.v1_7_R4.PacketPlayOutEntityTeleport.<init>(int, int, int, int, byte, byte) [11:36:43 WARN]: at java.lang.Class.getConstructor0(Class.java:2849) [11:36:43 WARN]: at java.lang.Class.getConstructor(Class.java:1718) [11:36:43 […]

プラグインImageOnMap

プラグイン:imageonmap_v2.7.jar サーバ:spigot-1.7.10-R0.1-SNAPSHOT_1641.jar Web上の画像をmapに転写する。額縁に貼れば絵画代わりになる。

うまく動いている様にも見えるが、サーバごとクラッシュさせるバグもあるっぽい。

プラグインFramePicture

プラグイン:FramePicture_v1.7.3.jar サーバ:spigot-1.7.10-R0.1-SNAPSHOT_1641.jar ゲーム内の額縁にWeb上の画像を掲載できる超画期的なプラグイン・・・。なんですが、結局動きませんでした。 ちなみに、コマンドはFrameProtectと被ってますね。FrameProtectなんて超メジャー所と被らせないで欲しい・・・。まぁ、FramePicture:fpで行けたから良かったけど。フォールバックシステム様々。

ダウンロードまでは行けたけど、どうもそれの表示ができていない。PacketPlayOutMapがイケてないってところまではわかるけど・・・

[12:55:24] [Server thread/INFO]: Tactica issued server command: /FramePicture:fp set http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png [12:55:25] [Server thread/INFO]: [FramePicture] Download http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png … [12:55:25] [Thread-32/INFO]: [FramePicture] Image plugins/FramePicture/images/logo-ns-131205.png was downloaded! [12:55:26] [Server thread/WARN]: [FramePicture] Task #61 for FramePicture v1.7.3 generated an exception java.lang.NoSuchMethodError: net.minecraft.server.v1_7_R4.PacketPlayOutMap.<init>(I[B)V at de.howaner.FramePicture.util.Frame.sendMapData(Frame.java:148) ~[?:?] at de.howaner.FramePicture.util.Frame.sendTo(Frame.java:107) ~[?:?] at de.howaner.FramePicture.FrameManager.sendFrame(FrameManager.java:180) ~[?:?] at de.howaner.FramePicture.FrameManager.addFrame(FrameManager.java:209) ~[?:?] […]