From f0dfc539ba63d27f599ef9dd2ed88a8e36ac29e3 Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Mon, 5 Aug 2013 13:30:32 +0200 Subject: [PATCH] CommandMixin plz --- .../mcore/mixin/CommandMixin.java | 12 ++++++++ .../mcore/mixin/CommandMixinAbstract.java | 21 ++++++++++++++ .../mcore/mixin/CommandMixinDefault.java | 28 +++++++++++++++++++ src/com/massivecraft/mcore/mixin/Mixin.java | 23 +++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 src/com/massivecraft/mcore/mixin/CommandMixin.java create mode 100644 src/com/massivecraft/mcore/mixin/CommandMixinAbstract.java create mode 100644 src/com/massivecraft/mcore/mixin/CommandMixinDefault.java diff --git a/src/com/massivecraft/mcore/mixin/CommandMixin.java b/src/com/massivecraft/mcore/mixin/CommandMixin.java new file mode 100644 index 00000000..5b0087a4 --- /dev/null +++ b/src/com/massivecraft/mcore/mixin/CommandMixin.java @@ -0,0 +1,12 @@ +package com.massivecraft.mcore.mixin; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore.store.SenderEntity; + +public interface CommandMixin +{ + public boolean dispatchCommand(CommandSender sender, String commandLine); + public boolean dispatchCommand(SenderEntity sender, String commandLine); + public boolean dispatchCommand(String sender, String commandLine); +} diff --git a/src/com/massivecraft/mcore/mixin/CommandMixinAbstract.java b/src/com/massivecraft/mcore/mixin/CommandMixinAbstract.java new file mode 100644 index 00000000..ce6b270d --- /dev/null +++ b/src/com/massivecraft/mcore/mixin/CommandMixinAbstract.java @@ -0,0 +1,21 @@ +package com.massivecraft.mcore.mixin; + +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore.store.SenderEntity; + +public abstract class CommandMixinAbstract implements CommandMixin +{ + public boolean dispatchCommand(CommandSender sender, String commandLine) + { + return Bukkit.getServer().dispatchCommand(sender, commandLine); + } + + @Override + public boolean dispatchCommand(SenderEntity sender, String commandLine) + { + return this.dispatchCommand(sender.getId(), commandLine); + } + +} diff --git a/src/com/massivecraft/mcore/mixin/CommandMixinDefault.java b/src/com/massivecraft/mcore/mixin/CommandMixinDefault.java new file mode 100644 index 00000000..9e9f1219 --- /dev/null +++ b/src/com/massivecraft/mcore/mixin/CommandMixinDefault.java @@ -0,0 +1,28 @@ +package com.massivecraft.mcore.mixin; + +import org.bukkit.command.CommandSender; + +import com.massivecraft.mcore.util.SenderUtil; + +public class CommandMixinDefault extends CommandMixinAbstract +{ + // -------------------------------------------- // + // INSTANCE & CONSTRUCT + // -------------------------------------------- // + + private static CommandMixinDefault i = new CommandMixinDefault(); + public static CommandMixinDefault get() { return i; } + + // -------------------------------------------- // + // OVERRIDE + // -------------------------------------------- // + + @Override + public boolean dispatchCommand(String sender, String commandLine) + { + CommandSender commandSender = SenderUtil.getSender(sender); + if (commandSender == null) return false; + return this.dispatchCommand(sender, commandLine); + } + +} \ No newline at end of file diff --git a/src/com/massivecraft/mcore/mixin/Mixin.java b/src/com/massivecraft/mcore/mixin/Mixin.java index b9eb55eb..56490f2b 100644 --- a/src/com/massivecraft/mcore/mixin/Mixin.java +++ b/src/com/massivecraft/mcore/mixin/Mixin.java @@ -66,6 +66,10 @@ public class Mixin public static ActualMixin getActualMixin() { return actualMixin; } public static void setActualMixin(ActualMixin val) { actualMixin = val; } + private static CommandMixin commandMixin = CommandMixinDefault.get(); + public static CommandMixin getCommandMixin() { return commandMixin; } + public static void setCommandMixin(CommandMixin val) { commandMixin = val; } + // -------------------------------------------- // // STATIC EXPOSE: WORLD // -------------------------------------------- // @@ -702,4 +706,23 @@ public class Mixin return getActualMixin().isActualLeave(event); } + // -------------------------------------------- // + // STATIC EXPOSE: COMMAND + // -------------------------------------------- // + + public boolean dispatchCommand(CommandSender sender, String commandLine) + { + return getCommandMixin().dispatchCommand(sender, commandLine); + } + + public boolean dispatchCommand(SenderEntity sender, String commandLine) + { + return getCommandMixin().dispatchCommand(sender, commandLine); + } + + public boolean dispatchCommand(String sender, String commandLine) + { + return getCommandMixin().dispatchCommand(sender, commandLine); + } + }