Get rid of pointless code duplication.

This commit is contained in:
UnknownShadow200 2017-05-20 13:25:26 +10:00
parent 71d9e5def1
commit 9d66e40bef
7 changed files with 28 additions and 122 deletions

View File

@ -22,9 +22,6 @@ namespace MCGalaxy.Events {
/// <summary> Raised whenever a player's online money changes. </summary> /// <summary> Raised whenever a player's online money changes. </summary>
public sealed class OnMoneyChangedEvent : IPluginEvent<Economy.OnMoneyChanged> { public sealed class OnMoneyChangedEvent : IPluginEvent<Economy.OnMoneyChanged> {
internal OnMoneyChangedEvent(Economy.OnMoneyChanged method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p) { public static void Call(Player p) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p)); CallImpl(pl => pl(p));
@ -32,10 +29,7 @@ namespace MCGalaxy.Events {
} }
/// <summary> Raised whenever an economic transaction occurs. </summary> /// <summary> Raised whenever an economic transaction occurs. </summary>
public sealed class OnEcoTransactionEvent : IPluginEvent<Economy.OnEcoTransaction> { public sealed class OnEcoTransactionEvent : IPluginEvent<Economy.OnEcoTransaction> {
internal OnEcoTransactionEvent(Economy.OnEcoTransaction method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(EcoTransaction transaction) { public static void Call(EcoTransaction transaction) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(transaction)); CallImpl(pl => pl(transaction));

View File

@ -21,10 +21,6 @@ using System.Collections.Generic;
namespace MCGalaxy.Events { namespace MCGalaxy.Events {
public sealed class OnGroupLoadedEvent : IPluginEvent<Group.GroupLoaded> { public sealed class OnGroupLoadedEvent : IPluginEvent<Group.GroupLoaded> {
internal OnGroupLoadedEvent(Group.GroupLoaded method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Group g) { public static void Call(Group g) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(g)); CallImpl(pl => pl(g));
@ -32,10 +28,6 @@ namespace MCGalaxy.Events {
} }
public sealed class OnGroupLoadEvent : IPluginEvent<Group.GroupLoad> { public sealed class OnGroupLoadEvent : IPluginEvent<Group.GroupLoad> {
internal OnGroupLoadEvent(Group.GroupLoad method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call() { public static void Call() {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl()); CallImpl(pl => pl());
@ -43,10 +35,6 @@ namespace MCGalaxy.Events {
} }
public sealed class OnGroupSaveEvent : IPluginEvent<Group.GroupSave> { public sealed class OnGroupSaveEvent : IPluginEvent<Group.GroupSave> {
internal OnGroupSaveEvent(Group.GroupSave method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call() { public static void Call() {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl()); CallImpl(pl => pl());
@ -54,10 +42,6 @@ namespace MCGalaxy.Events {
} }
public sealed class OnPlayerRankSetEvent : IPluginEvent<Group.RankSet> { public sealed class OnPlayerRankSetEvent : IPluginEvent<Group.RankSet> {
internal OnPlayerRankSetEvent(Group.RankSet method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, Group newRank) { public static void Call(Player p, Group newRank) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, newRank)); CallImpl(pl => pl(p, newRank));

View File

@ -23,15 +23,9 @@ namespace MCGalaxy.Events {
// This is because the static events are unique to each generic instantiation, not each subclass. // This is because the static events are unique to each generic instantiation, not each subclass.
public class IPluginEvent<IMethod> { public class IPluginEvent<IMethod> {
protected internal static List<IPluginEvent<IMethod>> handlers = new List<IPluginEvent<IMethod>>(); protected internal static List<IPluginEvent<IMethod>> handlers = new List<IPluginEvent<IMethod>>();
protected internal Plugin plugin; protected Plugin plugin;
protected internal IMethod method; protected IMethod method;
protected internal Priority priority; protected Priority priority;
internal IPluginEvent(IMethod method, Priority priority, Plugin plugin) {
this.plugin = plugin;
this.priority = priority;
this.method = method;
}
/// <summary> Register this event </summary> /// <summary> Register this event </summary>
/// <param name="method">This is the delegate that will get called when this event occurs</param> /// <param name="method">This is the delegate that will get called when this event occurs</param>
@ -41,8 +35,11 @@ namespace MCGalaxy.Events {
public static void Register(IMethod method, Priority priority, Plugin plugin, bool bypass = false) { public static void Register(IMethod method, Priority priority, Plugin plugin, bool bypass = false) {
if (Find(plugin) != null && !bypass) if (Find(plugin) != null && !bypass)
throw new ArgumentException("The user tried to register 2 of the same event!"); throw new ArgumentException("The user tried to register 2 of the same event!");
handlers.Add(new IPluginEvent<IMethod>(method, priority, plugin));
Organize(); IPluginEvent<IMethod> handler = new IPluginEvent<IMethod>();
handler.plugin = plugin; handler.method = method; handler.priority = priority;
handlers.Add(handler);
SortHandlers();
} }
/// <summary> UnRegister this event </summary> /// <summary> UnRegister this event </summary>
@ -50,8 +47,8 @@ namespace MCGalaxy.Events {
public static void UnRegister(Plugin plugin) { public static void UnRegister(Plugin plugin) {
if (Find(plugin) == null) if (Find(plugin) == null)
throw new ArgumentException("This plugin doesnt have this event registered!"); throw new ArgumentException("This plugin doesnt have this event registered!");
else
handlers.Remove(Find(plugin)); handlers.Remove(Find(plugin));
} }
public static IPluginEvent<IMethod> Find(Plugin plugin) { public static IPluginEvent<IMethod> Find(Plugin plugin) {
@ -62,7 +59,7 @@ namespace MCGalaxy.Events {
} }
protected static void Organize() { protected static void SortHandlers() {
handlers.Sort((a, b) => b.priority.CompareTo(a.priority)); handlers.Sort((a, b) => b.priority.CompareTo(a.priority));
} }

View File

@ -20,40 +20,28 @@ using MCGalaxy.Blocks.Physics;
namespace MCGalaxy.Events { namespace MCGalaxy.Events {
public sealed class OnLevelLoadedEvent : IPluginEvent<Level.OnLevelLoaded> { public sealed class OnLevelLoadedEvent : IPluginEvent<Level.OnLevelLoaded> {
internal OnLevelLoadedEvent(Level.OnLevelLoaded method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Level l) { public static void Call(Level l) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(l)); CallImpl(pl => pl(l));
} }
} }
public sealed class OnLevelLoadEvent : IPluginEvent<Level.OnLevelLoad> { public sealed class OnLevelLoadEvent : IPluginEvent<Level.OnLevelLoad> {
internal OnLevelLoadEvent(Level.OnLevelLoad method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(string name) { public static void Call(string name) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(name)); CallImpl(pl => pl(name));
} }
} }
public sealed class OnLevelSaveEvent : IPluginEvent<Level.OnLevelSave> { public sealed class OnLevelSaveEvent : IPluginEvent<Level.OnLevelSave> {
internal OnLevelSaveEvent(Level.OnLevelSave method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Level l) { public static void Call(Level l) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(l)); CallImpl(pl => pl(l));
} }
} }
public sealed class OnLevelUnloadEvent : IPluginEvent<Level.OnLevelUnload> { public sealed class OnLevelUnloadEvent : IPluginEvent<Level.OnLevelUnload> {
internal OnLevelUnloadEvent(Level.OnLevelUnload method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Level l) { public static void Call(Level l) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(l)); CallImpl(pl => pl(l));
@ -61,10 +49,6 @@ namespace MCGalaxy.Events {
} }
public sealed class OnPhysicsUpdateEvent : IPluginEvent<Level.OnPhysicsUpdate> { public sealed class OnPhysicsUpdateEvent : IPluginEvent<Level.OnPhysicsUpdate> {
internal OnPhysicsUpdateEvent(Level.OnPhysicsUpdate method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(ushort x, ushort y, ushort z, PhysicsArgs extraInfo, Level l) { public static void Call(ushort x, ushort y, ushort z, PhysicsArgs extraInfo, Level l) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(x, y, z, extraInfo, l)); CallImpl(pl => pl(x, y, z, extraInfo, l));

View File

@ -126,9 +126,6 @@ namespace MCGalaxy.Events {
/// <summary> Raised when a moderation action occurs. </summary> /// <summary> Raised when a moderation action occurs. </summary>
public sealed class OnModActionEvent : IPluginEvent<OnModAction> { public sealed class OnModActionEvent : IPluginEvent<OnModAction> {
internal OnModActionEvent(OnModAction method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(ModAction e) { public static void Call(ModAction e) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(e)); CallImpl(pl => pl(e));

View File

@ -21,10 +21,7 @@ using System.Collections.Generic;
namespace MCGalaxy.Events { namespace MCGalaxy.Events {
/// <summary> This event is called whenever a player chats on the server </summary> /// <summary> This event is called whenever a player chats on the server </summary>
public sealed class OnPlayerChatEvent : IPluginEvent<Player.OnPlayerChat> { public sealed class OnPlayerChatEvent : IPluginEvent<Player.OnPlayerChat> {
internal OnPlayerChatEvent(Player.OnPlayerChat method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, string message) { public static void Call(Player p, string message) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, message)); CallImpl(pl => pl(p, message));
@ -33,9 +30,6 @@ namespace MCGalaxy.Events {
/// <summary> This event is called whenever a player moves </summary> /// <summary> This event is called whenever a player moves </summary>
public sealed class OnPlayerMoveEvent : IPluginEvent<Player.OnPlayerMove> { public sealed class OnPlayerMoveEvent : IPluginEvent<Player.OnPlayerMove> {
internal OnPlayerMoveEvent(Player.OnPlayerMove method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, Position next, byte yaw, byte pitch) { public static void Call(Player p, Position next, byte yaw, byte pitch) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, next, yaw, pitch)); CallImpl(pl => pl(p, next, yaw, pitch));
@ -44,9 +38,6 @@ namespace MCGalaxy.Events {
/// <summary> This event is called whenever the player goes AFK </summary> /// <summary> This event is called whenever the player goes AFK </summary>
public sealed class OnPlayerAFKEvent: IPluginEvent<Player.OnAFK > { public sealed class OnPlayerAFKEvent: IPluginEvent<Player.OnAFK > {
internal OnPlayerAFKEvent(Player.OnAFK method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p) { public static void Call(Player p) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p)); CallImpl(pl => pl(p));
@ -55,9 +46,6 @@ namespace MCGalaxy.Events {
/// <summary> This event is called whenever the server saves data to MySQL or SQLite </summary> /// <summary> This event is called whenever the server saves data to MySQL or SQLite </summary>
public sealed class OnMySQLSaveEvent : IPluginEvent<Player.OnMySQLSave> { public sealed class OnMySQLSaveEvent : IPluginEvent<Player.OnMySQLSave> {
internal OnMySQLSaveEvent(Player.OnMySQLSave method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, string mysqlcommand) { public static void Call(Player p, string mysqlcommand) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, mysqlcommand)); CallImpl(pl => pl(p, mysqlcommand));
@ -65,10 +53,7 @@ namespace MCGalaxy.Events {
} }
/// <summary> This event is called whenever a player uses a command </summary> /// <summary> This event is called whenever a player uses a command </summary>
public sealed class OnPlayerCommandEvent : IPluginEvent<Player.OnPlayerCommand> { public sealed class OnPlayerCommandEvent : IPluginEvent<Player.OnPlayerCommand> {
internal OnPlayerCommandEvent(Player.OnPlayerCommand method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(string cmd, Player p, string message) { public static void Call(string cmd, Player p, string message) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(cmd, p, message)); CallImpl(pl => pl(cmd, p, message));
@ -76,10 +61,7 @@ namespace MCGalaxy.Events {
} }
/// <summary> This event is called whenever a player connects to the server </summary> /// <summary> This event is called whenever a player connects to the server </summary>
public sealed class OnPlayerConnectEvent: IPluginEvent<Player.OnPlayerConnect> { public sealed class OnPlayerConnectEvent: IPluginEvent<Player.OnPlayerConnect> {
internal OnPlayerConnectEvent(Player.OnPlayerConnect method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p) { public static void Call(Player p) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p)); CallImpl(pl => pl(p));
@ -87,10 +69,7 @@ namespace MCGalaxy.Events {
} }
/// <summary> This event is called whenever a player tries connecting to the server </summary> /// <summary> This event is called whenever a player tries connecting to the server </summary>
public sealed class OnPlayerConnectingEvent: IPluginEvent<Player.OnPlayerConnecting> { public sealed class OnPlayerConnectingEvent: IPluginEvent<Player.OnPlayerConnecting> {
internal OnPlayerConnectingEvent(Player.OnPlayerConnecting method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, string mppass) { public static void Call(Player p, string mppass) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, mppass)); CallImpl(pl => pl(p, mppass));
@ -98,10 +77,7 @@ namespace MCGalaxy.Events {
} }
/// <summary> This event is called whenever a player dies in-game </summary> /// <summary> This event is called whenever a player dies in-game </summary>
public sealed class OnPlayerDeathEvent : IPluginEvent<Player.OnPlayerDeath> { public sealed class OnPlayerDeathEvent : IPluginEvent<Player.OnPlayerDeath> {
internal OnPlayerDeathEvent(Player.OnPlayerDeath method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, ExtBlock block) { public static void Call(Player p, ExtBlock block) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, block)); CallImpl(pl => pl(p, block));
@ -109,10 +85,7 @@ namespace MCGalaxy.Events {
} }
/// <summary> This event is called whenever a player connects to the server </summary> /// <summary> This event is called whenever a player connects to the server </summary>
public sealed class OnPlayerDisconnectEvent : IPluginEvent<Player.OnPlayerDisconnect> { public sealed class OnPlayerDisconnectEvent : IPluginEvent<Player.OnPlayerDisconnect> {
internal OnPlayerDisconnectEvent(Player.OnPlayerDisconnect method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, string reason) { public static void Call(Player p, string reason) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, reason)); CallImpl(pl => pl(p, reason));
@ -120,10 +93,7 @@ namespace MCGalaxy.Events {
} }
/// <summary> This event is called whenever a player places or deletes a block </summary> /// <summary> This event is called whenever a player places or deletes a block </summary>
public sealed class OnBlockChangeEvent : IPluginEvent<Player.BlockchangeEventHandler> { public sealed class OnBlockChangeEvent : IPluginEvent<Player.BlockchangeEventHandler> {
internal OnBlockChangeEvent(Player.BlockchangeEventHandler method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, ushort x, ushort y, ushort z, ExtBlock block) { public static void Call(Player p, ushort x, ushort y, ushort z, ExtBlock block) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, x, y, z, block)); CallImpl(pl => pl(p, x, y, z, block));
@ -131,13 +101,9 @@ namespace MCGalaxy.Events {
} }
/// <summary> This event is called whenever a player clicks their mouse </summary> /// <summary> This event is called whenever a player clicks their mouse </summary>
public sealed class OnPlayerClickEvent : IPluginEvent<Player.PlayerClickHandler> public sealed class OnPlayerClickEvent : IPluginEvent<Player.PlayerClickHandler> {
{ public static void Call(Player p, MouseButton button, MouseAction action,
internal OnPlayerClickEvent(Player.PlayerClickHandler method, Priority priority, Plugin plugin) ushort yaw, ushort pitch, byte entity, ushort x, ushort y, ushort z, TargetBlockFace face) {
: base(method, priority, plugin) { }
public static void Call(Player p, MouseButton button, MouseAction action, ushort yaw, ushort pitch, byte entity, ushort x, ushort y, ushort z, TargetBlockFace face)
{
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, button, action, yaw, CallImpl(pl => pl(p, button, action, yaw,
pitch, entity, x, y, z, face)); pitch, entity, x, y, z, face));
@ -146,21 +112,14 @@ namespace MCGalaxy.Events {
/// <summary> This event is called whenever a player recieves a message from the server or from another player </summary> /// <summary> This event is called whenever a player recieves a message from the server or from another player </summary>
public sealed class OnMessageRecieveEvent : IPluginEvent<Player.OnPlayerMessageReceived> { public sealed class OnMessageRecieveEvent : IPluginEvent<Player.OnPlayerMessageReceived> {
internal OnMessageRecieveEvent(Player.OnPlayerMessageReceived method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, string message) { public static void Call(Player p, string message) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, message)); CallImpl(pl => pl(p, message));
} }
} }
/// <summary> This event is called when a player has joined a level. </summary> /// <summary> This event is called when a player has joined a level. </summary>
public sealed class OnJoinedLevelEvent : IPluginEvent<Player.JoinedLevel> { public sealed class OnJoinedLevelEvent : IPluginEvent<Player.JoinedLevel> {
internal OnJoinedLevelEvent(Player.JoinedLevel method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Player p, Level prevLevl, Level level) { public static void Call(Player p, Level prevLevl, Level level) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(p, prevLevl, level)); CallImpl(pl => pl(p, prevLevl, level));

View File

@ -20,20 +20,14 @@ using System.Collections.Generic;
namespace MCGalaxy.Events { namespace MCGalaxy.Events {
public sealed class OnConsoleCommandEvent : IPluginEvent<Server.OnConsoleCommand> { public sealed class OnConsoleCommandEvent : IPluginEvent<Server.OnConsoleCommand> {
internal OnConsoleCommandEvent(Server.OnConsoleCommand method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(string cmd, string message) { public static void Call(string cmd, string message) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(cmd, message)); CallImpl(pl => pl(cmd, message));
} }
} }
public sealed class OnServerErrorEvent : IPluginEvent<Server.OnServerError> { public sealed class OnServerErrorEvent : IPluginEvent<Server.OnServerError> {
internal OnServerErrorEvent(Server.OnServerError method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(Exception ex) { public static void Call(Exception ex) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(ex)); CallImpl(pl => pl(ex));
@ -41,9 +35,6 @@ namespace MCGalaxy.Events {
} }
public sealed class OnServerLogEvent : IPluginEvent<Server.OnServerLog> { public sealed class OnServerLogEvent : IPluginEvent<Server.OnServerLog> {
internal OnServerLogEvent(Server.OnServerLog method, Priority priority, Plugin plugin)
: base(method, priority, plugin) { }
public static void Call(string message) { public static void Call(string message) {
if (handlers.Count == 0) return; if (handlers.Count == 0) return;
CallImpl(pl => pl(message)); CallImpl(pl => pl(message));