[Plugin] public class HelloWorld:Plugin { }
[Command] public void Min() } }半径を指定して爆発させるコード
[Command] [Description("指定された半径内に爆発を起こす。")] public void Boom(Player player, int radius = 10) { new Explosion( player.Level, new BlockCoordinates((int) player.KnownPosition.X, (int) player.KnownPosition.Y, (int) player.KnownPosition.Z), radius).Explode(); ) }このサンプルについて注目すべきことがある。
[Command] [Description("argsを使用した一般的なコマンド")] public void Generic(Player player, string[] args) { Log.info("Genericコマンドが実行された"); }args引数には、クライアントのチャットにユーザーが指定した引数リストが含まれる。
public Package MinimalHandler(McpeMovePlayer packet) { return packet; // 処理される }必要に応じ、メソッドにPacketHandler属性を使用して注釈を付けられる。これにより、コードの可読性が向上し、コードの動作も変更される可能性がある。また、以下のReceive属性に注目し、このメソッドを受信処理としてマークする。 メソッドは処理を受け取るように基本設定されてる。
[PacketHandler, Receive] public Package MinimalHandler(McpeMovePlayer packet) { return packet; }送信するパケットをプラグインで受け取りたい場合、Receive属性をSend属性に書き換える。
[Send] public Package MinimalHandler(McpeMovePlayer packet) { return packet; }メソッド処理がnullを返すと、それはパケットのこれ以降の処理を停止させる。これは、送受信処理両方で同じだ。
[Send] public Package HandleSendMove(McpeMovePlayer packet) { return null; // 処理を停止させる }2番目の引数の型がPlayer型の場合、現在リクエストされているプレイヤーが挿入される。
public Package HandleSendMove(McpeMovePlayer packet, Player player) { return packet; }
[Plugin] public class SimplePlugin : Plugin { [PacketHandler, Receive] public Package HandleIncoming(McpeMovePlayer packet) { return packet; // process } [PacketHandler, Send] public Package HandleOutgoing(McpeMovePlayer packet) { return packet; // Send } }
[Plugin] public class StartupPlugin : Plugin, IStartup { private static readonly ILof Log = LogManager.GetLogger(typeof (StartupPlugin)); /// <summary> /// Startup class for MiNET. Example sets the user and role managers and stores /// for the application. /// </summary> /// <param name="server"></param> public void Configure(MiNetServer server) { server.UserManager = new UserManager<User>(new DefaultUserStore()); server.RoleManager = new RoleManager<Role>(new DefaultRoleStore()); Log.Info("Executed startup successfully. Replaced identity managment."); } }MiNETのアイデンティティ管理についてもっと知りたい場合は、公式のASP.NET IDのドキュメントを参照してください:
var server = Contect.Server; server.LevelManager.LevelCreated += (sender, args) => { Level level = args.Level; level.BlockBreak += (o, eventArgs) => { }; level.BlockPlace += (o, eventArgs) => { }; }; server.PlayerFactory.Playercreated += (sender, args) => { Player player = args.Player; player.PlayerJoin += (o, eventArgs) => eventArgs.Player.Level.BroadcastMessage($"{ChatColors.Gold}[{ChatColors.Green}+{ChatColors.Gold}]{ChatFormatting.Reset} {eventArgs.Player.Username}"); player.PlayerLeave += (o, eventArgs) => eventArgs.Player.Level.BroadcastMessage($"{ChatColors.Gold}[{ChatColors.Red}-{ChatColors.Gold}]{ChatFormatting.Reset} {eventArgs.Player.Username}"); };