Node.jsでマイクラをする(1.8対応)
MineCraftのクライアントは、Javaで作られてますが、パケットを解析することで他の言語でもサーバに接続することができます。
しかしそれには結構な努力と技術が必要だしバージョンアップに対応していくのが大変です...
node-minecraft-protocol
そんな努力や技術がなくても、これを使えば楽々にクライアントがNodejsで作れます。
さっそくnpm inatallしましょう。
# npm install minecrafr-protocol
クライアントの実行
サンプルがあるので実行してみようと思います。
今回は「client_chat.js」を実行しました。
var mc = require('../../');
この行を
var mc = require('minecraft-protocol');
としてみました。
$ node client_chat.js <hostname> <user> <password>
と実行すればいいみたいです。
オフラインモードのサーバに入る場合はパスワードは必須ではないみたいですね。
$ node client_chat.js <hostname> <user> <password> connecting to 127.0.0.1:25565 user: hoge@example.com Successfully connected to 127.0.0.1:25565 a <kuwasa> a
と言った感じで接続できました。
パケットもいい感じに受け取れるし、俺は好きですよ。
サーバ
サーバもできるけど、チャンクの送り方とかわからないから詰んでる。
まとめ
もっと使ってみます。
fatal: Not a valid object name: 'master'. とか言われたら
$ git branch master fatal: Not a valid object name: 'master'.
masterブランチを作ろうと思ったら作れなかった。
どうやら、masterブランチはコミットすれば勝手に作られるっぽい。
$ git add . $ git commit -m "First commit."
なるほど。作られた。これでpushができるようになるわけだ。
Cmderで別ドライブに移動したいとき
Cmderで、別ドライブに移動したい時に
C:\>cd G:\ C:\>
だと移動できなくて、どうするんだろうと思って調べたら
C:\>g: G:\>
こうだった。 てかコマンドプロンプトでもそうだった?
github.com この辺に書いてあった。
QuartzNetworkの仕組みと今後
どうも。ちょっとブログを書いてみようと思ってはてブ作ってみました。 というわけで、今回はQuartzNetworkの仕組みと今後についてというタイトルで書いてみます。
QuartzNetworkとは
QuartzNetworkは、MineCraftのサーバを建てる際のポート開放を不要にしてくれるサービスです。 大雑把に言うとね。
仕組み
基本的にVPNで繋いでもらってBungeeCordで飛ばしてるだけです。 簡単な図で表すと
こんなかんじです。大雑把です。
サーバとQuartzNetworkをつなぐのにVPNを使ってます。
繋がればHamachiでも何でもいいです。
(でもCentOSのHamachiは不安定なのでやめました。)
現状は、PPTP使ってます。ファイルカキカキしてます。
この管理方法今すぐにでもやめたいです。
接続されたら、割り当てられたIPにBungeeCordで飛ばします。
適当にこういう感じでBugneeCordのConfigに書いとけば、飛ばされると思います。
QuartzNetworkでは、BungeeCordのプラグインを自作して、この辺をDB管理できるようにしてます。
これでBungeeCordを立ててるサーバのポートを開放して
設定したドメインでアクセスすれば擬似QuartzNetworkの完成です。
つまり、こういう流れ
- サーバ建てる人がQuartzNetworkにVPN接続、サーバ建てる。
- ユーザが指定されたドメインでQuartzNetworkに繋げる
- ユーザはとりあえずQuartzのサーバに入る
- サーバに接続できたらそのサーバに移動
- 完了
ここで、なんで
ユーザが指定されたドメインでQuartzNetworkに繋げる
とかいう謎の処理が入ってるかというと、最初の接続時に接続先を変更しようとすると 接続が切断されてしまうという問題があるためです…
その解決方法が分からず、こういう処理になってます。
白いお城が見えるのはこのためですね。
今後について
よく、「空き枠はよしろ」というお言葉を頂きます。
そもそも、なんで枠があるのかっていうとCentOSのPPTP接続が
最大256ぐらいしか行けなくて試行錯誤したんですが無理でこうなってます。
なんで、今度OpenVPNでやりたいと試行錯誤してるところです。
たぶんそれでいい感じになるんじゃないかなと思います。
あとは適当に鯖増やして空き枠増やしてく。
増やすのは簡単にできるようになっていて
@hiroyoo963 @quartz_network 本当だよ!!!!!!!!!わああ!!!!!!!!!ついでに*.9up.meの割り当てだけじゃなくて *.minecraft.in.netの割り当ても開始したよぉおおおおおおおお
— クワッサー (@kuwasa) March 31, 2015
とか言ったんですが、同じサーバにQuartzNetworkGamesのBungeeCordが動いていて仕組みが全く違うので
悩んでいて、割り当て許可していない感じです。
まぁ適当に頑張ります。