Give errors when they attempt to use misc disguise on living entities with commands

This commit is contained in:
libraryaddict 2014-05-23 08:22:07 +12:00
parent 72d07e7f62
commit b44aba87d4
3 changed files with 51 additions and 27 deletions

View File

@ -12,6 +12,7 @@ import me.libraryaddict.disguise.utilities.UpdateChecker;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@ -120,9 +121,10 @@ public class DisguiseListener implements Listener {
@EventHandler
public void onRightClick(PlayerInteractEntityEvent event) {
if (disguiseSlap.containsKey(event.getPlayer().getName())) {
Player p = event.getPlayer();
event.setCancelled(true);
Disguise disguise = disguiseSlap.remove(event.getPlayer().getName());
disguiseRunnable.remove(event.getPlayer().getName()).cancel();
Disguise disguise = disguiseSlap.remove(p.getName());
disguiseRunnable.remove(p.getName()).cancel();
Entity entity = event.getRightClicked();
String entityName = "";
if (entity instanceof Player) {
@ -137,38 +139,41 @@ public class DisguiseListener implements Listener {
}
}
if (disguise != null) {
if (entity instanceof Player && DisguiseConfig.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
((LivingWatcher) disguise.getWatcher()).setCustomName(((Player) entity).getDisplayName());
if (DisguiseConfig.isNameAboveHeadAlwaysVisible()) {
((LivingWatcher) disguise.getWatcher()).setCustomNameVisible(true);
}
}
}
DisguiseAPI.disguiseToAll(entity, disguise);
String disguiseName = "a ";
if (disguise instanceof PlayerDisguise) {
disguiseName = "the player " + ((PlayerDisguise) disguise).getName();
if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled()
&& entity instanceof LivingEntity) {
p.sendMessage(ChatColor.RED
+ "Can't disguise a living entity as a misc disguise. This has been disabled in the config!");
} else {
String[] split = disguise.getType().name().split("_");
for (int i = 0; i < split.length; i++) {
disguiseName += split[0].substring(0, 1) + split[0].substring(1).toLowerCase();
if (i + 1 < split.length) {
disguiseName += " ";
if (entity instanceof Player && DisguiseConfig.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
((LivingWatcher) disguise.getWatcher()).setCustomName(((Player) entity).getDisplayName());
if (DisguiseConfig.isNameAboveHeadAlwaysVisible()) {
((LivingWatcher) disguise.getWatcher()).setCustomNameVisible(true);
}
}
}
DisguiseAPI.disguiseToAll(entity, disguise);
String disguiseName = "a ";
if (disguise instanceof PlayerDisguise) {
disguiseName = "the player " + ((PlayerDisguise) disguise).getName();
} else {
String[] split = disguise.getType().name().split("_");
for (int i = 0; i < split.length; i++) {
disguiseName += split[0].substring(0, 1) + split[0].substring(1).toLowerCase();
if (i + 1 < split.length) {
disguiseName += " ";
}
}
}
p.sendMessage(ChatColor.RED + "Disguised " + (entity instanceof Player ? "" : "the ") + entityName + " as "
+ disguiseName + "!");
}
event.getPlayer().sendMessage(
ChatColor.RED + "Disguised " + (entity instanceof Player ? "" : "the ") + entityName + " as "
+ disguiseName + "!");
} else {
if (DisguiseAPI.isDisguised(entity)) {
DisguiseAPI.undisguiseToAll(entity);
event.getPlayer().sendMessage(
ChatColor.RED + "Undisguised " + (entity instanceof Player ? "" : "the ") + entityName);
p.sendMessage(ChatColor.RED + "Undisguised " + (entity instanceof Player ? "" : "the ") + entityName);
} else
event.getPlayer().sendMessage(
ChatColor.RED + (entity instanceof Player ? "" : "the") + entityName + " isn't disguised!");
p.sendMessage(ChatColor.RED + (entity instanceof Player ? "" : "the") + entityName + " isn't disguised!");
}
}
}

View File

@ -52,6 +52,11 @@ public class DisguisePlayerCommand extends BaseDisguiseCommand {
}
return true;
}
if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled()) {
sender.sendMessage(ChatColor.RED
+ "Can't disguise a living entity as a misc disguise. This has been disabled in the config!");
return true;
}
if (DisguiseConfig.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
((LivingWatcher) disguise.getWatcher()).setCustomName(((Player) player).getDisplayName());

View File

@ -13,6 +13,7 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
public class DisguiseRadiusCommand extends BaseDisguiseCommand {
@ -66,9 +67,14 @@ public class DisguiseRadiusCommand extends BaseDisguiseCommand {
return true;
} // Time to use it!
int disguisedEntitys = 0;
int miscDisguises = 0;
for (Entity entity : ((Player) sender).getNearbyEntities(radius, radius, radius)) {
if (entity == sender)
continue;
if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled() && entity instanceof LivingEntity) {
miscDisguises++;
continue;
}
disguise = disguise.clone();
if (entity instanceof Player && DisguiseConfig.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
@ -81,7 +87,15 @@ public class DisguiseRadiusCommand extends BaseDisguiseCommand {
DisguiseAPI.disguiseToAll(entity, disguise);
disguisedEntitys++;
}
sender.sendMessage(ChatColor.RED + "Successfully disguised " + disguisedEntitys + " entities!");
if (disguisedEntitys > 0) {
sender.sendMessage(ChatColor.RED + "Successfully disguised " + disguisedEntitys + " entities!");
} else {
sender.sendMessage(ChatColor.RED + "Couldn't find any entities to disguise!");
}
if (miscDisguises > 0) {
sender.sendMessage(ChatColor.RED + "Failed to disguise " + miscDisguises
+ " entities because the option to disguise a living entity as a non-living has been disabled in the config");
}
return true;
}