diff --git a/pom.xml b/pom.xml
index 7372ef5..6295a39 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
ru.simsonic
rscPermissions
- 0.10.9b-SNAPSHOT
+ 0.10.10b-SNAPSHOT
jar
rscPermissions
diff --git a/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java b/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
index 59a7976..6cacd0d 100644
--- a/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
+++ b/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
@@ -88,11 +88,11 @@ public final class BridgeForBukkitAPI
// Register Chat
rscp.getServer().getServicesManager().register(
net.milkbowl.vault.chat.Chat.class, vaultChat,
- rscp, ServicePriority.Highest);
+ rscp, ServicePriority.Normal);
// Register Permission
rscp.getServer().getServicesManager().register(
net.milkbowl.vault.permission.Permission.class, vaultPermission,
- rscp, ServicePriority.Highest);
+ rscp, ServicePriority.Normal);
sendConsoleMessage(Phrases.INTEGRATION_V_Y.toPlayer());
} else
sendConsoleMessage(Phrases.INTEGRATION_V_N.toPlayer());
@@ -121,6 +121,14 @@ public final class BridgeForBukkitAPI
rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(sb.toString()));
}
}
+ private final String[] runtimes = new String[]
+ {
+ "java.",
+ "sun.reflect.",
+ "net.minecraft.server.",
+ "org.bukkit.craftbukkit.",
+ "org.bukkit.plugin",
+ };
public void printDebugStackTrace()
{
if(rscp.permissionManager.isConsoleDebugging())
@@ -128,16 +136,40 @@ public final class BridgeForBukkitAPI
final StringBuilder sb = new StringBuilder(Settings.DEBUG_PREFIX)
.append("An API method was invoked from the path:")
.append(System.lineSeparator());
- for(StackTraceElement element : Thread.currentThread().getStackTrace())
+ final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+ int runtimeElements = stackTrace.length;
+ for(int steId = 0; steId < stackTrace.length; steId += 1)
+ {
+ final String className = stackTrace[stackTrace.length - 1 - steId].getClassName();
+ boolean isKnownPackage = false;
+ for(String prepackage : runtimes)
+ if(className.startsWith(prepackage))
+ {
+ isKnownPackage = true;
+ break;
+ }
+ if(isKnownPackage == false)
+ {
+ runtimeElements = steId;
+ break;
+ }
+ }
+ for(int steId = 0; steId < stackTrace.length; steId += 1)
{
- final String className = element.getClassName();
- if(!className.equals(BridgeForBukkitAPI.class.getName())
- && !className.equals(Thread.class.getName())
- )
- sb.append(Settings.DEBUG_PREFIX)
- .append(className.startsWith(BukkitPluginMain.class.getPackage().getName()) ? "{_LG}" : "{_LS}")
- .append(element.toString())
- .append(System.lineSeparator());
+ final StackTraceElement element = stackTrace[steId];
+ final String className = element.getClassName();
+ final boolean isDebug = className.equals(this.getClass().getName());
+ final boolean isThread = className.equals(Thread.class.getName());
+ if(!isDebug && !isThread)
+ {
+ sb.append(Settings.DEBUG_PREFIX);
+ final boolean isLocal = steId < stackTrace.length - runtimeElements;
+ if(className.startsWith(BukkitPluginMain.class.getPackage().getName()))
+ sb.append("{_LG}");
+ else
+ sb.append(isLocal ? "{_WH}" : "{_LS}");
+ sb.append(element.toString()).append(System.lineSeparator());
+ }
}
rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(sb.toString()));
}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java
index 4733f77..8899633 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java
@@ -10,13 +10,11 @@ import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public final class VaultChat extends VaultDeprecatedChat
{
- private final BridgeForBukkitAPI bridge;
- private final BukkitPluginMain rscp;
- private final VaultPermission permissions;
+ private final BukkitPluginMain rscp;
+ private final VaultPermission permissions;
public VaultChat(BridgeForBukkitAPI bridge, VaultPermission permissions)
{
- super(permissions);
- this.bridge = bridge;
+ super(bridge, permissions);
this.rscp = (BukkitPluginMain)bridge.getPlugin();
this.permissions = permissions;
}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java
index 4fce010..325d587 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultDeprecatedChat.java
@@ -4,219 +4,320 @@ import net.milkbowl.vault.permission.Permission;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
+import ru.simsonic.rscPermissions.BridgeForBukkitAPI;
public abstract class VaultDeprecatedChat extends net.milkbowl.vault.chat.Chat
{
- public VaultDeprecatedChat(Permission permissions)
+ protected final BridgeForBukkitAPI bridge;
+ public VaultDeprecatedChat(BridgeForBukkitAPI bridge, Permission permissions)
{
super(permissions);
+ this.bridge = bridge;
}
@Override
@Deprecated
public int getPlayerInfoInteger(String world, String player, String node, int defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
@Deprecated
public void setPlayerInfoInteger(String world, String player, String node, int value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public int getGroupInfoInteger(String world, String group, String node, int defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoInteger(String world, String group, String node, int value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
@Deprecated
public double getPlayerInfoDouble(String world, String player, String node, double defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
@Deprecated
public void setPlayerInfoDouble(String world, String player, String node, double value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public double getGroupInfoDouble(String world, String group, String node, double defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoDouble(String world, String group, String node, double value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
@Deprecated
public boolean getPlayerInfoBoolean(String world, String player, String node, boolean defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
@Deprecated
public void setPlayerInfoBoolean(String world, String player, String node, boolean value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean getGroupInfoBoolean(String world, String group, String node, boolean defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoBoolean(String world, String group, String node, boolean value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
@Deprecated
public String getPlayerInfoString(String world, String player, String node, String defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
@Deprecated
public void setPlayerInfoString(String world, String player, String node, String value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public String getGroupInfoString(String world, String group, String node, String defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoString(String world, String group, String node, String value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public int getPlayerInfoInteger(String world, OfflinePlayer player, String node, int defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public int getPlayerInfoInteger(Player player, String node, int defaultValue)
{
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|)");
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoInteger(String world, OfflinePlayer player, String node, int value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoInteger(Player player, String node, int value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public int getGroupInfoInteger(World world, String group, String node, int defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoInteger(World world, String group, String node, int value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public double getPlayerInfoDouble(String world, OfflinePlayer player, String node, double defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public double getPlayerInfoDouble(Player player, String node, double defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|)");
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoDouble(String world, OfflinePlayer player, String node, double value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoDouble(Player player, String node, double value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public double getGroupInfoDouble(World world, String group, String node, double defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoDouble(World world, String group, String node, double value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean getPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean getPlayerInfoBoolean(Player player, String node, boolean defaultValue)
{
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|)");
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoBoolean(String world, OfflinePlayer player, String node, boolean value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoBoolean(Player player, String node, boolean value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public boolean getGroupInfoBoolean(World world, String group, String node, boolean defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoBoolean(World world, String group, String node, boolean value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public String getPlayerInfoString(String world, OfflinePlayer player, String node, String defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public String getPlayerInfoString(Player player, String node, String defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_WH}" + player + "{_LS} ({_LB}" + defaultValue + "{_LS|)");
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoString(String world, OfflinePlayer player, String node, String value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setPlayerInfoString(Player player, String node, String value)
{
+ bridge.printDebugString("Set " + node + " for " + player + " = " + value);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public String getGroupInfoString(World world, String group, String node, String defaultValue)
{
- throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
+ bridge.printDebugString("{_LS}Get {_LG}" + node + "{_LS} of {_YL}" + group + "{_LS} ({_LB}" + defaultValue + "{_LS|) @ " + world);
+ bridge.printDebugStackTrace();
+ return defaultValue;
+ // throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
@Override
public void setGroupInfoString(World world, String group, String node, String value)
{
+ bridge.printDebugString("Set " + node + " for " + group + " = " + value + " @ " + world);
+ bridge.printDebugStackTrace();
throw new UnsupportedOperationException("This method is unsupported by rscPermissions.");
}
}