LittleMaidReBirthのメイドをテレポートさせる

なかなかAIの話まで行かないですが、表題のとおり「来て」と指示するとLittleMaidReBirth(作者:シストラー様)のメイドを自分のいるところへテレポートさせるc#プログラムを掲載します。

まず、LittleMaidReBirthをサーバーで動かすときはServer.jarでは無理なので、参考サイト:ひきこもろん(運営:おたま商会様)を見て導入することをお勧めします。
ひきこもろん:【マイクラ】自宅PCで構築したマルチプレイサーバーにMODを導入する方法

メイドさんのIDを取得するには、メイドさんを目の前に置きチャット(T)で「/data get entity」コマンド入力して、その後に空白を入れると何個かのパラメータが出てきますので長い文字がIDだと思います。それをコピーしてプログラムに移植してください。




nuget情報


チャットで「来て」と入力すると自分の近くにメイドさんがテレポートしてきます。プレイヤー名、サーバー情報、メイドさんのIDはご自身の値に書き換えてね。
※ただしminecraftの制限で読み込みができないほどの長距離は失敗します

using MinecraftConnection;
using System.Text.RegularExpressions;

namespace ChatProgram
{
    public class Program
    {
        static private string strSavline = "";
        static private bool booSkip = true;
        static void Main(string[] args)
        {
            string strAddress = "127.0.0.1";
            ushort shtPort = 25575;
            string strPlayer = "3ddoghouse";
            string strMaid = "a1d4cdd8-24e6-46ad-9662-4e96cb4dbd6b";
            string strPass = "doghouse";
            MinecraftCommands MinCmd = new MinecraftCommands(strAddress, shtPort, strPass);
            string strline = "";
            while (true)
            {
                strline = ReadLog();
                if (strline != null)
                {
                    if (strline.IndexOf(@"<")>0)
                    {
                        Match rgxMtc = Regex.Match(strline, @"<.*> (.*)");
                        Group rgxGrp = rgxMtc.Groups[1];
                        CaptureCollection colCap = rgxGrp.Captures;
                        if(colCap[0].Value == "来て")
                        {
                            double x = MinCmd.GetPlayerData(strPlayer).Position.X;
                            double y = MinCmd.GetPlayerData(strPlayer).Position.Y;
                            double z = MinCmd.GetPlayerData(strPlayer).Position.Z;
                            MinCmd.SendCommand($"tp @e[{strMaid}] {x} {y} {z}");
                        }
                    }
                }
                Thread.Sleep(3000);
            }
        }

        static private string ReadLog()
        {
            string strline = "";
            string strPath = @"E:\MinecraftServer\logs\latest.log";

            using (FileStream fs = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (StreamReader sr = new StreamReader(fs))
                {
                    //最初は最終行まで、その後は読み込んだところまで
                    strline = sr.ReadLine();
                    while (true)
                    {
                        if (sr.Peek() < 0 || !booSkip)
                        {
                            if (strSavline == strline)
                                strline = "";
                            else
                                strSavline = strline;
                            booSkip = true;
                            break;
                        }
                        if (strline == strSavline)
                        {
                            booSkip = false;
                        }
                        strline = sr.ReadLine();
                    }
                    return (strline);
                }
            }
        }
    }
}



実行結果
初期に建築した場所へテレポートして、「来て」とチャットで入力しました。







メイドさん来ましたね。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です