スキップしてメイン コンテンツに移動

【Minecraft】spigotサーバ + scriptcraftプラグイン でJava Scriptを学ぶ準備をしよう!初心者

  今回は、Mincraftサーバを立てる!scriptcraftプラグインを導入する!Java Script(以下JS)で拡張機能を作る!こんな感じで進めていきたいと思います。

しかし実際の所、Modではなくscriptcraftの機能内で拡張機能を作るので、ブロックを追加したりアイテムを追加したりetc...は今回使うもので自分が把握している範囲では無理だということ。
(拡張機能という表記があっているかは不明ですが...) 追加する機能には限りがあり、拡張機能を作りながらJSを学べると思っていただきたい。
今回作る拡張機能は簡単な建造物を作ったりゾンビを数体ポンッとスポーンさせたり、敵に見つかったらアラートしてくれたりを作っていきます。
かくゆう私もJSは全く触ったことがないのにできるので小学生でもできると思います。

前提条件

  • Minecraft(JE)を持っている
  • PC一台で済ませたい方はある程度の性能がないと厳しいのでブラウザなどはあまり開かずにメモリを十分に開けておくこと。
  • java jdk バージョン8以上がインストールされている

環境

spigotサーバを立てる

今回は不具合も少なく安定したMinecraft ver1.12.2で環境を整えていきたいと思います。
この後説明するやり方を少し書き換えるだけで上のバージョンの環境を整えることはできますがscriptcraftの方がバージョンが上がるにつれて不具合が多くなっているので今回は1.12.2で進めていきます。
まずは下記URLからSpigot-1.12.2.jarをダウンロードします。
getbukkit.org

ダウンロードしたものを好きな場所にファイルを作って保存しておきます。
私は今回デスクトップにspigot-1.12.2とファイルを作ってそこに先ほどダウンロードしたspigot-1.12.2.jarを置きました。 PCに慣れていない方は私と同じ書いている通りにやってもらえれば問題なく動作するので真似してみてください。
次にコマンドプロンプトを開いてコマンドを打っていきます。
コマンドプロンプトの開き方がわからない方はこちら↓

www.tipsfound.com

開けたら先ほど自分で作ったファイルまでコマンドプロンプトで移動したいのでcdコマンド(ファイルを移動するコマンド)を使っていきます。
私の場合は

cd desktop/spigot-1.12.2

とすると微妙な差ではありますがしっかりとファイルを移動したことがわかります。  指定されたパスが見つかりません。と出たらなにかのスペルが違っている場合があるので見直してみてください。
移動できたら次に

java -jar spigot-1.12.2.jar

と入力し実行するとエラーが出てきます。安心してください!正常ですよ!
 エクスプローラから先ほどつくっらファイルをのぞいてみると見知らぬものが追加されているのでその中からeula.txtをダブルクリックで開き編集していきます。 

  • 注意:下の操作を行う前に必ずこちらのURL↓の内容を各自確認したうえでライセンス確認に同意した人のみ行ってください。
    こちらのURLはeula.txtに書かれているものと同じになります。account.mojang.com

画像のようにeula=falseとなっているところをeula=trueに書き換える。
この操作をすることでライセンス確認に同意する意思の有無を確認しているので各自の判断で行ってください。

eula=true同意
eula=false反対

を意味します。
反対を選ぶと今後の実行ができないので反対する方はここからの操作はできないので注意してください。

同意をした方は再度

java -jar spigot-1.12.2.jar

コマンドプロンプトで実行します。
その後少しするとDONEなんちゃら~って出てきます。  こうなっていれば成功です。
とりあえずspigotサーバはこれで立ったのでMinecraftからサーバーにアクセスしていきましょう。
サーバを止めたい場合は

stop

と打つと止まりますが、コマンドプロンプトはこのままにしておいてください。この状態ですでにサーバが立っている状態になっています。

  • 注意:今後コマンドを実行するときゲーム内で実行する場合は最初に/(スラッシュ)を入れてください。
    サーバ起動中のサーバ側のコマンドプロンプトでコマンドを実行する場合は最初の/(スラッシュ)はなくても大丈夫です。

Minecraft luncherを起動して以下の操作を行います。

赤で塗りつぶされた場所は無視してください。
画像の手順でマインクラフトを起動していきます。
spigotサーバとマインクラフトのバージョンを合わせなといけないのでどちらとも1.12.2で起動させていきます。
 サーバを起動しているPCで接続するならサーバアドレスを

localhost

と入力してください。
同じネットワーク内のべつPCからの接続はサーバ側PCのIPアドレスを調べる必要があるます。以下を参考に調べてサーバアドレスに入力し接続してください。
 ゲーム画面が出たら無事接続されたことになります。

scriptcraftプラグインの導入

プラグインの導入をしていきます。
まずは下記URLからscriptcraft.jarをダウンロードします。

github.com

ダウンロードしたものを前章で作ったファイルの中にあるpuluginsファイルに保存します。パスはこんな感じ

Desktop/spigot-1.12.2/plugins/scriptcraft.jar

となれば良い。
そうしたらコマンドプロンプトに戻ってサーバが起動したままなら前章で説明したようにstopと打ち実行しサーバを停止させた後にもう一度起動させるために

java -jar spigot-1.12.2.jar

を実行することでもう一度サーバを起動させます。 今後サーバを起動させたい時は今作業しているファイルに移動してきて上記のコマンドを実行することで起動できます。
コマンドプロンプトにログが流れてくるのでDONEと出てきたら成功です。 その後、前章で説明したようにもう一度マインクラフトからサーバに接続します。 このままだとオペレータ権限がないのでゲーム内でコマンドを使えません。サーバ側から権限を付与してあげる必要があるので次のコマンドを実行します。サーバのプロンプトで

op ユーザ名

ユーザ名を自分のマインクラフトのユーザ名に書き換えて実行するとマインクラフト内でログが出現しオペレータの権限が付与された的なのがと出てくれば成功です。
試しにすでにJSで書かれたものが用意されていてコマンドからそれを呼び出して使ってみましょう。コマンドはゲーム内から

/js castle()

と入力します。勘のいいひとは気づいているかもですが、城が出てきます。

こんな感じ  これができれば導入はカンペキです。
ちなみにこの城を作るためのJSファイルがあるのでよかったら見てみてください。

Desktop/spigot-1.12.2/scriptcraft/plugins/drone/contrib/castle.js

にあります。ほかにも使えるコマンドがあるので同じファイル内にあるJSファイルをのぞいて実行してみるのも面白いです。
使えるコマンドを一覧で見たい方はこちらをどうぞ↓

github.com

JSで拡張機能の追加

やっとJSを使う場面がやってきました。
あくまで例なので細かい説明は省きます。(自分が理解してないだけ)
先ほどと同じサイトですが、こことサンプルで用意されているプログラムを参考に書いているのでまねして書いてみると案外書けちゃいます。

指定したブロックと大きさで空洞の建物を作る

'use strict';
/*global require*/
var Drone = require('drone'),
  blocks = require('blocks');
function tower(towerBlock, oneSide, height) {
  this.chkpt('tower');
  this.box0(blocks[towerBlock],oneSide,height,oneSide)
  this.move('tower');
}
Drone.extend(tower);

前章が私と同じやり方であればこれを適当な名前でJSファイルとして

Desktop/spigot-1.12.2/scriptcraft/plugins

の中に保存してください。
その後サーバを前章のやり方で起動しなおすか、すでに起動させている状態ならゲーム内で(サーバ側からの時は/を消す)

/js refresh()

と打つとscriptcraftだけをリロードしてくれるので更新したファイルがある場合はこれをするだけで読み込んでくれるのでデバッグしやすくなっています。

  • 注意:ファイルを追加または編集後は必ずサーバを再起動か上記のやり方でリロードしてください。

先ほどのプログラムを実行したいときはゲーム内で

/js tower('oak',5,10)

第一引数にブロックの名前、第二に正四角形の一辺の長さ、第三に高さを入力するとその通りにポンッとでてきます。
oakstoneにすると石で作られます。

ゾンビを大量にスポーンさせる

'use strict';
/*global require*/
var entities = require('entities');
var spawn = require('spawn');
var utils = require('utils');
exports.zombie_panic = function() {
  var location = utils.getPlayerPos(); /*var location = utils.player().location;でも可*/
  var name = 'ZOMBIE';
    for(var i = 0;i < 10; i++){
      spawn(name, location);
    }
}

先ほどと同じように保存しリロード

/js zombie_panic()

を実行で出てくると思います。
プログラムのZOMBIEの場所を書き換えて他をスポーンさせるのも面白そうですね。必ず大文字で入力してください。
またfor分の中の10の場所を好きな数字にすれば好きな数をスポーンさせられます。リロードしてね!
関数の名前を変えたいときはプログラム内のzombie_panic(ネーミングセンス皆無)を書き換えると好きな名前で呼び出せます。

敵に見つかった時にアラート

var utils = require('utils');
var sounds = require('sounds');
function alert(event){
    if(event.target == "CraftPlayer{name=" + utils.playerNames() + "}"){
        echo(event.target,event.entity.name);
        sounds.blockAnvilPlace(event.target.location,1,4)
    }
}
events.entityTarget( alert );

こちらも同じように保存しリロード
このプログラムはコマンドから実行しなくてもエンティティからターゲットされると自動でプログラムが実行されるので先ほどのプログラムでゾンビをスポーンさせるとターゲットされて音とメッセージで伝えてくれます。音は金床を置いた時の音を代用して音量1でピッチを4にして発生させています。どちらも0~4の五段階で設定できます。

まとめ

JS自体の細かい説明は省きましたが題名にもある通り、勉強ができる環境を準備するのが目的なので自分で学習したり試行錯誤することを学んでいただきたいく思います。
上のバージョンで試してもいいと思いますが、今現在では不具合が多いのでお勧めはしません。
試したい方はダウンロードするもののバージョンをマインクラフトのバージョンと合わせてダウンロード&インストールしてもらえればできると思います。

コメント

このブログの人気の投稿

Phaser3 + Typescriptを使ってRPGゲームの基礎を作ろう!その2

前回の記事 に引き続きPhaser3+Typescriptを使って RPG の基礎を作っていきます。 この記事は前回の記事を呼んだ前提で説明していきますので、ぜひそちらを先に読むことをお勧めします。 また、今回の記事は前回よりも難易度と内容量が上がっていますが、記事の最後に作業後の リポジトリ のリンクがありますので、そちらを先にダウンロードしてそちらと比較しながら学習することができます。 前回まで作成した状態のプログラムが以下の リポジトリ からダウンロードできますので前回まででうまくいっていない方は参考にしてみてください。 github.com 最終目標(再掲) ・Phaser3とTypescriptで RPG ゲームの基礎を作る。 ・Phaser3をTypescriptで使う方法を学ぶ ・Phaser3の使い方を学ぶ 今回の目標 ・ゲームの作り方の断片を知る ・キャラの表示できるようにする ・キャラを移動できるようにする ・当たり判定をつける ・ NPC の追加してみる ・話しかけられるようにする 開発前提(再掲) ・Nodejsの環境・知識がある ・ Javascript ・Typescriptがある程度かける ・当ページ紹介の環境を試す場合はgit・ github の知識がある 使用した主要Nodeモジュール(再掲) ・typescript(Typescriptの コンパイル 用) ・phaser(フロントの Javascript 用ゲームライブラリ) ・live-server(ソースを監視してブラウザのページをリロード) ・ts-loader(webpackがTypescriptをバンドルする用)webpack(言わずと知れたモジュール依存をいい感じに解決しバンドルする) ・webpack- cli (webpackを コマンドライン で使用するのに必要) 注:各Nodeモジュールバージョンは後述 当ブログ仕様の画像素材の注意点 当ブログで使用する画像素材は『 ピポヤ倉庫 』より許可なしで無償再配布・改変が認められたものを改変して作成されたものです。 中には許可なく再配布・改変してはいけない素材もインターネット上には多く存在するのでそれらを使用するときは十分に規約を呼んでから使用しましょう。 1. キャラの表示 想定画面 今回は、はじめにキャラつまり操作

M5Stackで、においセンサー(TGS2450)を使ってみる。(LCDに表示編)

今回は、においセンサー(TGS2450)から取得したデータをM5Stackの LCD にグラフ表示をしていきます。 今回主に使用したもの M5Stack 10Ω抵抗 5本 Pch  MOSFET  2SJ334(スイッチとして利用) M5StackSideBB(ブレッドボード) M5Stackのピンはそのままだと配線するとき手間がかかるかと思いますので、今回はM5StackSideBBを利用しました。 ブレッドボードも付いているので、手軽に電子工作できるので個人的にオススメです。 SideBB for M5Stack www.switch-science.com 諸注意 本ブログのプログラムはArduinoIDEまたはPlatformIOでM5Stackの開発ができる状態であること前提のものですので、各自導入をお願いします。 過去に Windows のArduinoIDEで M5Stackの開発環境を構築する記事 があるので、参考にしてください。 においセンサー(TGS2450)について 今回使用したセンサーは 秋月電子通商 で購入できます。 http://akizukidenshi.com/catalog/g/gP-00989/ akizukidenshi.com TGS2450には4つのピンがあり、使用するのはそのうちの3本でヒーターを温めるピン、センサー情報を得るピン、GNDがあります。 ここで注意したいのは、ヒーター電圧は1.6Vと記述されているのでM5Stackで利用するときは分圧して3.3Vを1.6V近くまでに降圧することをお勧めします。 TGS2450のセンサーは可変抵抗になっており、データシートには5.62kΩ〜56.2kΩの間を抵抗が変化し、においが強いとより低くなると記述されていました。 よって、センサーの値をM5Stackで取得するにはセンサー抵抗と外部に接続する任意の値の抵抗による分圧回路によって求めることができます。 TGS2450の動作方法は、250ms周期でセンサーに電圧を5ミリ秒on、245ミリ秒offの状態にしてヒーターは8ミリ秒on、242ミリ秒offにすることで値を取得します。 配線 においセンサーとM5Stackの配線 上の図が配線図です。 30Ωの抵抗は10Ωの抵抗を三つ直列に接続して作成しました。 また、上部の抵抗10Ω二

Phaser3 + Typescriptを使ってRPGゲームの基礎を作ろう!その1

今回はPhaser3とTypescriptを使って簡単な RPG ゲームを作る方法を紹介していきます。 内容はPhaser3およびゲーム作りについての記事なので、Nodejsの周辺モジュールなどの説明は一部省いての説明になりますのでご了承ください。 またこの記事では Phaser2 ではなく Phaser3 を使用するので注意してください。 この記事は二部構成になりますので、この記事を読んだ際はぜひ次の記事も読むことをお勧めします。 最終目標 ・Phaser3とTypescriptで RPG ゲームの基礎を作る。 ・Phaser3をTypescriptで使う方法を学ぶ ・Phaser3の使い方を学ぶ 今回の目標 ・開発環境を整える ・Phaser3の開発構成を知る ・スタート画面を作る ・マップ表示をさせる 開発前提 ・Nodejsの環境・知識がある ・ Javascript ・Typescriptがある程度かける ・当ページ紹介の環境を試す場合はgit・ github の知識がある 使用した主要Nodeモジュール ・typescript(Typescriptの コンパイル 用) ・phaser(フロントの Javascript 用ゲームライブラリ) ・live-server(ソースを監視してブラウザのページをリロード) ・ts-loader(webpackがTypescriptをバンドルする用)webpack(言わずと知れたモジュール依存をいい感じに解決しバンドルする) ・webpack- cli (webpackを コマンドライン で使用するのに必要) 注:各Nodeモジュールバージョンは後述 1. 最低限の開発環境の準備 今回最低限の環境を整えるために、『Typescript + Phaser3』の開発テンプレートを github リポジトリ で公開しました。 以下からZIPをダウンロードするか、 git clone コマンドで各自環境に展開してみてください。 ここから先は リポジトリ のプログラムを元に説明していきます。 github.com 展開するとファイル構造は以下のようになっているかと思われます。 注: 他にもファイルやフォルダがあるかと思われますが、表記されているのは今回使うものになっています。 - src/ (これから書くプログラムの保存領域)