diff --git a/src/com/massivecraft/massivecore/command/type/sender/TypeSenderIdAbstract.java b/src/com/massivecraft/massivecore/command/type/sender/TypeSenderIdAbstract.java index 5faed104..ec011a9b 100644 --- a/src/com/massivecraft/massivecore/command/type/sender/TypeSenderIdAbstract.java +++ b/src/com/massivecraft/massivecore/command/type/sender/TypeSenderIdAbstract.java @@ -110,15 +110,22 @@ public abstract class TypeSenderIdAbstract extends TypeAbstract String senderId = this.getSenderIdFor(arg); // All of our subclasses return null if senderId is null. // Thus we don't need to check for that being null, but only check ret. - + + // If presence is online or local ... + if (this.presence == SenderPresence.LOCAL || this.presence == SenderPresence.ONLINE) + { + // ... and the target is not visible for the sender ... + if (!MixinVisibility.get().isVisible(senderId, sender)) + { + // .. throw an error. + throwError(arg); + } + } + // Create & populate Ret T ret = this.getResultForSenderId(senderId); - if (ret == null) - { - // No alternatives found - throw new MassiveException().addMessage(this.getErrorMessageForArg(arg)); - } + if (ret == null) throwError(arg); // Return Ret return ret; @@ -177,7 +184,12 @@ public abstract class TypeSenderIdAbstract extends TypeAbstract // -------------------------------------------- // // UTIL // -------------------------------------------- // - + + public void throwError(String arg) throws MassiveException + { + throw new MassiveException().addMessage(this.getErrorMessageForArg(arg)); + } + public String getErrorMessageForArg(String arg) { return Txt.parse("No %s matches \"%s\".", this.getName(), arg); diff --git a/src/com/massivecraft/massivecore/mixin/MixinVisibility.java b/src/com/massivecraft/massivecore/mixin/MixinVisibility.java index eab7e2c3..17748c68 100644 --- a/src/com/massivecraft/massivecore/mixin/MixinVisibility.java +++ b/src/com/massivecraft/massivecore/mixin/MixinVisibility.java @@ -43,10 +43,10 @@ public class MixinVisibility extends Mixin { Player pwatchee = IdUtil.getPlayer(watcheeObject); Player pwatcher = IdUtil.getPlayer(watcherObject); - + if (pwatchee == null) return true; if (pwatcher == null) return true; - + return pwatcher.canSee(pwatchee); }