From ee62ef3288410f45c30edce434cfc22794f2a5be Mon Sep 17 00:00:00 2001
From: CraftBukkit/Spigot <noreply+git-craftbukkit@papermc.io>
Date: Sun, 4 Jan 2015 23:36:55 +0000
Subject: [PATCH] Whoops missed a file

By: Thinkofdeath <thinkofdeath@spigotmc.org>
---
 .../command/ProxiedNativeCommandSender.java   | 126 ++++++++++++++++++
 1 file changed, 126 insertions(+)
 create mode 100644 paper-server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java

diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java b/paper-server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java
new file mode 100644
index 0000000000..9acd92c357
--- /dev/null
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/command/ProxiedNativeCommandSender.java
@@ -0,0 +1,126 @@
+
+package org.bukkit.craftbukkit.command;
+
+import java.util.Set;
+import net.minecraft.server.ICommandListener;
+
+import org.bukkit.Server;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.ProxiedCommandSender;
+import org.bukkit.permissions.Permission;
+import org.bukkit.permissions.PermissionAttachment;
+import org.bukkit.permissions.PermissionAttachmentInfo;
+import org.bukkit.plugin.Plugin;
+
+public class ProxiedNativeCommandSender implements ProxiedCommandSender {
+
+    private final ICommandListener orig;
+    private final CommandSender caller;
+    private final CommandSender callee;
+
+    public ProxiedNativeCommandSender(ICommandListener orig, CommandSender caller, CommandSender callee) {
+        this.orig = orig;
+        this.caller = caller;
+        this.callee = callee;
+    }
+
+    public ICommandListener getHandle() {
+        return orig;
+    }
+
+    @Override
+    public CommandSender getCaller() {
+        return caller;
+    }
+
+    @Override
+    public CommandSender getCallee() {
+        return callee;
+    }
+
+    @Override
+    public void sendMessage(String message) {
+        getCaller().sendMessage(message);
+    }
+
+    @Override
+    public void sendMessage(String[] messages) {
+        getCaller().sendMessage(messages);
+    }
+
+    @Override
+    public Server getServer() {
+        return getCallee().getServer();
+    }
+
+    @Override
+    public String getName() {
+        return getCallee().getName();
+    }
+
+    @Override
+    public boolean isPermissionSet(String name) {
+        return getCaller().isPermissionSet(name);
+    }
+
+    @Override
+    public boolean isPermissionSet(Permission perm) {
+        return getCaller().isPermissionSet(perm);
+    }
+
+    @Override
+    public boolean hasPermission(String name) {
+        return getCaller().hasPermission(name);
+    }
+
+    @Override
+    public boolean hasPermission(Permission perm) {
+        return getCaller().hasPermission(perm);
+    }
+
+    @Override
+    public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) {
+        return getCaller().addAttachment(plugin, name, value);
+    }
+
+    @Override
+    public PermissionAttachment addAttachment(Plugin plugin) {
+        return getCaller().addAttachment(plugin);
+    }
+
+    @Override
+    public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) {
+        return getCaller().addAttachment(plugin, name, value, ticks);
+    }
+
+    @Override
+    public PermissionAttachment addAttachment(Plugin plugin, int ticks) {
+        return getCaller().addAttachment(plugin, ticks);
+    }
+
+    @Override
+    public void removeAttachment(PermissionAttachment attachment) {
+        getCaller().removeAttachment(attachment);
+    }
+
+    @Override
+    public void recalculatePermissions() {
+        getCaller().recalculatePermissions();
+    }
+
+    @Override
+    public Set<PermissionAttachmentInfo> getEffectivePermissions() {
+        return getCaller().getEffectivePermissions();
+    }
+
+    @Override
+    public boolean isOp() {
+        return getCaller().isOp();
+    }
+
+    @Override
+    public void setOp(boolean value) {
+        getCaller().setOp(value);
+    }
+
+}