Browse Source

Fixed wrong call to recalculate perms from RegionUpdateObserver.

+ Debug info added.
master
Stanislav Usenkov 10 years ago
parent
commit
7ef9b24b5a
  1. 29
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  2. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/RegionUpdateObserver.java
  3. 4
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  4. 15
      src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java

29
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java

@ -10,10 +10,12 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachment;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.ResolutionParams; import ru.simsonic.rscPermissions.Engine.ResolutionParams;
import ru.simsonic.rscPermissions.Engine.ResolutionResult; import ru.simsonic.rscPermissions.Engine.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.RestartableThread; import ru.simsonic.rscUtilityLibrary.RestartableThread;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public class BukkitPermissionManager extends RestartableThread public class BukkitPermissionManager extends RestartableThread
{ {
@ -73,7 +75,10 @@ public class BukkitPermissionManager extends RestartableThread
suffixes.remove(player); suffixes.remove(player);
persistentPermissions.remove(player); persistentPermissions.remove(player);
transientPermissions.remove(player); transientPermissions.remove(player);
debug.remove(player); synchronized(debug)
{
debug.remove(player);
}
} }
@Override @Override
public void run() public void run()
@ -115,6 +120,12 @@ public class BukkitPermissionManager extends RestartableThread
final Boolean asterisk = attachment.getPermissions().get("*"); final Boolean asterisk = attachment.getPermissions().get("*");
if(rscp.settings.isAsteriskOP()) if(rscp.settings.isAsteriskOP())
player.setOp((asterisk != null) ? asterisk : false); player.setOp((asterisk != null) ? asterisk : false);
// Debugging information
if(isDebugging(player))
player.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix
+ "[DEBUG] {_DS}Inheritances list: {_LS}" + result.groups.toString()
+ "{_DS}; you have total {_LS}" + attachment.getPermissions().size()
+ "{_DS} permissions."));
} }
}); });
} }
@ -156,13 +167,19 @@ public class BukkitPermissionManager extends RestartableThread
} }
public boolean isDebugging(Player target) public boolean isDebugging(Player target)
{ {
return debug.contains(target); synchronized(debug)
{
return debug.contains(target);
}
} }
public void setDebugging(Player target, boolean value) public void setDebugging(Player target, boolean value)
{ {
if(value) synchronized(debug)
debug.add(target); {
else if(value)
debug.remove(target); debug.add(target);
else
debug.remove(target);
}
} }
} }

2
src/main/java/ru/simsonic/rscPermissions/Bukkit/RegionUpdateObserver.java

@ -33,7 +33,7 @@ public class RegionUpdateObserver extends RestartableThread
for(; !Thread.interrupted(); Thread.sleep(granularity)) for(; !Thread.interrupted(); Thread.sleep(granularity))
for(Player player : movedPlayers.getMovedPlayersAsync()) for(Player player : movedPlayers.getMovedPlayersAsync())
if(rscp.regionListProvider.isRegionListChanged(player)) if(rscp.regionListProvider.isRegionListChanged(player))
rscp.permissionManager.resolvePlayer(player); rscp.permissionManager.recalculatePlayer(player);
} catch(InterruptedException ex) { } catch(InterruptedException ex) {
} }
} }

4
src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java

@ -40,6 +40,7 @@ public final class BukkitPluginMain extends JavaPlugin
@Override @Override
public void onLoad() public void onLoad()
{ {
Phrases.extractTranslations(getDataFolder());
settings.onLoad(); settings.onLoad();
consoleLog.log(Level.INFO, "[rscp] This server`s ID is \"{0}\". You can change it in server.properties.", getServer().getServerId()); consoleLog.log(Level.INFO, "[rscp] This server`s ID is \"{0}\". You can change it in server.properties.", getServer().getServerId());
consoleLog.log(Level.INFO, "[rscp] rscPermissions has been loaded."); consoleLog.log(Level.INFO, "[rscp] rscPermissions has been loaded.");
@ -47,12 +48,11 @@ public final class BukkitPluginMain extends JavaPlugin
@Override @Override
public void onEnable() public void onEnable()
{ {
Phrases.extractAll(getDataFolder());
settings.readSettings(); settings.readSettings();
internalCache.setDefaultGroup( internalCache.setDefaultGroup(
settings.getDefaultGroup(), settings.getDefaultGroup(),
settings.isDefaultForever()); settings.isDefaultForever());
Phrases.translate(settings.getTranslationProvider()); Phrases.applyTranslation(settings.getTranslationProvider());
// Restore temporary cached data from json files // Restore temporary cached data from json files
final DatabaseContents contents = localStorage.retrieveContents(); final DatabaseContents contents = localStorage.retrieveContents();
contents.filterServerId(getServer().getServerId()).filterLifetime(); contents.filterServerId(getServer().getServerId()).filterLifetime();

15
src/main/java/ru/simsonic/rscPermissions/Engine/Phrases.java

@ -20,8 +20,8 @@ public enum Phrases
INTEGRATION_WG_N ("integration.worldguard-no"), INTEGRATION_WG_N ("integration.worldguard-no"),
INTEGRATION_R_Y ("integration.residence-yes"), INTEGRATION_R_Y ("integration.residence-yes"),
INTEGRATION_R_N ("integration.residence-no"), INTEGRATION_R_N ("integration.residence-no"),
DEBUG_ON ("debug.enabled"), DEBUG_ON ("debug.enable"),
DEBUG_OFF ("debug.disabled"), DEBUG_OFF ("debug.disable"),
MYSQL_FETCHED ("mysql.fetched"), MYSQL_FETCHED ("mysql.fetched"),
; ;
private final String node; private final String node;
@ -35,17 +35,17 @@ public enum Phrases
{ {
return phrase; return phrase;
} }
public static void translate(TranslationProvider provider) public static void applyTranslation(TranslationProvider provider)
{ {
for(Phrases value : Phrases.values()) for(Phrases value : Phrases.values())
value.phrase = provider.getString(value.node); value.phrase = provider.getString(value.node);
} }
public static void extractAll(File workingDir) public static void extractTranslations(File workingDir)
{ {
extract(workingDir, "english"); extractTranslation(workingDir, "english");
extract(workingDir, "russian"); extractTranslation(workingDir, "russian");
} }
public static void extract(File workingDir, String langName) private static void extractTranslation(File workingDir, String langName)
{ {
try try
{ {
@ -53,6 +53,7 @@ public enum Phrases
if(langFile.isFile()) if(langFile.isFile())
langFile.delete(); langFile.delete();
final FileChannel fileChannel = new FileOutputStream(langFile).getChannel(); final FileChannel fileChannel = new FileOutputStream(langFile).getChannel();
fileChannel.force(true);
final InputStream langStream = BukkitPluginMain.class.getResourceAsStream("/languages/" + langName + ".yml"); final InputStream langStream = BukkitPluginMain.class.getResourceAsStream("/languages/" + langName + ".yml");
fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE); fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE);
} catch(IOException ex) { } catch(IOException ex) {

Loading…
Cancel
Save