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);
}
}
}
}
}
実行結果
初期に建築した場所へテレポートして、「来て」とチャットで入力しました。
メイドさん来ましたね。