たくのろじぃのメモ部屋

プログラミング・数学・マイクラなどの内容を備忘録として残すブログ。

【MinecraftConnection】ライブラリメモ #1

2020年12月末から製作中のライブラリのメモです。まだ公開はしていませんが、公開するときにはリファレンスが必要になると思うので、そのための記録として残しておきます。(おそらくシリーズ化っぽくなる?)

Minecraft で花火を作る場合

前回の記事でも書きましたが、Minecraft で花火を作ろうと思うとパラメータが複雑です。例えば、大玉でパチパチ弾けて、しだれるような赤色の花火を作ろうとするとこんなコマンドになります。

/summon firework_rocket ~ ~1 ~ {LifeTime:30,FireworksItem:{id:firework_rocket,Count:1,tag:{Fireworks:{Flight:2,Explosions:[{Type:1,Flicker:1,Trail:1,Colors:[I;11743532],FadeColors:[I;11743532]}]}}}}

これを簡単にするために、必要な値は受け付けて、それ以外は文字列を補完するような処理にします。

MCConnection クラス

Minecraft に接続してコマンドを投げるためのクラス。

コンストラクタの引数

  • RCON の IPアドレス (string)
  • RCON のポート番号 (ushort)
  • RCON のパスワード (string)

メソッドも色々ありますが、今回は花火を打ち上げるメソッドのみ。

  • SetOffFireworks(int x, int y, int z, Firework firework)

Firework クラスは後述します。x, y, z はそれぞれ打ち上げる座標です。

Firework クラス

Minecraft の花火を作るクラス。

コンストラクタの引数

  • LifeTime : 花火が咲くまでの時間 (int)
  • FlightDuration : 飛行時間 (int)
  • Shape : 花火が咲いたときの形 (FireworksShapes)
  • Flicker : 咲いたときにパチパチはじけるかの有無 (bool)
  • Trail : 咲いたときにしだれるかの有無 (bool)
  • ExplosionColors : 咲いた瞬間の色 (FireworksColors)
  • FadeColors : 散っていくときの色 (FireworksColors)

例えば、「大玉でパチパチはじけ、咲くときは緑色で散るときはシアン色」になる場合花火のインスタンスを作る場合は、このように作ります。

Firework MyFirework = new Firework(30, 2, FireworksShapes.LargeBall, true, false, FireworksColors.GREEN, FireworksColors.CYAN);

このときのデータ(文字列)は

{LifeTime:30,FireworksItem:{id:firework_rocket,Count:1,tag:{Fireworks:{Flight:2,Explosions:[{Type:1,Flicker:1,Trail:0,Colors:[I;3887386],FadeColors:[I;2651799]}]}}}}

となります。また、色を増やす場合は一度 List を作成してから引数に投げます。

List<FireworksColors> ExplosionColor = new List<FireworksColors>
{
    FireworksColors.BLUE,
    FireworksColors.RED,
    FireworksColors.GREEN
};

List<FireworksColors> FadeColor = new List<FireworksColors>
{
    FireworksColors.PINK,
    FireworksColors.ORANGE,
    FireworksColors.WHITE
};

Firework MyFirework = new Firework(30, 2, FireworkShapes.LargeBall, true, false, ExplosionColor, FadeColor);

//花火を打つ
MCConnection connection = new MCConnection("127.0.0.1", 25575, "minecraft");
connection.SetOffFireworks(X, Y, Z, MyFirework);

ちなみに、これで花火を打ち上げるとこんな感じになります。

f:id:takunology:20210104142859g:plain

Fireworks クラス

あらかじめ作成した基本形の花火が用意されています。

f:id:takunology:20210104141307p:plain

花火を作るのが面倒な場合はそのまま呼び出すことができるので、

connection.SetOffFireworks(X, Y, Z, Fireworks.LeargeBallBlue);

と書くことで花火を簡単に打ち上げることができます。

FireworksColors 列挙型

花火の色です。全部で16色あります。

public enum FireworksColors
{
    BLACK,
    RED,
    GREEN,
    BROWN,
    BLUE,
    PURPLE,
    CYAN,
    LIGHTGRAY,
    GRAY,
    PINK,
    LIME,
    YELLOW,
    LIGHTBLUE,
    MAGENTA,
    ORANGE,
    WHITE
}

FireworksShapes 列挙型

花火の咲いたときの形です。全部で5種類あります。

public enum FireworksShapes
{
    SmallBall,
    LargeBall,
    Star,
    Creeper,
    Burst
}

どんな形になるかは wiki を見ると良いと思います。

w.atwiki.jp

FireworksList クラス

Fireworks で作成した Firework インスタンスを List 型にまとめたものです。

花火を何発も打ちたいけど、いちいち呼び出すのが面倒な場合に使います。これも数が多いので画像で。

f:id:takunology:20210104144251p:plain


とりあえずここまで。このライブラリを使って花火大会したら面白そう...。(ボソッ)