Update stats

This commit is contained in:
libraryaddict 2017-06-23 04:14:19 +12:00
parent 27230d5148
commit 06ce2d0e02
12 changed files with 1365 additions and 1024 deletions

@ -256,6 +256,7 @@ public class DisguiseAPI {
for (String observer : ((TargetedDisguise) disguise).getObservers()) { for (String observer : ((TargetedDisguise) disguise).getObservers()) {
((TargetedDisguise) disguise).removePlayer(observer); ((TargetedDisguise) disguise).removePlayer(observer);
} }
disguiseEntity(entity, disguise); disguiseEntity(entity, disguise);
} }

@ -4,6 +4,7 @@ import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map.Entry; import java.util.Map.Entry;
import me.libraryaddict.disguise.utilities.LibsPremium;
import me.libraryaddict.disguise.utilities.TranslateType; import me.libraryaddict.disguise.utilities.TranslateType;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -156,7 +157,8 @@ public class DisguiseConfig {
setNameAboveHeadAlwaysVisible(config.getBoolean("NameAboveHeadAlwaysVisible")); setNameAboveHeadAlwaysVisible(config.getBoolean("NameAboveHeadAlwaysVisible"));
setModifyBoundingBox(config.getBoolean("ModifyBoundingBox")); setModifyBoundingBox(config.getBoolean("ModifyBoundingBox"));
setMonstersIgnoreDisguises(config.getBoolean("MonstersIgnoreDisguises")); setMonstersIgnoreDisguises(config.getBoolean("MonstersIgnoreDisguises"));
setDisguiseBlownWhenAttacking(config.getBoolean("BlowDisguises", config.getBoolean("BlowDisguisesWhenAttacking"))); setDisguiseBlownWhenAttacking(
config.getBoolean("BlowDisguises", config.getBoolean("BlowDisguisesWhenAttacking")));
setDisguiseBlownWhenAttacked(config.getBoolean("BlowDisguisesWhenAttacked")); setDisguiseBlownWhenAttacked(config.getBoolean("BlowDisguisesWhenAttacked"));
setKeepDisguiseOnPlayerDeath(config.getBoolean("KeepDisguises.PlayerDeath")); setKeepDisguiseOnPlayerDeath(config.getBoolean("KeepDisguises.PlayerDeath"));
setMiscDisguisesForLivingEnabled(config.getBoolean("MiscDisguisesForLiving")); setMiscDisguisesForLivingEnabled(config.getBoolean("MiscDisguisesForLiving"));
@ -186,6 +188,10 @@ public class DisguiseConfig {
setSaveEntityDisguises(config.getBoolean("SaveDisguises.Entities")); setSaveEntityDisguises(config.getBoolean("SaveDisguises.Entities"));
setUseTranslations(config.getBoolean("Translations")); setUseTranslations(config.getBoolean("Translations"));
if (!LibsPremium.isPremium() && (isSavePlayerDisguises() || isSaveEntityDisguises())) {
System.out.println("[LibsDisguises] You must purchase the plugin to use saved disguises!");
}
try { try {
String option = config.getString("SelfDisguisesScoreboard", DisguisePushing.MODIFY_SCOREBOARD.name()) String option = config.getString("SelfDisguisesScoreboard", DisguisePushing.MODIFY_SCOREBOARD.name())
.toUpperCase(); .toUpperCase();

@ -8,10 +8,7 @@ import com.comphenix.protocol.wrappers.EnumWrappers.PlayerInfoAction;
import com.comphenix.protocol.wrappers.PlayerInfoData; import com.comphenix.protocol.wrappers.PlayerInfoData;
import com.comphenix.protocol.wrappers.WrappedChatComponent; import com.comphenix.protocol.wrappers.WrappedChatComponent;
import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.comphenix.protocol.wrappers.WrappedGameProfile;
import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.*;
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
import me.libraryaddict.disguise.disguisetypes.PlayerDisguise;
import me.libraryaddict.disguise.disguisetypes.TargetedDisguise;
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
import me.libraryaddict.disguise.utilities.DisguiseParser; import me.libraryaddict.disguise.utilities.DisguiseParser;
import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException;
@ -111,6 +108,8 @@ public class DisguiseListener implements Listener {
if (disguises.length <= 0) if (disguises.length <= 0)
continue; continue;
DisguiseUtilities.resetPluginTimer();
for (Disguise disguise : disguises) { for (Disguise disguise : disguises) {
disguise.setEntity(entity); disguise.setEntity(entity);
disguise.startDisguise(); disguise.startDisguise();
@ -248,6 +247,8 @@ public class DisguiseListener implements Listener {
if (disguises.length <= 0) if (disguises.length <= 0)
continue; continue;
DisguiseUtilities.resetPluginTimer();
for (Disguise disguise : disguises) { for (Disguise disguise : disguises) {
disguise.setEntity(entity); disguise.setEntity(entity);
disguise.startDisguise(); disguise.startDisguise();
@ -266,6 +267,8 @@ public class DisguiseListener implements Listener {
if (disguises.length <= 0) if (disguises.length <= 0)
continue; continue;
DisguiseUtilities.resetPluginTimer();
for (Disguise disguise : disguises) { for (Disguise disguise : disguises) {
disguise.setEntity(entity); disguise.setEntity(entity);
disguise.startDisguise(); disguise.startDisguise();
@ -297,6 +300,10 @@ public class DisguiseListener implements Listener {
if (DisguiseConfig.isSavePlayerDisguises()) { if (DisguiseConfig.isSavePlayerDisguises()) {
Disguise[] disguises = DisguiseUtilities.getSavedDisguises(p.getUniqueId(), true); Disguise[] disguises = DisguiseUtilities.getSavedDisguises(p.getUniqueId(), true);
if (disguises.length > 0) {
DisguiseUtilities.resetPluginTimer();
}
for (Disguise disguise : disguises) { for (Disguise disguise : disguises) {
disguise.setEntity(p); disguise.setEntity(p);
disguise.startDisguise(); disguise.startDisguise();
@ -311,26 +318,6 @@ public class DisguiseListener implements Listener {
if (!targetedDisguise.canSee(p)) if (!targetedDisguise.canSee(p))
continue; continue;
// Don't need this as we have a packet listener doing that for us
/*if (targetedDisguise.isPlayerHiddenInTab() && targetedDisguise.getEntity() instanceof Player) {
try {
PacketContainer addTab = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
Player player = (Player) targetedDisguise.getEntity();
addTab.getPlayerInfoAction().write(0, PlayerInfoAction.REMOVE_PLAYER);
addTab.getPlayerInfoDataLists()
.write(0,
Arrays.asList(new PlayerInfoData(ReflectionManager.getGameProfile(player), 0,
NativeGameMode.SURVIVAL,
WrappedChatComponent.fromText(player.getDisplayName()))));
ProtocolLibrary.getProtocolManager().sendServerPacket(p, addTab);
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
}*/
if (!(targetedDisguise instanceof PlayerDisguise)) if (!(targetedDisguise instanceof PlayerDisguise))
continue; continue;

@ -1,48 +1,24 @@
package me.libraryaddict.disguise; package me.libraryaddict.disguise;
import java.io.File; import com.comphenix.protocol.reflect.FieldAccessException;
import java.io.IOException; import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import java.lang.reflect.Field; import com.comphenix.protocol.wrappers.WrappedWatchableObject;
import java.util.ArrayList; import me.libraryaddict.disguise.commands.*;
import me.libraryaddict.disguise.disguisetypes.*;
import me.libraryaddict.disguise.disguisetypes.watchers.*; import me.libraryaddict.disguise.disguisetypes.watchers.*;
import me.libraryaddict.disguise.utilities.*; import me.libraryaddict.disguise.utilities.*;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Ageable; import org.bukkit.entity.*;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Damageable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Tameable;
import org.bukkit.entity.Zombie;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import com.comphenix.protocol.reflect.FieldAccessException; import java.io.File;
import com.comphenix.protocol.wrappers.WrappedDataWatcher; import java.lang.reflect.Field;
import com.comphenix.protocol.wrappers.WrappedWatchableObject; import java.util.ArrayList;
import java.util.HashMap;
import me.libraryaddict.disguise.commands.DisguiseCloneCommand; import java.util.HashSet;
import me.libraryaddict.disguise.commands.DisguiseCommand;
import me.libraryaddict.disguise.commands.DisguiseEntityCommand;
import me.libraryaddict.disguise.commands.DisguiseHelpCommand;
import me.libraryaddict.disguise.commands.DisguiseModifyCommand;
import me.libraryaddict.disguise.commands.DisguiseModifyEntityCommand;
import me.libraryaddict.disguise.commands.DisguiseModifyPlayerCommand;
import me.libraryaddict.disguise.commands.DisguiseModifyRadiusCommand;
import me.libraryaddict.disguise.commands.DisguisePlayerCommand;
import me.libraryaddict.disguise.commands.DisguiseRadiusCommand;
import me.libraryaddict.disguise.commands.DisguiseViewSelfCommand;
import me.libraryaddict.disguise.commands.LibsDisguisesCommand;
import me.libraryaddict.disguise.commands.UndisguiseCommand;
import me.libraryaddict.disguise.commands.UndisguiseEntityCommand;
import me.libraryaddict.disguise.commands.UndisguisePlayerCommand;
import me.libraryaddict.disguise.commands.UndisguiseRadiusCommand;
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
import me.libraryaddict.disguise.disguisetypes.FlagWatcher;
import me.libraryaddict.disguise.disguisetypes.MetaIndex;
public class LibsDisguises extends JavaPlugin { public class LibsDisguises extends JavaPlugin {
private static LibsDisguises instance; private static LibsDisguises instance;
@ -50,16 +26,6 @@ public class LibsDisguises extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
try {
Class.forName("com.comphenix.protocol.wrappers.Vector3F").getName();
}
catch (Exception ex) {
System.err.println("[LibsDisguises] Lib's Disguises failed to startup, outdated ProtocolLib!");
System.err.println(
"[LibsDisguises] You need to update ProtocolLib, please try this build http://ci.dmulloy2.net/job/ProtocolLib/lastStableBuild/artifact/modules/ProtocolLib/target/ProtocolLib.jar");
return;
}
instance = this; instance = this;
saveDefaultConfig(); saveDefaultConfig();
@ -100,13 +66,114 @@ public class LibsDisguises extends JavaPlugin {
registerCommand("disguisemodifyradius", registerCommand("disguisemodifyradius",
new DisguiseModifyRadiusCommand(getConfig().getInt("DisguiseRadiusMax"))); new DisguiseModifyRadiusCommand(getConfig().getInt("DisguiseRadiusMax")));
try { infectWithMetrics();
}
private void infectWithMetrics() {
Metrics metrics = new Metrics(this); Metrics metrics = new Metrics(this);
metrics.start();
final String premium = LibsPremium.isPremium() ?
getDescription().getVersion().contains("SNAPSHOT") ? "Paid Builds" : "Paid Plugin" : "Free Builds";
metrics.addCustomChart(new Metrics.SimplePie("premium") {
@Override
public String getValue() {
return premium;
} }
catch (IOException e) { });
// Don't print error
metrics.addCustomChart(new Metrics.SimplePie("translations") {
@Override
public String getValue() {
return LibsPremium.isPremium() && DisguiseConfig.isUseTranslations() ? "Yes" : "No";
} }
});
metrics.addCustomChart(new Metrics.SimplePie("custom_disguises") {
@Override
public String getValue() {
HashMap map = DisguiseConfig.getCustomDisguises();
return map.size() + (map.containsKey("libraryaddict") ? -1 : 0) > 0 ? "Yes" : "No";
}
});
metrics.addCustomChart(new Metrics.MultiLineChart("disguised_entities") {
@Override
public HashMap<String, Integer> getValues(HashMap<String, Integer> hashMap) {
for (HashSet<TargetedDisguise> list : DisguiseUtilities.getDisguises().values()) {
for (Disguise disg : list) {
if (disg.getEntity() == null || !disg.isDisguiseInUse())
continue;
String name = disg.getEntity().getType().name();
hashMap.put(name, hashMap.containsKey(name) ? hashMap.get(name) + 1 : 1);
}
}
return hashMap;
}
});
metrics.addCustomChart(new Metrics.MultiLineChart("disguises_used") {
@Override
public HashMap<String, Integer> getValues(HashMap<String, Integer> hashMap) {
for (HashSet<TargetedDisguise> list : DisguiseUtilities.getDisguises().values()) {
for (Disguise disg : list) {
if (disg.getEntity() == null || !disg.isDisguiseInUse())
continue;
String name = disg.getType().name();
hashMap.put(name, hashMap.containsKey(name) ? hashMap.get(name) + 1 : 1);
}
}
return hashMap;
}
});
metrics.addCustomChart(new Metrics.SimplePie("disguised_with_commands") {
@Override
public String getValue() {
return DisguiseUtilities.isCommandsUsed() ? "Yes" : "No";
}
});
metrics.addCustomChart(new Metrics.SimplePie("disguised_with_plugins") {
@Override
public String getValue() {
return DisguiseUtilities.isPluginsUsed() ? "Yes" : "No";
}
});
metrics.addCustomChart(new Metrics.SimplePie("using_disguises") {
@Override
public String getValue() {
return !DisguiseUtilities.getDisguises().isEmpty() ? "Yes" : "No";
}
});
metrics.addCustomChart(new Metrics.SimplePie("self_disguises") {
@Override
public String getValue() {
return DisguiseConfig.isViewDisguises() ? "Yes" : "No";
}
});
metrics.addCustomChart(new Metrics.SimplePie("spigot") {
@Override
public String getValue() {
try {
Class.forName("org.spigotmc.SpigotConfig");
return "Yes";
}
catch (Exception ex) {
return "No";
}
}
});
} }
@Override @Override

@ -71,8 +71,6 @@ public abstract class Disguise {
/** /**
* Seems I do this method so I can make cleaner constructors on disguises.. * Seems I do this method so I can make cleaner constructors on disguises..
*
* @param newType The disguise
*/ */
protected void createDisguise() { protected void createDisguise() {
if (getType().getEntityType() == null) { if (getType().getEntityType() == null) {
@ -234,7 +232,8 @@ public abstract class Disguise {
int newFacing = (((int) loc.getYaw() + 720 + 45) / 90) % 4; int newFacing = (((int) loc.getYaw() + 720 + 45) / 90) % 4;
if (loc.getBlockX() != blockX || loc.getBlockY() != blockY || loc.getBlockZ() != blockZ || newFacing != facing) { if (loc.getBlockX() != blockX || loc.getBlockY() != blockY || loc
.getBlockZ() != blockZ || newFacing != facing) {
blockX = loc.getBlockX(); blockX = loc.getBlockX();
blockY = loc.getBlockY(); blockY = loc.getBlockY();
blockZ = loc.getBlockZ(); blockZ = loc.getBlockZ();
@ -260,7 +259,8 @@ public abstract class Disguise {
// If the entity doesn't have velocity changes already - You know. I really can't wrap my head about the // If the entity doesn't have velocity changes already - You know. I really can't wrap my head about the
// if statement. // if statement.
// But it doesn't seem to do anything wrong.. // But it doesn't seem to do anything wrong..
if (vector.getY() != 0 && !(vector.getY() < 0 && alwaysSendVelocity && getEntity().isOnGround())) { if (vector.getY() != 0 && !(vector.getY() < 0 && alwaysSendVelocity && getEntity()
.isOnGround())) {
return; return;
} }
@ -268,7 +268,8 @@ public abstract class Disguise {
if (getType() != DisguiseType.EXPERIENCE_ORB || !getEntity().isOnGround()) { if (getType() != DisguiseType.EXPERIENCE_ORB || !getEntity().isOnGround()) {
PacketContainer lookPacket = null; PacketContainer lookPacket = null;
if (getType() == DisguiseType.WITHER_SKULL && DisguiseConfig.isWitherSkullPacketsEnabled()) { if (getType() == DisguiseType.WITHER_SKULL && DisguiseConfig
.isWitherSkullPacketsEnabled()) {
lookPacket = new PacketContainer(Server.ENTITY_LOOK); lookPacket = new PacketContainer(Server.ENTITY_LOOK);
StructureModifier<Object> mods = lookPacket.getModifier(); StructureModifier<Object> mods = lookPacket.getModifier();
@ -277,8 +278,8 @@ public abstract class Disguise {
mods.write(4, PacketsManager.getYaw(getType(), getEntity().getType(), mods.write(4, PacketsManager.getYaw(getType(), getEntity().getType(),
(byte) Math.floor(loc.getYaw() * 256.0F / 360.0F))); (byte) Math.floor(loc.getYaw() * 256.0F / 360.0F)));
mods.write(5, mods.write(5, PacketsManager
PacketsManager.getPitch(getType(), DisguiseType.getType(getEntity().getType()), .getPitch(getType(), DisguiseType.getType(getEntity().getType()),
(byte) Math.floor(loc.getPitch() * 256.0F / 360.0F))); (byte) Math.floor(loc.getPitch() * 256.0F / 360.0F)));
if (isSelfDisguiseVisible() && getEntity() instanceof Player) { if (isSelfDisguiseVisible() && getEntity() instanceof Player) {
@ -287,8 +288,8 @@ public abstract class Disguise {
selfLookPacket.getIntegers().write(0, DisguiseAPI.getSelfDisguiseId()); selfLookPacket.getIntegers().write(0, DisguiseAPI.getSelfDisguiseId());
try { try {
ProtocolLibrary.getProtocolManager().sendServerPacket((Player) getEntity(), ProtocolLibrary.getProtocolManager()
selfLookPacket, false); .sendServerPacket((Player) getEntity(), selfLookPacket, false);
} }
catch (InvocationTargetException e) { catch (InvocationTargetException e) {
e.printStackTrace(); e.printStackTrace();
@ -319,12 +320,12 @@ public abstract class Disguise {
(int) (8000D * (vectorY * ReflectionManager.getPing(player)) * 0.069D)); (int) (8000D * (vectorY * ReflectionManager.getPing(player)) * 0.069D));
if (lookPacket != null && player != getEntity()) { if (lookPacket != null && player != getEntity()) {
ProtocolLibrary.getProtocolManager().sendServerPacket(player, lookPacket, ProtocolLibrary.getProtocolManager()
false); .sendServerPacket(player, lookPacket, false);
} }
ProtocolLibrary.getProtocolManager().sendServerPacket(player, ProtocolLibrary.getProtocolManager()
velocityPacket.shallowClone(), false); .sendServerPacket(player, velocityPacket.shallowClone(), false);
} }
} }
catch (Exception e) { catch (Exception e) {
@ -348,8 +349,8 @@ public abstract class Disguise {
selfPacket.getModifier().write(0, DisguiseAPI.getSelfDisguiseId()); selfPacket.getModifier().write(0, DisguiseAPI.getSelfDisguiseId());
try { try {
ProtocolLibrary.getProtocolManager().sendServerPacket((Player) getEntity(), ProtocolLibrary.getProtocolManager()
selfPacket, false); .sendServerPacket((Player) getEntity(), selfPacket, false);
} }
catch (InvocationTargetException e) { catch (InvocationTargetException e) {
e.printStackTrace(); e.printStackTrace();
@ -683,8 +684,8 @@ public abstract class Disguise {
*/ */
private void setupWatcher() { private void setupWatcher() {
ArrayList<MetaIndex> disguiseFlags = MetaIndex.getFlags(getType().getWatcherClass()); ArrayList<MetaIndex> disguiseFlags = MetaIndex.getFlags(getType().getWatcherClass());
ArrayList<MetaIndex> entityFlags = MetaIndex.getFlags( ArrayList<MetaIndex> entityFlags = MetaIndex
DisguiseType.getType(getEntity().getType()).getWatcherClass()); .getFlags(DisguiseType.getType(getEntity().getType()).getWatcherClass());
for (MetaIndex flag : entityFlags) { for (MetaIndex flag : entityFlags) {
if (disguiseFlags.contains(flag)) if (disguiseFlags.contains(flag))
@ -736,7 +737,8 @@ public abstract class Disguise {
public Disguise setWatcher(FlagWatcher newWatcher) { public Disguise setWatcher(FlagWatcher newWatcher) {
if (!getType().getWatcherClass().isInstance(newWatcher)) { if (!getType().getWatcherClass().isInstance(newWatcher)) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
newWatcher.getClass().getSimpleName() + " is not a instance of " + getType().getWatcherClass().getSimpleName() + " for DisguiseType " + getType().name()); newWatcher.getClass().getSimpleName() + " is not a instance of " + getType().getWatcherClass()
.getSimpleName() + " for DisguiseType " + getType().name());
} }
watcher = newWatcher; watcher = newWatcher;
@ -749,15 +751,21 @@ public abstract class Disguise {
} }
public boolean startDisguise() { public boolean startDisguise() {
if (!isDisguiseInUse()) { if (isDisguiseInUse()) {
return false;
}
if (getEntity() == null) { if (getEntity() == null) {
throw new RuntimeException("No entity is assigned to this disguise!"); throw new RuntimeException("No entity is assigned to this disguise!");
} }
DisguiseUtilities.setPluginsUsed();
// Fire a disguise event // Fire a disguise event
DisguiseEvent event = new DisguiseEvent(entity, this); DisguiseEvent event = new DisguiseEvent(entity, this);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().
callEvent(event);
// If they cancelled this disguise event. No idea why. // If they cancelled this disguise event. No idea why.
// Just return. // Just return.
@ -771,7 +779,9 @@ public abstract class Disguise {
createRunnable(); createRunnable();
} }
task = Bukkit.getScheduler().runTaskTimer(LibsDisguises.getInstance(), velocityRunnable, 1, 1); task = Bukkit.getScheduler().
runTaskTimer(LibsDisguises.getInstance(), velocityRunnable, 1, 1);
if (this instanceof PlayerDisguise) { if (this instanceof PlayerDisguise) {
PlayerDisguise disguise = (PlayerDisguise) this; PlayerDisguise disguise = (PlayerDisguise) this;
@ -808,7 +818,8 @@ public abstract class Disguise {
DisguiseUtilities.refreshTrackers((TargetedDisguise) this); DisguiseUtilities.refreshTrackers((TargetedDisguise) this);
// If he is a player, then self disguise himself // If he is a player, then self disguise himself
Bukkit.getScheduler().scheduleSyncDelayedTask(LibsDisguises.getInstance(), new Runnable() { Bukkit.getScheduler().
scheduleSyncDelayedTask(LibsDisguises.getInstance(), new Runnable() {
@Override @Override
public void run() { public void run() {
DisguiseUtilities.setupFakeDisguise(Disguise.this); DisguiseUtilities.setupFakeDisguise(Disguise.this);
@ -838,9 +849,6 @@ public abstract class Disguise {
return true; return true;
} }
return false;
}
public boolean stopDisguise() { public boolean stopDisguise() {
return removeDisguise(); return removeDisguise();
} }

@ -453,6 +453,10 @@ public class DisguiseParser {
*/ */
public static Disguise parseDisguise(CommandSender sender, String permNode, String[] args, public static Disguise parseDisguise(CommandSender sender, String permNode, String[] args,
HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> permissionMap) throws DisguiseParseException, IllegalAccessException, InvocationTargetException { HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> permissionMap) throws DisguiseParseException, IllegalAccessException, InvocationTargetException {
if (sender instanceof Player) {
DisguiseUtilities.setCommandsUsed();
}
if (permissionMap.isEmpty()) { if (permissionMap.isEmpty()) {
throw new DisguiseParseException(LibsMsg.NO_PERM); throw new DisguiseParseException(LibsMsg.NO_PERM);
} }

@ -74,6 +74,33 @@ public class DisguiseUtilities {
"plugins/LibsDisguises/SavedDisguises"); "plugins/LibsDisguises/SavedDisguises");
private static Gson gson; private static Gson gson;
private static BackwardMethods methods; private static BackwardMethods methods;
private static boolean pluginsUsed, commandsUsed;
private static long libsDisguisesCalled;
public static void setPluginsUsed() {
if (libsDisguisesCalled > System.currentTimeMillis()) {
return;
}
pluginsUsed = true;
}
public static void resetPluginTimer() {
libsDisguisesCalled = System.currentTimeMillis() + 100;
}
public static void setCommandsUsed() {
resetPluginTimer();
commandsUsed = true;
}
public static boolean isPluginsUsed() {
return pluginsUsed;
}
public static boolean isCommandsUsed() {
return commandsUsed;
}
public static void saveDisguises() { public static void saveDisguises() {
for (HashSet<TargetedDisguise> list : disguisesInUse.values()) { for (HashSet<TargetedDisguise> list : disguisesInUse.values()) {

File diff suppressed because it is too large Load Diff

@ -33,6 +33,10 @@ public enum TranslateType {
type.reload(); type.reload();
} }
if (!LibsPremium.isPremium() && DisguiseConfig.isUseTranslations()) {
System.out.println("[LibsDisguises] You must purchase the plugin to use translations!");
}
TranslateFiller.fillConfigs(); TranslateFiller.fillConfigs();
} }

@ -15,14 +15,18 @@ public class BackwardsSupport {
public static BackwardMethods getMethods() { public static BackwardMethods getMethods() {
try { try {
String version = ReflectionManager.getBukkitVersion(); String version = ReflectionManager.getBukkitVersion();
Class<? extends BackwardMethods> methods = BackwardMethods.class;
if (LibsPremium.isPremium()) {
if (version.equals("v1_11_R1")) { if (version.equals("v1_11_R1")) {
return setupMetadata(Version_1_11.class); methods = Version_1_11.class;
}
} }
return setupMetadata(BackwardMethods.class); if (!LibsPremium.isPremium() && methods != BackwardMethods.class) {
System.out.println("[LibsDisguises] You must purchase the plugin to use backwards compatibility!");
methods = BackwardMethods.class;
}
return setupMetadata(methods);
} }
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); e.printStackTrace();