Read for information...
Now using ASM manipulation to remove invalid methods on load Fixed imports Fixed Chat Components being used in 1.12 Fixed tab complete showing args for disguise options you can't use Disguise option permissions now demand a parameter to be the method name Falling block disguises are now only usable with blocks LibsDisguises command now tab completes the new options Libs Disguises command lets you create a vanilla compatible item string If a vehicle is disguised as a vehicle, don't give no gravity Fixed horse disguise using almost random values for its flagwatcher settings Renamed horse disguise setMouthOpen to setEating Slightly better string for premium info jar location Skip attributes packets if using older ProtocolLib jar Don't cancel entity death if entity is dead Improved disguise permissions checking Fixed time parameter not being attributed properly
This commit is contained in:
@@ -6,11 +6,11 @@ import me.libraryaddict.disguise.disguisetypes.PlayerDisguise;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguiseParser;
|
||||
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
import net.md_5.bungee.api.chat.HoverEvent;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -79,10 +79,11 @@ public class CopyDisguiseCommand implements CommandExecutor {
|
||||
return true;
|
||||
}*/
|
||||
|
||||
sendMessage(sender, LibsMsg.CLICK_TO_COPY, disguiseString, false);
|
||||
sendMessage(sender, LibsMsg.CLICK_TO_COPY, LibsMsg.COPY_DISGUISE_NO_COPY, disguiseString, false);
|
||||
|
||||
if (disguise instanceof PlayerDisguise) {
|
||||
sendMessage(sender, LibsMsg.CLICK_TO_COPY_WITH_SKIN, DisguiseParser.parseToString(disguise), true);
|
||||
sendMessage(sender, LibsMsg.CLICK_TO_COPY_WITH_SKIN, LibsMsg.CLICK_TO_COPY_WITH_SKIN_NO_COPY,
|
||||
DisguiseParser.parseToString(disguise), true);
|
||||
}
|
||||
|
||||
DisguiseUtilities.setCopyDisguiseCommandUsed();
|
||||
@@ -90,7 +91,12 @@ public class CopyDisguiseCommand implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void sendMessage(CommandSender sender, LibsMsg msg, String string, boolean forceAbbrev) {
|
||||
private void sendMessage(CommandSender sender, LibsMsg msg, LibsMsg oldVer, String string, boolean forceAbbrev) {
|
||||
if (!NmsVersion.v1_13.isSupported()) {
|
||||
sender.sendMessage(oldVer.get(string));
|
||||
return;
|
||||
}
|
||||
|
||||
ComponentBuilder builder = new ComponentBuilder("").appendLegacy(msg.get()).append(" ");
|
||||
|
||||
if (string.length() > 256 || forceAbbrev) {
|
||||
|
@@ -1,13 +1,12 @@
|
||||
package me.libraryaddict.disguise.commands;
|
||||
|
||||
import me.libraryaddict.disguise.LibsDisguises;
|
||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguiseParser;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePerm;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePermissions;
|
||||
import me.libraryaddict.disguise.utilities.parser.params.ParamInfoManager;
|
||||
import me.libraryaddict.disguise.utilities.parser.params.ParamInfo;
|
||||
import me.libraryaddict.disguise.utilities.params.ParamInfo;
|
||||
import me.libraryaddict.disguise.utilities.params.ParamInfoManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@@ -159,6 +158,10 @@ public abstract class DisguiseBaseCommand implements CommandExecutor {
|
||||
if (addMethods) {
|
||||
// If this is a method, add. Else if it can be a param of the previous argument, add.
|
||||
for (Method method : ParamInfoManager.getDisguiseWatcherMethods(disguisePerm.getWatcherClass())) {
|
||||
if (!perms.isAllowedDisguise(disguisePerm, Collections.singletonList(method.getName()))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
tabs.add(method.getName());
|
||||
}
|
||||
}
|
||||
|
@@ -1,12 +1,12 @@
|
||||
package me.libraryaddict.disguise.commands;
|
||||
|
||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||
import me.libraryaddict.disguise.utilities.translations.TranslateType;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguiseParser;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePerm;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePermissions;
|
||||
import me.libraryaddict.disguise.utilities.parser.params.ParamInfoManager;
|
||||
import me.libraryaddict.disguise.utilities.parser.params.ParamInfo;
|
||||
import me.libraryaddict.disguise.utilities.params.ParamInfo;
|
||||
import me.libraryaddict.disguise.utilities.params.ParamInfoManager;
|
||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||
import me.libraryaddict.disguise.utilities.translations.TranslateType;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -85,8 +85,7 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl
|
||||
}
|
||||
}
|
||||
|
||||
Class c = method.getParameterTypes()[0];
|
||||
ParamInfo info = ParamInfoManager.getParamInfo(c);
|
||||
ParamInfo info = ParamInfoManager.getParamInfo(method);
|
||||
|
||||
int value = ParamInfoManager.getValue(method);
|
||||
ChatColor methodColor = ChatColor.YELLOW;
|
||||
|
@@ -62,7 +62,7 @@ public class DisguiseModifyEntityCommand extends DisguiseBaseCommand implements
|
||||
List<String> tabs = new ArrayList<>();
|
||||
|
||||
for (DisguisePerm perm : perms.getAllowed()) {
|
||||
tabs.addAll(getTabDisguiseSubOptions(sender, perms, perm, args, 0, getCurrentArg(args)));
|
||||
tabs.addAll(getTabDisguiseOptions(sender, perms, perm, args, 0, getCurrentArg(origArgs)));
|
||||
}
|
||||
|
||||
return filterTabs(tabs, origArgs);
|
||||
|
@@ -4,8 +4,11 @@ import me.libraryaddict.disguise.DisguiseAPI;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
import me.libraryaddict.disguise.utilities.parser.*;
|
||||
import me.libraryaddict.disguise.utilities.parser.params.ParamInfoManager;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguiseParseException;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguiseParser;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePerm;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePermissions;
|
||||
import me.libraryaddict.disguise.utilities.params.ParamInfoManager;
|
||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||
import me.libraryaddict.disguise.utilities.translations.TranslateType;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
@@ -6,6 +6,7 @@ import me.libraryaddict.disguise.LibsDisguises;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||
import me.libraryaddict.disguise.utilities.SkinUtils;
|
||||
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
@@ -111,32 +112,36 @@ public class GrabSkinCommand implements CommandExecutor {
|
||||
int start = 0;
|
||||
int msg = 1;
|
||||
|
||||
ComponentBuilder builder = new ComponentBuilder("").appendLegacy(LibsMsg.CLICK_TO_COPY.get());
|
||||
if (NmsVersion.v1_13.isSupported()) {
|
||||
ComponentBuilder builder = new ComponentBuilder("").appendLegacy(LibsMsg.CLICK_TO_COPY.get());
|
||||
|
||||
while (start < string.length()) {
|
||||
int end = Math.min(256, string.length() - start);
|
||||
while (start < string.length()) {
|
||||
int end = Math.min(256, string.length() - start);
|
||||
|
||||
String sub = string.substring(start, start + end);
|
||||
String sub = string.substring(start, start + end);
|
||||
|
||||
builder.append(" ");
|
||||
builder.append(" ");
|
||||
|
||||
if (string.length() <= 256) {
|
||||
builder.appendLegacy(LibsMsg.CLICK_TO_COPY_DATA.get());
|
||||
} else {
|
||||
builder.reset();
|
||||
builder.appendLegacy(LibsMsg.CLICK_COPY.get(msg));
|
||||
if (string.length() <= 256) {
|
||||
builder.appendLegacy(LibsMsg.CLICK_TO_COPY_DATA.get());
|
||||
} else {
|
||||
builder.reset();
|
||||
builder.appendLegacy(LibsMsg.CLICK_COPY.get(msg));
|
||||
}
|
||||
|
||||
start += end;
|
||||
|
||||
builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, sub));
|
||||
builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||
new ComponentBuilder(LibsMsg.CLICK_TO_COPY_HOVER.get() + " " + msg).create()));
|
||||
msg += 1;
|
||||
}
|
||||
|
||||
start += end;
|
||||
|
||||
builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, sub));
|
||||
builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||
new ComponentBuilder(LibsMsg.CLICK_TO_COPY_HOVER.get() + " " + msg).create()));
|
||||
msg += 1;
|
||||
sender.spigot().sendMessage(builder.create());
|
||||
} else {
|
||||
sender.sendMessage(LibsMsg.SKIN_DATA.get(string));
|
||||
}
|
||||
|
||||
sender.spigot().sendMessage(builder.create());
|
||||
|
||||
DisguiseUtilities.setGrabSkinCommandUsed();
|
||||
}
|
||||
};
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package me.libraryaddict.disguise.commands;
|
||||
|
||||
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
||||
import me.libraryaddict.disguise.DisguiseAPI;
|
||||
import me.libraryaddict.disguise.DisguiseConfig;
|
||||
import me.libraryaddict.disguise.LibsDisguises;
|
||||
@@ -9,11 +10,14 @@ import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePerm;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePermissions;
|
||||
import me.libraryaddict.disguise.utilities.parser.params.ParamInfoManager;
|
||||
import me.libraryaddict.disguise.utilities.params.ParamInfoManager;
|
||||
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
import net.md_5.bungee.api.chat.HoverEvent;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -27,6 +31,7 @@ import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
@@ -206,10 +211,45 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
||||
String gson = DisguiseUtilities.getGson().toJson(item);
|
||||
String simple = ParamInfoManager.toString(item);
|
||||
|
||||
sendMessage(sender, LibsMsg.ITEM_SERIALIZED, gson);
|
||||
// item{nbt} amount
|
||||
// item amount data {nbt}
|
||||
|
||||
if (!gson.equals(simple)) {
|
||||
sendMessage(sender, LibsMsg.ITEM_SIMPLE_STRING, simple);
|
||||
String itemName = ReflectionManager.getItemName(item.getType());
|
||||
ArrayList<String> mcArray = new ArrayList<>();
|
||||
|
||||
if (NmsVersion.v1_13.isSupported() && item.hasItemMeta()) {
|
||||
mcArray.add(itemName + DisguiseUtilities.serialize(NbtFactory.fromItemTag(item)));
|
||||
} else {
|
||||
mcArray.add(itemName);
|
||||
}
|
||||
|
||||
if (item.getAmount() != 1) {
|
||||
mcArray.add(String.valueOf(item.getAmount()));
|
||||
}
|
||||
|
||||
if (!NmsVersion.v1_13.isSupported()) {
|
||||
if (item.getDurability() != 0) {
|
||||
mcArray.add(String.valueOf(item.getDurability()));
|
||||
}
|
||||
|
||||
if (item.hasItemMeta()) {
|
||||
mcArray.add(DisguiseUtilities.serialize(NbtFactory.fromItemTag(item)));
|
||||
}
|
||||
}
|
||||
|
||||
String ldItem = StringUtils.join(mcArray, "-");
|
||||
String mcItem = StringUtils.join(mcArray, " ");
|
||||
|
||||
sendMessage(sender, LibsMsg.ITEM_SERIALIZED, LibsMsg.ITEM_SERIALIZED_NO_COPY, gson);
|
||||
|
||||
if (!gson.equals(simple) && !ldItem.equals(simple) && !mcItem.equals(simple)) {
|
||||
sendMessage(sender, LibsMsg.ITEM_SIMPLE_STRING, LibsMsg.ITEM_SIMPLE_STRING_NO_COPY, simple);
|
||||
}
|
||||
|
||||
sendMessage(sender, LibsMsg.ITEM_SERIALIZED_MC, LibsMsg.ITEM_SERIALIZED_MC_NO_COPY, mcItem);
|
||||
|
||||
if (mcArray.size() > 1) {
|
||||
sendMessage(sender, LibsMsg.ITEM_SERIALIZED_MC, LibsMsg.ITEM_SERIALIZED_MC_NO_COPY, ldItem);
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("metainfo") || args[0].equalsIgnoreCase("meta")) {
|
||||
if (!sender.hasPermission("libsdisguises.metainfo")) {
|
||||
@@ -235,25 +275,30 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
||||
|
||||
names.sort(String::compareToIgnoreCase);
|
||||
|
||||
ComponentBuilder builder = new ComponentBuilder("").appendLegacy(LibsMsg.META_VALUES.get());
|
||||
if (NmsVersion.v1_13.isSupported()) {
|
||||
ComponentBuilder builder = new ComponentBuilder("").appendLegacy(LibsMsg.META_VALUES.get());
|
||||
|
||||
Iterator<String> itel = names.iterator();
|
||||
Iterator<String> itel = names.iterator();
|
||||
|
||||
while (itel.hasNext()) {
|
||||
String name = itel.next();
|
||||
while (itel.hasNext()) {
|
||||
String name = itel.next();
|
||||
|
||||
builder.appendLegacy(name);
|
||||
builder.event(
|
||||
new ClickEvent(ClickEvent.Action.RUN_COMMAND, cmd.getName() + " metainfo " + name));
|
||||
builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||
new ComponentBuilder("").appendLegacy(LibsMsg.META_CLICK_SHOW.get(name)).create()));
|
||||
builder.appendLegacy(name);
|
||||
builder.event(
|
||||
new ClickEvent(ClickEvent.Action.RUN_COMMAND, cmd.getName() + " metainfo " + name));
|
||||
builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||
new ComponentBuilder("").appendLegacy(LibsMsg.META_CLICK_SHOW.get(name)).create()));
|
||||
|
||||
if (itel.hasNext()) {
|
||||
builder.appendLegacy(LibsMsg.META_VALUE_SEPERATOR.get());
|
||||
if (itel.hasNext()) {
|
||||
builder.appendLegacy(LibsMsg.META_VALUE_SEPERATOR.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sender.spigot().sendMessage(builder.create());
|
||||
sender.spigot().sendMessage(builder.create());
|
||||
} else {
|
||||
sender.sendMessage(
|
||||
LibsMsg.META_VALUES_NO_CLICK.get(StringUtils.join(names, LibsMsg.META_VALUE_SEPERATOR.get())));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(LibsMsg.LIBS_COMMAND_WRONG_ARG.get());
|
||||
@@ -262,7 +307,12 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void sendMessage(CommandSender sender, LibsMsg prefix, String string) {
|
||||
private void sendMessage(CommandSender sender, LibsMsg prefix, LibsMsg oldVer, String string) {
|
||||
if (!NmsVersion.v1_13.isSupported()) {
|
||||
sender.sendMessage(oldVer.get(string));
|
||||
return;
|
||||
}
|
||||
|
||||
int start = 0;
|
||||
int msg = 1;
|
||||
|
||||
@@ -286,7 +336,8 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
||||
|
||||
builder.event(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, sub));
|
||||
builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||
new ComponentBuilder(LibsMsg.CLICK_TO_COPY_HOVER.get() + " " + msg).create()));
|
||||
new ComponentBuilder(LibsMsg.CLICK_TO_COPY_HOVER.get() + (string.length() <= 256 ? "" : " " + msg))
|
||||
.create()));
|
||||
msg += 1;
|
||||
}
|
||||
|
||||
@@ -299,7 +350,7 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
||||
String[] args = getArgs(origArgs);
|
||||
|
||||
if (args.length == 0)
|
||||
tabs.add("Reload");
|
||||
tabs.addAll(Arrays.asList("reload", "scoreboard", "permtest", "json", "metainfo"));
|
||||
|
||||
return filterTabs(tabs, origArgs);
|
||||
}
|
||||
|
Reference in New Issue
Block a user