Densyakunのブログ

Qiitaもやってます: https://qiita.com/Densyakun

【Spigot】Bukkitプラグインの作り方講座 - 記事一覧

f:id:Densyakun:20180211184737p:plain

こんにちは、Densyakunです。

いつも見ていただきありがとうございます。

 

Bukkitプラグインの作り方講座では、

Bukkitプラグイン(以下、プラグイン)の作り方について、

初心者に分かりやすく解説しています。

 

記事一覧

基礎編

プレイヤー

ブロック

 エンティティ

 インベントリ

サーバー

中級編

 

 

質問や、新しい記事の話題があれば是非コメントをください。

 

【Spigot】Bukkitプラグインの作り方講座 - プラグインの作成(Eclipse)

 

Bukkitプラグインを作る

次に、実際に「Bukkitプラグイン」を作っていきます。

この手順はプラグインを作るたびに行いますので、覚えてください。

 

 

プロジェクトの作成

まず、eclipseでプロジェクトを作成します。

 

私はmavenやgradleについてよく知らないので、

この記事ではそれらを使用せず、より簡単なeclipseでの方法を紹介します。

 

上のメニューから ファイル>新規>Java プロジェクト を押すか、又は下の画像のようにアイコンの▼を選択して下さい。

f:id:Densyakun:20180211183836p:plain

アイコンを選択したら「Java プロジェクト」を選択して下さい。

f:id:Densyakun:20180211183946p:plain

 

「新規 Java プロジェクト」画面が出てくるので、お好みでプロジェクト名を入力して下さい。

 

プログラミングをしているとついプロジェクトが増えてしまうので、

他のプロジェクトを判別できる名前にしておくと便利です。

f:id:Densyakun:20180211183956p:plain

 

プロジェクト名を入力したら完了を押し、プロジェクトを作成します。

 

f:id:Densyakun:20180211184106p:plain

作成したプロジェクトは左側の「パッケージ・エクスプローラー」に表示されています。

プロジェクトの中には「src」(ソースフォルダ)と「JRE システム・ライブラリー」があります。

ソースフォルダには自分の作成した「ソース」を入れておくフォルダです。

JRE システム・ライブラリー」は簡単に言うとJavaです。特に気にしなくて大丈夫です。

 

 

 

ビルドパスの設定

このままではプロジェクトはただのJava プロジェクトでしか無いので、

Bukkit(Spigot)を読み込む必要があります。

プロジェクトを右クリックして下の方にある「Windows エクスプローラ」を選択すると、プロジェクトのフォルダがWindows標準のエクスプローラーで開かれます。

 

プロジェクトのフォルダの中には「bin」や「src」フォルダがあります。

プロジェクトのフォルダの中に「lib」と言うフォルダを作成して下さい。

そしたらその「lib」フォルダの中に先程ダウンロードしたサーバーjarをコピーします。

eclipseで見てみると、サーバーjarが反映されず表示されていないため、F5キーを押して反映させます。(その際にプロジェクトを選択して下さい)

そしたらeclipseからlibフォルダの中のサーバーjarを右クリックして、 ビルドパス>ビルドパスに追加 を押します。

これでプロジェクトでBukkit(Spigot)が使えるようになりました。

 

 

パッケージの作成

ここからが本番です。次にパッケージを作成します。

 

パッケージにはクラスファイルなどのプログラムを入れておくフォルダのことです。
Javaのパッケージについてはこちらをご覧ください:
https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8_(Java)

 

srcフォルダを右クリックして、 新規>パッケージ を選択します。

 

パッケージの名前ですが、

一般的に、自分のサイトなどのアドレスを逆にしたもの(「densyakun.github.io」であればio.github.densyakun)にプラグイン名を付けたものが多いです。(io.github.author.pluginといった感じです。author=作者

また、パッケージ名はできれば全て小文字にして下さい。Javaの制約です

 

プログラミングをしているとパッケージが増えていきますので他のとかぶらないように名前を付ける必要があります。

私はプラグイン開発以外にも色々やっているので、io.github.densyakun.bukkit.pluginといった感じにしています。

完了を押すとsrcフォルダの中にパッケージが作成されます。

 

 

クラスの作成

次にパッケージの中にクラスを作成します。

先程作ったパッケージを右クリックして、 新規>クラス を選択します。

 

クラスの名前はお好みで大丈夫です。(ここでは「Main」とします。クラス名の頭文字は大文字にして下さい。Javaの制約です。メインクラスの名前はプラグイン名にするのがおすすめです)

完了を押すとパッケージの中にクラスファイルが作成され、画面中央の内蔵テキストエディタで作成したクラスファイルが編集できます。

 

すでにこのようなプログラムが書かれているはずです。
(プログラミングの基礎知識が必要です。分からない方はJavaを少し勉強して下さい)

package io.github.author.bukkit.testplugin;

public class Main {
	
}

 

これから書く内容の完成形です。めんどくさい方はコピペして下さい。

package io.github.author.bukkit.testplugin;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
	
	@Override
	public void onEnable() {
		System.out.println("プラグインが有効になりました");
	}
	
	@Override
	public void onDisable() {
		System.out.println("プラグインが無効になりました");
	}
}

 

まずMainクラスにJavaPluginクラスを継承します。

public class Mainpublic class Main extends JavaPluginに書き換えて下さい。

すると、JavaPluginがインポートされていないため "JavaPlugin" に赤い下線が表示されエラーが出ています。

その場合はJavaPluginにカーソルを合わせて「JavaPluginをインポートする」を選択して下さい。eclipseの便利な機能です。

 

 

次はMainの中にカーソルを置き、Ctrl+Spaceを押すとコンテンツ・アシストが表示されます。こちらもeclipseの便利な機能です。

onEnable()を選択してonEnable関数を作成して下さい。

そしたらもう一度、コンテンツ・アシストを表示してonDisable関数も作成して下さい。

onEnable関数とonDisable関数の中に自動生成されたもの(super.onEnable()、super.onDisable()含む)は削除して、

onEnable関数の中にはSystem.out.println(“プラグインが有効になりました”);

onDisable関数の中にはSystem.out.println(“プラグインが無効になりました”);を書いて下さい。

これでクラスは完成です。

 

 

plugin.ymlの作成

次に「plugin.yml」を作成します。


srcフォルダを右クリックして、 新規>ファイル を選択します。

ファイル名を”plugin.yml”にして完了を押します。

すると画面中央の内蔵テキストエディタにplugin.ymlが表示されます。

ちなみにymlはYAMLと言う文法で書きます。

 

plugin.ymlに以下の文章を入力して下さい。

name: プラグイン名
main: パッケージ.メインクラス
version: バージョン
author: 作者名
description: 説明

 

記入例:

name: TestPlugin
main: io.github.author.bukkit.testplugin.Main
version: 0.1
author: Author
description: Test Plugin

 

nameにはプラグイン名、

versionにバージョンとauthorに作者名、

descriptionにプラグインの説明を書いて下さい。

mainにはパッケージ名.メインクラスを書きます。上の記入例はパッケージがio.github.author.bukkit.testpluginでメインクラス(先ほど作成したクラス)が「Main」である場合の例です。

name、main、version以外は省略可能です。

plugin.ymlについてはこちらをご覧ください:https://bukkit.gamepedia.com/Plugin_YAML

 

 

 

Jarファイルの作成

plugin.ymlが完成したら、これでプラグインが動くようになりました。


次はプラグインをビルドして JARファイル を作成します。

プロジェクトを右クリックして、 エクスポート を選択して下さい。

JAR ファイル を押して下さい。こんな画面が出てきます。

f:id:Densyakun:20180211184121p:plain

 

右上の .classpath と .project のチェックを外してエクスポートから除外して下さい。

このファイルはeclipseのファイルで、プラグインには必要ありません。

左側でプロジェクトを開き、中にあるlibフォルダもチェックを外して除外して下さい。

これは、エクスポートする際には必ず確認して下さい。

 

エクスポート先をサーバーのpluginsフォルダの中にファイルを作成するようにして、

完了を押すとjarファイルが作成されます。

 

 

 

プラグインを動かす

次にサーバーを起動します。

サーバーが開いている場合は /reload コマンドを実行して下さい。

 

f:id:Densyakun:20180211184210p:plain

このようにログに「プラグインが有効になりました」と表示されていれば成功です。

次にサーバーにログインします。

接続元と接続先が同じPCである場合はサーバーアドレスを「localhost」にすることで接続できます。

 

 

/plコマンドを入力して、プラグイン一覧に作成したプラグインが追加されていれば完成です。

f:id:Densyakun:20180211184224p:plain

 

/version [プラグイン名] と入力するとプラグインのバージョンや説明文などが見れます。

 

今度はサーバーを閉じてみましょう。

 

f:id:Densyakun:20180211184320p:plain

このように「プラグインが無効になりました」と表示されていれば完成です。

 

おわりに

これでプラグインを作ることが出来ました。

ここまで手順通りに行い、簡単にできたと思います。

実際に作ったプラグインが動いているのを見ると達成感を感じますね。

 

次は、作成したプラグインをいじって、機能を追加していきましょう!

f:id:Densyakun:20180211184259p:plain

 

記事一覧に戻る

【Spigot】Bukkitプラグインの作り方講座の今後について

こんにちは、電車君です。

 

Bukkitプラグインの作り方講座ですが、

今まで「第n回」という形式でやっておりましたが、内容ごとに記事を分けることにしました。

 

2年ほど前から第3回で止まっており、第5回まで下書きにずっとあったのですが、

放置していました。すみません。

 

というのも、順番を決めることができなかったので、

内容ごとに分けることで容易に記事を作成することができるようにするためです。

 

実は、本にしようと思って2年ほど前から作っておりましたが、

やはりブログよりも本にする意味がわからず、そもそも今まで私は本をほぼ読まなかった人なので、

ブログの方に投稿することにしました。

 

既存の記事から「第n回」の表記を消し、記事一覧のまとめページを作ります。

今後はそのページから参照することをお願いします。

 

Blenderでエクスポートした.xファイルをBVE5で使用できない場合

こんにちは、電車君です。

Blenderでは、.xファイルをエクスポートできるのですが、

Blenderでエクスポートした.xファイルBVEで使用できない場合があります。

 

原因と解決策

それは、複数のオブジェクトがある場合、日本語を含むオブジェクト名、マテリアル名、テクスチャ名などが存在する場合です。

これが.xファイルに出力されるとコメントアウトでオブジェクト名などが書かれるのですが、

それをBVE5で使用するとエラーが発生してしまい、

ストラクチャが使用できなくなってしまいます

解決策としては、複数のオブジェクトを統合する、オブジェクト名、メッシュ名、マテリアル名、テクスチャ名などを日本語を含まない名前に変更する、というものです。

 

それをBlenderで編集する場合は、手作業でやる必要があり、メッシュデータが複数あるなどすると大変です。

なので、エクスポートした後、テキストエディタで編集を行います

私のおすすめは、文字列を正規表現で置き換えができる、「サクラエディタ」というテキストエディタを使います。

 

テキストエディタでの編集

正規表現での置き換えが可能なテキストエディタで、当該の.xファイルを開きます。

正規表現で置き換えを行えるようにします(サクラエディタでは、置換ウィンドウを開いた後、「正規表現」にチェックを入れます)。

 

"Frame .* {" を "Frame {" に置き換えます。

こうすることで、"Frame"と"{"の間にある名前を消すことができます。

 

次に、メッシュの後などにあるコメントアウトでの名前を消します。

" //.*" を "" に置き換えます。

 

最後にFrame同様、 "Material .* {" を "Material {" に置き換えて完了となります。

 

これを行うと、BVE5でストラクチャが読み込めるようになります。

ありがとうございました。

 

ゲーム開発について

去年は基本的にゲーム開発をしていましたが、進んでいませんでした。

 

ゲームのアイデアが多く、作ってはまた新しいゲームと言う感じに集中力が足りず、なかなか完成しませんでした。

 

また、作っていたゲームの構想の大幅な変更などを行い、現在では一番作りたいゲームが決まっており、またとっておきのゲームを開発しております。完成したらSteamで販売したいと思っております。お楽しみにしてください。

 

ゲーム開発において学んだこと

作りやすいゲーム(Unity)

  • RPG
  • アクション
  • FPS
  • TPS
  • 物理ベース

作りにくいゲーム

  • 事前にマップを作る
  • モデリングが必要
  • 動的にメッシュを変更
  • シミュレーション(特に鉄道)
  • 自由度の高いゲーム
  • →悩む・手間がかかる

ゲームを計画するときに

  • ゲームの主な要素が作りやすいこと
  • 作りにくいゲームは複数人で開発すること

ゲームを開発するときに

 

自作ゲーム一覧(現在)

完成したゲーム

  • BluePrint サバイバル生活ゲーム。バグがあるため遊びづらいが、マルチプレイもできる。開発は終了

クリエイティブ団体「Rintech」にて開発中:

  • Blueprint 街づくり生活ゲーム(一番作りたいゲームであった。完成した「BluePrint」とは異なる。ほぼ一人で開発中。開発から数年が経過中)
  • Blueprint20 一番作りたいゲーム。2020年版としてゲームの基本システムから再開発中。
  • BlockCity 街づくり箱庭系ゲーム(休止中)
  • Usagi3d うさぎのゲーム(放置中)

一人で開発中(新しい)

  • WheelTurn スマホでサクサク一輪車レースゲーム(サーバーが必要なため元Rintechメンバーと協力。開発休止中)
  • KohakuIsland 日本Unityのキャラクター「Unity-Chan!」を主人公にした舞台で、プレイステーション系ゲーム「リトルビックプラネット」をオマージュしたクリエイティブなゲーム(ストーリー関係未定)
  • NFloor オフィスビル経営ゲーム。学校で作ったゲームを提案するために開発。現在放置中。
  • NBlocks ロボットを命令して、ブロックを壊したりしてゴールを目指す2Dスクロールゲーム。開発休止中。
  • TrafficCity 街を中心とした鉄道経営ゲーム。開発休止中。
  • Game001 産業を中心とした2D都市開発ゲーム。現在放置中。
  • JapanTruckSimulator 日本の都市で、軽トラックから大型トレーラーまで運転するシミュレーションゲーム。マップ制作に時間がかかるため休止中。
  • HideOnTheCity 半ウェアラブルごっこゲーム。現在放置中。
  • JapanBusSimulator 日本のバスを運転するシミュレーションゲーム。現在開発中。
  • Game002 原子や化合物になって宇宙を浮遊しながら巨大化していくゲーム。現在放置中。
  • MiniRacer 小さな世界で動き出す、スマホレーシングゲーム
  • Game003 電車君の夢の世界をもとにしたスマホゲーム。現在休止中
  • CitiesNetwork ウェアラブル都市開発ゲーム。現在放置中
  • Cultiva 3Dサンドボックスゲーム。ECS導入予定
  • Playspace ロジックを組み立ててゲームを作ったりと何でもできるゲーム。ECSを導入
  • InstNet PC用音ゲー。音の仕組みにハマってしまったので休止中
  • OpenRailwaysSim 鉄道シミュレーションゲーム。アーケードのシミュレーターなどを超え、高度なグラフィックを提供する。現在開発中。
  • SkylineWings 日本の都市を走るドライビングレースゲーム。放置中。
  • KohakuAction(旧) Unity-Chan!のアクションゲーム。ラチェクラをオマージュ。KohakuIslandに統合予定
  • AgriCorp 農業ゲーム
  • KohakuAction Unity-Chan!のアクションゲーム。
  • FactoryField 工場管理ゲーム。Steamで販売予定。

一人で開発(古くしばらく放置しているもの。またほぼ全て名称変更予定)

・Accelerator カートレースゲーム。マルチプレイ対応。
・CustomCar 上のゲームを作り直して、車をカスタマイズできるようにしたもの。
・Driving ドライビングレースゲーム。オリジナルの都市をドライブしながら、走り屋とレースをする。ただし、車の挙動が空を飛んでしまうぐらいおかしい。動画あり
・AirCraft 空か宇宙かなんかを舞台に航空機かなにかを手作りして戦闘するやつ(説明不足)
・Space よくわからない。多分上のゲームを作り直して、宇宙空間でなんかするやつだと思う。
・Metro Life Tokyo 東京を舞台に生活するゲーム。meet-meをリアルにしてGTAみたいにした感じ~~(都市をモデリングしてくれるモデラーがいれば捗る)~~
・Route Nゲージみたいな鉄道模型箱庭ゲーム。放置中
・Shoot 最初に作ってたゲーム。チームに分かれて弓矢で戦闘するゲーム。弓矢なのはありがちな銃を捨てたため。友だちと遊んでいたので懐かしい!
・WallCracks 道具や機械、アイテムを使い、壁などを掘って誰が早く目的地に辿り着くかを競うゲーム。全く着手してない。
・Cheese ネズミになるゲーム(説明不足)
・RoboLift 複数のロボットがどれだけ高いところに行けるか競うゲーム。フィールド上でターン制のバトルを行う。全く着手していない。
・GrowingField 農業経営ゲーム。現在休止中

作りたいゲーム

・事件災害回避シミュレーションゲーム

 

だいたいこんな感じです。作りすぎですね(笑)

OpenRailwaysSimは本気で作っています。

まだまだバグが多いですが、bve trainsim 5では表現できない光の表現などを再現したり、自線を基準にするのではなくワールド空間に線路を敷設するため複雑な線形を作成できます。

 

JapanBusSimulatorもいいですね。実際のバス路線を再現するものいいですが、アドオンで架空の路線なども再現できたらもっと面白いのではないかなと思います。

 

誰かと一緒にゲームを作りたいと常に思ってきましたが、

まだほとんど誰かとゲームを作ったことはありません。

なので、一緒にゲームを作ってくれる人がいたらぜひ声をかけてください。

一緒に楽しいゲームを作りましょう。

 

以上です。ありがとうございました。

 

一部記事のURLを変更しました&ブログのデザインを変更しました

いつも見ていただき本当にありがとうございます。

 

この度、ブログのデザインを変更し、見やすくしました。

各種カテゴリー、注目記事、最新のコメントをサイドバーに表示しました。

 

私のブログで最も人気なカテゴリーである、「Bukkitプラグインの作り方講座」など、サイドバーから行きやすくしました。

ぜひご覧ください。

 

なお、Bukkitプラグインの作り方講座 第1回及び、第2回のリンクを変更しております

ご覧の際はサイドバーのカテゴリーから御覧ください。

 

【Minecraft】音が鳴らないときの対処法

2020/02/07追記

一度非アクティブにする必要があったので内容を修正し、確実に直る方法を記載しました。

 

こんにちは、Densyakunです。

今回は、ゲーム「Minecraft」で、

音が鳴らないときの対処法を紹介します。

なお、この記事ではWindowsでの場合を想定して解説しています。

 

症状

Minecraftを起動すると、音が鳴らない場合があります。

  • ゲームの設定のサウンド設定を見ても、主音量が小さくなっていない
  • PCの音量を見ても適切である
  • Windowsのタスクバーにあるサウンドのアイコンを右クリックして、音量ミキサーを開くと、Minecraftがない

 

原因1

今回のケースは「音量ミキサー」にMinecraftがない場合です。

これは、Minecraftサウンドが出力されていないことを表しています。

 

通常はこのような問題は起きないのですが、

Optifineを入れていると起きることがあります。

 

技術的な説明をすると、ウィンドウがアクティブWindowsの場合、ウィンドウの枠に青や水色などの色がついている状態)である事が、Minecraftサウンドを出力する為に必要な条件になっており、なおかつその処理がOptifineの軽量化により、Minecraftを起動する際にしか行われないようになっていると思われます。

 

Mojangのロゴが出ている間に一度ウィンドウを非アクティブにしてからアクティブにすると確実に直ります

 

原因2

こちらもOptifineを入れていると起きると思われますが、

ゲーム中にサウンドの出力先が消える(イヤホンが外れるなど)と、それ以降サウンドが出力されない事があります。

場合によっては、他のアプリケーション等によりサウンドの再生デバイスが管理されていないかどうかも注意が必要です(DTMなど)。