C#でイベント機能を実装する方法

いままではActionなどを使用してコールバックを作成していたのですが、

イベントを活用することでできることのはばが広がったのでやり方を紹介します。

やり方

やり方はとても簡単で、

delegate でハンドル(?)を作って変数として event を追加するだけ()

// ハンドル
public delegate void MyEventHandler<T>(object sender, T args);
// イベント用
public event MyEventHandler<object, string> DebugEventHandler;

イベントの呼び出しは Invoke を利用してもいいですし、関数のように呼び出すこともできますが、起動直後はNULLのことがあるのでNULLチェックはした方がいいです。

DebugEventHandler?.Invoke(sender, string);
DebugEventHandler(sender, string);

 

【Bukkit/Spigot】プラグイン開発に関して思うこと

プラグイン開発に関して

個人でプラグイン開発を行ってもなにも利益はでないですし、完全に自己満足の世界です。

もしこれから個人でプラグイン開発をしたいと思った方は本当に利益が出るのか、自己満足だけでいいのかを考えてからやった方がいいと思います。

 

利益が出る方法を考える

利益というより、自分のメリットになる方法ですかね。

自分に有益であればそれでいいんですが、個人で開発を行う場合基本的にメリットはありません。

Bukkit、Spigotのプラグインを開発するということは、サーバーを建てて開発を行うと思いますが、個人で行う場合、複数人で遊ぶミニゲームの開発が困難です。

サブアカウントを用意することが簡単にできたとしても、パソコンのリソースには限界があり、

  • サーバー
  • IDE
  • クライアント1
  • クライアント2・・・

マインクラフトはメモリをバカ食いします。

パソコンのリソースを食いつぶしますし、電力もたくさん消費します。

個人で開発を行うメリットは開発によって得た知識、言語力といったもので、基本的な文法などは流用することができますが、Bukkit/Spigotの知識を流用する先はほぼありません。

他の言語を使いたいと思ったときの弊害になるかもしれないです。

 

プラグイン開発で大きなメリットを出すには大きなサーバーで開発を行うことでしょうか。

大きなサーバーでは複数人で同時に開発を行っていることが多く、Gitなどの知識が必要になることが多いと思います。

Gitはほかの場所でも応用が利くので覚えておいて損はないはずです。

大きな―サーバ―で開発をおこなえば、そのサーバー独自のロジックを知ることができます。

その技術は応用することができるでしょう。

大きなサーバーで開発をおこなえば、知名度を得ることができます。

そのサーバーで開発を行わなくなったとしても知名度は役に立つでしょう。

ただし、上記のことはメリットであり、利益ではないです。

 

結論

個人開発はメリットがあまりない。

だが、大きなサーバーでの開発はメリットがあるが、利益には直結しづらい。

【Bukkit】Github にてほぼすべてのプラグインを公開します

Github https://github.com/kemasama

にてほぼすべての今まで作ってきたプラグインを順次一般公開します。

著作権について

2次配布禁止

コード改変はインターネット公開(Githubへ)

著作権は僕にあります(kema)

以上が守れれば好きに使ってくれて構いません。

また公開されているプラグインの一部は自鯖で使用していたものもあり、専用にカスタマイズされているものもあります。

そこは臨機応変に使用するのであれば変えてください。

 

現在公開中のプラグイン

問題があれば消すかもしれません。

また開発時期が2年ほど前のものもあり、コードが汚いかもしれません。

ご容赦ください。

※コードの綺麗さで最近かどうかわかる?

https://github.com/kemasama/CommonEffect

https://github.com/kemasama/FarmHunt

https://github.com/kemasama/FarmHunt2

https://github.com/kemasama/ThePit

https://github.com/kemasama/TeamDeathMatch

https://github.com/kemasama/WatchCat

https://github.com/kemasama/AntiCheat

https://github.com/kemasama/Hardcore

https://github.com/kemasama/Sumo