LoginSignup
0
0

More than 1 year has passed since last update.

異なるディメンジョンを移動できるSpigotプラグインを作る

Last updated at Posted at 2022-06-01

はじめに

サラっと書きます。
Spigot API 1.18.2 のAPIを用いて開発しています。
それ以前のバージョンのAPIでの動作については保証しません。

ワールド間(ディメンジョン間)を移動するには

ワールド間を移動するには

player.teleport(Location型の引数)

でできます。
ですがこれだけでは移動することはできません。
幾つかのステップを踏まねばなりません。というわけで1つずつ見ていきましょう。

ファーストステップ

今回は例としてオーバーワールドの指定座標へ移動するコードを用います。

まずは移動先のワールドを読み込みましょう。
読み込まないとエラーを出して動きません。

WorldCreator loadWorld = new WorldCreator("world");

と書いてWorldCreator型の変数を定義して代入しましょう。

使用するときはworldの部分をワールド名に変更してください。
(ワールド名が分からないときはワールドデータのフォルダ名を参照すると良き)

セカンドステップ

次にcreateWorldしましょう。
既にワールドが作成されていてもcreateWorldは必須です。
この段階で読み込むのでとりあえず書いておけば大丈夫です。

Bukkit.createWorld(loadWorld);

(上記のコードでファーストステップで作成したオーバーワールドを読み込んでいます。)

サードステップ

それができたらLocation型の変数を定義してDouble型の値を代入しましょう。
Double型の値はx座標、y座標、z座標のそれぞれの分を用意しなくてはいけません。

double x = 0.0;
double y = 70.0;
double z = 0.0;

各座標に代入↑

Location worldLocation = new Location(Bukkit.getWorld("world"),x,y,z);

座標は必ずxyzの順番で書きましょう。

ラストステップ

ここまで来たらあとはテレポートするコードを書くだけです。
最初に書いたコードをここで書きます。

player.teleport(worldLocation);

注意点

コマンドを受け取った時にワールドのロードを実行するよう記述すると、サーバーを立ち上げて最初にこのコマンドを使う際にロードされるので動作が重くなり、タイムアウトなどで接続が切断されてしまうことがあります。
なのでファーストステップとセカンドステップはプラグインの起動時に行うように記述することをお勧めします。
(onEnableの中)

おわり

おわりです。良いプラグインライフを。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0