Added 2 config options to show names above disguised players head

This commit is contained in:
libraryaddict 2013-12-09 04:44:02 +13:00
parent 8dd604153e
commit 319c987f94
8 changed files with 66 additions and 12 deletions

View File

@ -32,3 +32,12 @@ AddEntityAnimations: true
# Does the plugin remove that disguise from valid disguises? If your plugin handles this. Then thats good. # Does the plugin remove that disguise from valid disguises? If your plugin handles this. Then thats good.
# Else its a memory leak. This loops through all disguise to see if anyone else is online who can see that disguise. # Else its a memory leak. This loops through all disguise to see if anyone else is online who can see that disguise.
RemoveUnusedDisguises: true RemoveUnusedDisguises: true
# This is only called into action when the disguise is constructed using the commands.
# And when the disguise supports that. This will not be used at all for plugins constructing the disguises for instance.
# Such as prophunt. Its also false because its kind of a retarded feature.
# This is pretty simple. It shows the players displayname (Name as it appears in chat) above their head.
# This also overrides any custom name they have set in their disguise options.
ShowNamesAboveDisguises: false
# This supports the above option.
# If this is true, then the name shown above the head appears regardless of if you are looking at the disguise directly or not.
NameAboveHeadAlwaysVisible: true

View File

@ -24,6 +24,8 @@ public class DisguiseAPI {
private static boolean isEntityAnimationsAdded; private static boolean isEntityAnimationsAdded;
private static boolean removeUnseenDisguises; private static boolean removeUnseenDisguises;
private static boolean sendVelocity; private static boolean sendVelocity;
private static boolean showNameAboveHead;
private static boolean showNameAboveHeadAlwaysVisible;
@Deprecated @Deprecated
public static boolean canHearSelfDisguise() { public static boolean canHearSelfDisguise() {
@ -189,8 +191,12 @@ public class DisguiseAPI {
return hidingHeldItem; return hidingHeldItem;
} }
public static boolean isInventoryListenerEnabled() { public static boolean isNameAboveHeadAlwaysVisible() {
return PacketsManager.isInventoryListenerEnabled(); return showNameAboveHeadAlwaysVisible;
}
public static boolean isNameOfPlayerShownAboveDisguise() {
return showNameAboveHead;
} }
public static boolean isSelfDisguisesSoundsReplaced() { public static boolean isSelfDisguisesSoundsReplaced() {
@ -241,6 +247,7 @@ public class DisguiseAPI {
public static void setHideArmorFromSelf(boolean hideArmor) { public static void setHideArmorFromSelf(boolean hideArmor) {
if (hidingArmor != hideArmor) { if (hidingArmor != hideArmor) {
hidingArmor = hideArmor; hidingArmor = hideArmor;
PacketsManager.setInventoryListenerEnabled(isHidingHeldItemFromSelf() || isHidingArmorFromSelf());
} }
} }
@ -250,13 +257,16 @@ public class DisguiseAPI {
public static void setHideHeldItemFromSelf(boolean hideHelditem) { public static void setHideHeldItemFromSelf(boolean hideHelditem) {
if (hidingHeldItem != hideHelditem) { if (hidingHeldItem != hideHelditem) {
hidingHeldItem = hideHelditem; hidingHeldItem = hideHelditem;
PacketsManager.setInventoryListenerEnabled(isHidingHeldItemFromSelf() || isHidingArmorFromSelf());
} }
} }
public static void setInventoryListenerEnabled(boolean inventoryListenerEnabled) { public static void setNameAboveHeadAlwaysVisible(boolean alwaysVisible) {
if (PacketsManager.isInventoryListenerEnabled() != inventoryListenerEnabled) { showNameAboveHeadAlwaysVisible = alwaysVisible;
PacketsManager.setInventoryListenerEnabled(inventoryListenerEnabled);
} }
public static void setNameOfPlayerShownAboveDisguise(boolean showNames) {
showNameAboveHead = showNames;
} }
/** /**

View File

@ -4,6 +4,7 @@ import java.util.HashMap;
import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.Disguise;
import me.libraryaddict.disguise.disguisetypes.TargetedDisguise; import me.libraryaddict.disguise.disguisetypes.TargetedDisguise;
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
import me.libraryaddict.disguise.utilities.DisguiseUtilities; import me.libraryaddict.disguise.utilities.DisguiseUtilities;
import me.libraryaddict.disguise.utilities.UpdateChecker; import me.libraryaddict.disguise.utilities.UpdateChecker;
@ -85,6 +86,15 @@ public class DisguiseListener implements Listener {
disguiseRunnable.remove(event.getPlayer().getName()).cancel(); disguiseRunnable.remove(event.getPlayer().getName()).cancel();
String entityName = event.getRightClicked().getType().name().toLowerCase().replace("_", " "); String entityName = event.getRightClicked().getType().name().toLowerCase().replace("_", " ");
if (disguise != null) { if (disguise != null) {
if (event.getRightClicked() instanceof Player && DisguiseAPI.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
((LivingWatcher) disguise.getWatcher())
.setCustomName(((Player) event.getRightClicked()).getDisplayName());
if (DisguiseAPI.isNameAboveHeadAlwaysVisible()) {
((LivingWatcher) disguise.getWatcher()).setCustomNameVisible(true);
}
}
}
DisguiseAPI.disguiseToAll(event.getRightClicked(), disguise); DisguiseAPI.disguiseToAll(event.getRightClicked(), disguise);
event.getPlayer().sendMessage( event.getPlayer().sendMessage(
ChatColor.RED + "Disguised the " + entityName + " as a " ChatColor.RED + "Disguised the " + entityName + " as a "

View File

@ -64,10 +64,8 @@ public class LibsDisguises extends JavaPlugin {
DisguiseAPI.setHideArmorFromSelf(getConfig().getBoolean("RemoveArmor")); DisguiseAPI.setHideArmorFromSelf(getConfig().getBoolean("RemoveArmor"));
DisguiseAPI.setHideHeldItemFromSelf(getConfig().getBoolean("RemoveHeldItem")); DisguiseAPI.setHideHeldItemFromSelf(getConfig().getBoolean("RemoveHeldItem"));
DisguiseAPI.setAddEntityAnimations(getConfig().getBoolean("AddEntityAnimations")); DisguiseAPI.setAddEntityAnimations(getConfig().getBoolean("AddEntityAnimations"));
DisguiseAPI.setUnusedDisguisesRemoved(getConfig().getBoolean("RemoveUnusedDisguises")); DisguiseAPI.setNameOfPlayerShownAboveDisguise(getConfig().getBoolean("ShowNamesAboveDisguises"));
if (DisguiseAPI.isHidingArmorFromSelf() || DisguiseAPI.isHidingHeldItemFromSelf()) { DisguiseAPI.setNameAboveHeadAlwaysVisible(getConfig().getBoolean("NameAboveHeadAlwaysVisible"));
DisguiseAPI.setInventoryListenerEnabled(true);
}
try { try {
// Here I use reflection to set the plugin for Disguise.. // Here I use reflection to set the plugin for Disguise..
// Kind of stupid but I don't want open API calls for a commonly used object. // Kind of stupid but I don't want open API calls for a commonly used object.

View File

@ -3,6 +3,7 @@ package me.libraryaddict.disguise.commands;
import java.util.ArrayList; import java.util.ArrayList;
import me.libraryaddict.disguise.DisguiseAPI; import me.libraryaddict.disguise.DisguiseAPI;
import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.Disguise;
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
import me.libraryaddict.disguise.utilities.BaseDisguiseCommand; import me.libraryaddict.disguise.utilities.BaseDisguiseCommand;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -30,6 +31,14 @@ public class DisguiseCommand extends BaseDisguiseCommand {
} }
return true; return true;
} }
if (DisguiseAPI.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
((LivingWatcher) disguise.getWatcher()).setCustomName(((Player) sender).getDisplayName());
if (DisguiseAPI.isNameAboveHeadAlwaysVisible()) {
((LivingWatcher) disguise.getWatcher()).setCustomNameVisible(true);
}
}
}
DisguiseAPI.disguiseToAll((Player) sender, disguise); DisguiseAPI.disguiseToAll((Player) sender, disguise);
sender.sendMessage(ChatColor.RED + "Now disguised as a " + disguise.getType().toReadable()); sender.sendMessage(ChatColor.RED + "Now disguised as a " + disguise.getType().toReadable());
return true; return true;

View File

@ -3,6 +3,7 @@ package me.libraryaddict.disguise.commands;
import java.util.ArrayList; import java.util.ArrayList;
import me.libraryaddict.disguise.DisguiseAPI; import me.libraryaddict.disguise.DisguiseAPI;
import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.Disguise;
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
import me.libraryaddict.disguise.utilities.BaseDisguiseCommand; import me.libraryaddict.disguise.utilities.BaseDisguiseCommand;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -49,6 +50,14 @@ public class DisguisePlayerCommand extends BaseDisguiseCommand {
} }
return true; return true;
} }
if (DisguiseAPI.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
((LivingWatcher) disguise.getWatcher()).setCustomName(((Player) player).getDisplayName());
if (DisguiseAPI.isNameAboveHeadAlwaysVisible()) {
((LivingWatcher) disguise.getWatcher()).setCustomNameVisible(true);
}
}
}
DisguiseAPI.disguiseToAll(player, disguise); DisguiseAPI.disguiseToAll(player, disguise);
sender.sendMessage(ChatColor.RED + "Successfully disguised " + player.getName() + " as a " sender.sendMessage(ChatColor.RED + "Successfully disguised " + player.getName() + " as a "
+ disguise.getType().toReadable() + "!"); + disguise.getType().toReadable() + "!");

View File

@ -3,6 +3,7 @@ package me.libraryaddict.disguise.commands;
import java.util.ArrayList; import java.util.ArrayList;
import me.libraryaddict.disguise.DisguiseAPI; import me.libraryaddict.disguise.DisguiseAPI;
import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.Disguise;
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
import me.libraryaddict.disguise.utilities.BaseDisguiseCommand; import me.libraryaddict.disguise.utilities.BaseDisguiseCommand;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -66,6 +67,15 @@ public class DisguiseRadiusCommand extends BaseDisguiseCommand {
for (Entity entity : ((Player) sender).getNearbyEntities(radius, radius, radius)) { for (Entity entity : ((Player) sender).getNearbyEntities(radius, radius, radius)) {
if (entity == sender) if (entity == sender)
continue; continue;
disguise = disguise.clone();
if (entity instanceof Player && DisguiseAPI.isNameOfPlayerShownAboveDisguise()) {
if (disguise.getWatcher() instanceof LivingWatcher) {
((LivingWatcher) disguise.getWatcher()).setCustomName(((Player) entity).getDisplayName());
if (DisguiseAPI.isNameAboveHeadAlwaysVisible()) {
((LivingWatcher) disguise.getWatcher()).setCustomNameVisible(true);
}
}
}
DisguiseAPI.disguiseToAll(entity, disguise); DisguiseAPI.disguiseToAll(entity, disguise);
disguisedEntitys++; disguisedEntitys++;
} }

View File

@ -2,7 +2,6 @@ package me.libraryaddict.disguise.utilities;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;