Add placeholder support, explained in disguises.yml. fixes #296
This commit is contained in:
@@ -36,9 +36,8 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter
|
||||
Disguise disguise;
|
||||
|
||||
try {
|
||||
disguise = DisguiseParser
|
||||
.parseDisguise(sender, getPermNode(), DisguiseUtilities.split(StringUtils.join(args, " ")),
|
||||
getPermissions(sender));
|
||||
disguise = DisguiseParser.parseDisguise(sender, (Entity) sender, getPermNode(),
|
||||
DisguiseUtilities.split(StringUtils.join(args, " ")), getPermissions(sender));
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
if (ex.getMessage() != null) {
|
||||
|
@@ -37,12 +37,12 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom
|
||||
return true;
|
||||
}
|
||||
|
||||
Disguise disguise;
|
||||
String[] disguiseArgs = DisguiseUtilities.split(StringUtils.join(args, " "));
|
||||
Disguise testDisguise;
|
||||
|
||||
try {
|
||||
disguise = DisguiseParser
|
||||
.parseDisguise(sender, getPermNode(), DisguiseUtilities.split(StringUtils.join(args, " ")),
|
||||
getPermissions(sender));
|
||||
testDisguise = DisguiseParser
|
||||
.parseTestDisguise(sender, getPermNode(), disguiseArgs, getPermissions(sender));
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
if (ex.getMessage() != null) {
|
||||
@@ -56,10 +56,10 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom
|
||||
return true;
|
||||
}
|
||||
|
||||
LibsDisguises.getInstance().getListener().setDisguiseEntity(sender.getName(), disguise);
|
||||
LibsDisguises.getInstance().getListener().setDisguiseEntity(sender.getName(), disguiseArgs);
|
||||
|
||||
sender.sendMessage(
|
||||
LibsMsg.DISG_ENT_CLICK.get(DisguiseConfig.getDisguiseEntityExpire(), disguise.getType().toReadable()));
|
||||
sender.sendMessage(LibsMsg.DISG_ENT_CLICK
|
||||
.get(DisguiseConfig.getDisguiseEntityExpire(), testDisguise.getType().toReadable()));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -53,9 +53,14 @@ public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCom
|
||||
return true;
|
||||
}
|
||||
|
||||
String[] options = DisguiseUtilities.split(StringUtils.join(args, " "));
|
||||
|
||||
options = DisguiseParser
|
||||
.parsePlaceholders(options, sender.getName(), DisguiseParser.getSkin(sender), sender.getName(),
|
||||
DisguiseParser.getSkin(sender));
|
||||
|
||||
try {
|
||||
DisguiseParser.callMethods(sender, disguise, permissions, disguisePerm, new ArrayList<>(),
|
||||
DisguiseUtilities.split(StringUtils.join(args, " ")));
|
||||
DisguiseParser.callMethods(sender, disguise, permissions, disguisePerm, new ArrayList<>(), options);
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
if (ex.getMessage() != null) {
|
||||
|
@@ -14,10 +14,12 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements TabCompleter {
|
||||
|
||||
@@ -35,9 +37,19 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = Bukkit.getPlayer(args[0]);
|
||||
Entity entityTarget = Bukkit.getPlayer(args[0]);
|
||||
|
||||
if (player == null) {
|
||||
if (entityTarget == null) {
|
||||
if (args[0].contains("-")) {
|
||||
try {
|
||||
entityTarget = Bukkit.getEntity(UUID.fromString(args[0]));
|
||||
}
|
||||
catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (entityTarget == null) {
|
||||
sender.sendMessage(LibsMsg.CANNOT_FIND_PLAYER.get(args[0]));
|
||||
return true;
|
||||
}
|
||||
@@ -53,13 +65,13 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements
|
||||
Disguise disguise = null;
|
||||
|
||||
if (sender instanceof Player)
|
||||
disguise = DisguiseAPI.getDisguise((Player) sender, player);
|
||||
disguise = DisguiseAPI.getDisguise((Player) sender, entityTarget);
|
||||
|
||||
if (disguise == null)
|
||||
disguise = DisguiseAPI.getDisguise(player);
|
||||
disguise = DisguiseAPI.getDisguise(entityTarget);
|
||||
|
||||
if (disguise == null) {
|
||||
sender.sendMessage(LibsMsg.DMODPLAYER_NODISGUISE.get(player.getName()));
|
||||
sender.sendMessage(LibsMsg.DMODPLAYER_NODISGUISE.get(entityTarget.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -70,9 +82,15 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements
|
||||
return true;
|
||||
}
|
||||
|
||||
String[] options = DisguiseUtilities.split(StringUtils.join(newArgs, " "));
|
||||
|
||||
options = DisguiseParser
|
||||
.parsePlaceholders(options, sender.getName(), DisguiseParser.getSkin(sender), DisguiseParser.getName(entityTarget),
|
||||
DisguiseParser.getSkin(entityTarget));
|
||||
|
||||
try {
|
||||
DisguiseParser.callMethods(sender, disguise, permissions, disguisePerm, new ArrayList<>(),
|
||||
DisguiseUtilities.split(StringUtils.join(newArgs, " ")));
|
||||
options);
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
if (ex.getMessage() != null) {
|
||||
@@ -86,7 +104,7 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements
|
||||
return true;
|
||||
}
|
||||
|
||||
sender.sendMessage(LibsMsg.DMODPLAYER_MODIFIED.get(player.getName()));
|
||||
sender.sendMessage(LibsMsg.DMODPLAYER_MODIFIED.get(entityTarget.getName()));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@@ -18,10 +18,7 @@ import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements TabCompleter {
|
||||
private int maxRadius = 30;
|
||||
@@ -127,6 +124,8 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements
|
||||
int modifiedDisguises = 0;
|
||||
int noPermission = 0;
|
||||
|
||||
String[] disguiseArgs = DisguiseUtilities.split(StringUtils.join(newArgs, " "));
|
||||
|
||||
for (Entity entity : getNearbyEntities(sender, radius)) {
|
||||
if (entity == sender) {
|
||||
continue;
|
||||
@@ -150,9 +149,12 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements
|
||||
continue;
|
||||
}
|
||||
|
||||
String[] tempArgs = Arrays.copyOf(disguiseArgs, disguiseArgs.length);
|
||||
tempArgs = DisguiseParser.parsePlaceholders(tempArgs, sender.getName(), DisguiseParser.getSkin(sender),
|
||||
DisguiseParser.getName(entity), DisguiseParser.getSkin(entity));
|
||||
|
||||
try {
|
||||
DisguiseParser.callMethods(sender, disguise, permissions, disguisePerm, new ArrayList<>(),
|
||||
DisguiseUtilities.split(StringUtils.join(newArgs, " ")));
|
||||
DisguiseParser.callMethods(sender, disguise, permissions, disguisePerm, new ArrayList<>(), tempArgs);
|
||||
modifiedDisguises++;
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
|
@@ -44,19 +44,19 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom
|
||||
return true;
|
||||
}
|
||||
|
||||
Entity entity = Bukkit.getPlayer(args[0]);
|
||||
Entity entityTarget = Bukkit.getPlayer(args[0]);
|
||||
|
||||
if (entity == null) {
|
||||
if (entityTarget == null) {
|
||||
if (args[0].contains("-")) {
|
||||
try {
|
||||
entity = Bukkit.getEntity(UUID.fromString(args[0]));
|
||||
entityTarget = Bukkit.getEntity(UUID.fromString(args[0]));
|
||||
}
|
||||
catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (entity == null) {
|
||||
if (entityTarget == null) {
|
||||
sender.sendMessage(LibsMsg.CANNOT_FIND_PLAYER.get(args[0]));
|
||||
return true;
|
||||
}
|
||||
@@ -72,9 +72,8 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom
|
||||
Disguise disguise;
|
||||
|
||||
try {
|
||||
disguise = DisguiseParser
|
||||
.parseDisguise(sender, getPermNode(), DisguiseUtilities.split(StringUtils.join(newArgs, " ")),
|
||||
permissions);
|
||||
disguise = DisguiseParser.parseDisguise(sender, entityTarget, getPermNode(),
|
||||
DisguiseUtilities.split(StringUtils.join(newArgs, " ")), permissions);
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
if (ex.getMessage() != null) {
|
||||
@@ -95,14 +94,15 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom
|
||||
|
||||
if (DisguiseConfig.isNameOfPlayerShownAboveDisguise()) {
|
||||
if (disguise.getWatcher() instanceof LivingWatcher) {
|
||||
disguise.getWatcher().setCustomName(getDisplayName(entity));
|
||||
disguise.getWatcher().setCustomName(getDisplayName(entityTarget));
|
||||
|
||||
if (DisguiseConfig.isNameAboveHeadAlwaysVisible()) {
|
||||
disguise.getWatcher().setCustomNameVisible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
disguise.setEntity(entity);
|
||||
|
||||
disguise.setEntity(entityTarget);
|
||||
|
||||
if (!setViewDisguise(args)) {
|
||||
// They prefer to have the opposite of whatever the view disguises option is
|
||||
@@ -114,13 +114,12 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom
|
||||
disguise.startDisguise();
|
||||
|
||||
if (disguise.isDisguiseInUse()) {
|
||||
sender.sendMessage(LibsMsg.DISG_PLAYER_AS_DISG
|
||||
.get(entity instanceof Player ? entity.getName() : DisguiseType.getType(entity).toReadable(),
|
||||
disguise.getType().toReadable()));
|
||||
sender.sendMessage(LibsMsg.DISG_PLAYER_AS_DISG.get(entityTarget instanceof Player ? entityTarget.getName() :
|
||||
DisguiseType.getType(entityTarget).toReadable(), disguise.getType().toReadable()));
|
||||
} else {
|
||||
sender.sendMessage(LibsMsg.DISG_PLAYER_AS_DISG_FAIL
|
||||
.get(entity instanceof Player ? entity.getName() : DisguiseType.getType(entity).toReadable(),
|
||||
disguise.getType().toReadable()));
|
||||
.get(entityTarget instanceof Player ? entityTarget.getName() :
|
||||
DisguiseType.getType(entityTarget).toReadable(), disguise.getType().toReadable()));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@@ -124,55 +124,47 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom
|
||||
|
||||
String[] newArgs = new String[args.length - (starting + 1)];
|
||||
System.arraycopy(args, starting + 1, newArgs, 0, newArgs.length);
|
||||
Disguise disguise;
|
||||
|
||||
if (newArgs.length == 0) {
|
||||
sendCommandUsage(sender, permissions);
|
||||
return true;
|
||||
}
|
||||
|
||||
String[] disguiseArgs = DisguiseUtilities.split(StringUtils.join(newArgs, " "));
|
||||
|
||||
try {
|
||||
disguise = DisguiseParser
|
||||
.parseDisguise(sender, getPermNode(), DisguiseUtilities.split(StringUtils.join(newArgs, " ")),
|
||||
permissions);
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
if (ex.getMessage() != null) {
|
||||
sender.sendMessage(ex.getMessage());
|
||||
|
||||
Disguise testDisguise = DisguiseParser.parseTestDisguise(sender, getPermNode(), disguiseArgs, permissions);
|
||||
|
||||
// Time to use it!
|
||||
int disguisedEntitys = 0;
|
||||
int miscDisguises = 0;
|
||||
|
||||
Location center;
|
||||
|
||||
if (sender instanceof Player) {
|
||||
center = ((Player) sender).getLocation();
|
||||
} else {
|
||||
center = ((BlockCommandSender) sender).getBlock().getLocation().add(0.5, 0, 0.5);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
return true;
|
||||
}
|
||||
for (Entity entity : center.getWorld().getNearbyEntities(center, radius, radius, radius)) {
|
||||
if (entity == sender) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Time to use it!
|
||||
int disguisedEntitys = 0;
|
||||
int miscDisguises = 0;
|
||||
if (type != null ? entity.getType() != type : !entityClass.isAssignableFrom(entity.getClass())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Location center;
|
||||
|
||||
if (sender instanceof Player) {
|
||||
center = ((Player) sender).getLocation();
|
||||
} else {
|
||||
center = ((BlockCommandSender) sender).getBlock().getLocation().add(0.5, 0, 0.5);
|
||||
}
|
||||
|
||||
for (Entity entity : center.getWorld().getNearbyEntities(center, radius, radius, radius)) {
|
||||
if (entity == sender) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (type != null ? entity.getType() == type : entityClass.isAssignableFrom(entity.getClass())) {
|
||||
if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled() &&
|
||||
if (testDisguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled() &&
|
||||
entity instanceof LivingEntity) {
|
||||
miscDisguises++;
|
||||
continue;
|
||||
}
|
||||
|
||||
disguise = disguise.clone();
|
||||
Disguise disguise = DisguiseParser
|
||||
.parseDisguise(sender, entity, getPermNode(), disguiseArgs, permissions);
|
||||
|
||||
if (entity instanceof Player && DisguiseConfig.isNameOfPlayerShownAboveDisguise()) {
|
||||
if (disguise.getWatcher() instanceof LivingWatcher) {
|
||||
@@ -193,22 +185,29 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom
|
||||
}
|
||||
|
||||
disguise.startDisguise();
|
||||
DisguiseAPI.disguiseEntity(entity, disguise);
|
||||
|
||||
if (disguise.isDisguiseInUse()) {
|
||||
disguisedEntitys++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (disguisedEntitys > 0) {
|
||||
sender.sendMessage(LibsMsg.DISRADIUS.get(disguisedEntitys));
|
||||
} else {
|
||||
sender.sendMessage(LibsMsg.DISRADIUS_FAIL.get());
|
||||
}
|
||||
if (disguisedEntitys > 0) {
|
||||
sender.sendMessage(LibsMsg.DISRADIUS.get(disguisedEntitys));
|
||||
} else {
|
||||
sender.sendMessage(LibsMsg.DISRADIUS_FAIL.get());
|
||||
}
|
||||
|
||||
if (miscDisguises > 0) {
|
||||
sender.sendMessage(LibsMsg.DRADIUS_MISCDISG.get(miscDisguises));
|
||||
if (miscDisguises > 0) {
|
||||
sender.sendMessage(LibsMsg.DRADIUS_MISCDISG.get(miscDisguises));
|
||||
}
|
||||
}
|
||||
catch (DisguiseParseException ex) {
|
||||
if (ex.getMessage() != null) {
|
||||
sender.sendMessage(ex.getMessage());
|
||||
}
|
||||
}
|
||||
catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user