Browse Source

Working on translations is started.

Vault is integrated — now I should implement all of the abstract methods.
master
Stanislav Usenkov 10 years ago
parent
commit
13c2546bc5
  1. 2
      src/main/java/ru/simsonic/rscPermissions/API/Settings.java
  2. 2
      src/main/java/ru/simsonic/rscPermissions/Backends/DatabaseContents.java
  3. 21
      src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
  4. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitEventListener.java
  5. 4
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  6. 8
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java
  7. 5
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  8. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultChat.java
  9. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java
  10. 45
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  11. 2
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java
  12. 2
      src/main/java/ru/simsonic/rscPermissions/Engine/Matchers.java
  13. 2
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java
  14. 2
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java
  15. 4
      src/main/java/ru/simsonic/rscPermissions/IndependentMain.java
  16. 14
      src/main/java/ru/simsonic/rscPermissions/Phrases.java
  17. 7
      src/main/resources/languages/english.yml
  18. 7
      src/main/resources/languages/russian.yml
  19. 1
      src/main/resources/plugin.yml

2
src/main/java/ru/simsonic/rscPermissions/API/Settings.java

@ -3,6 +3,7 @@ import ru.simsonic.rscUtilityLibrary.ConnectionMySQL.ConnectionParams;
public interface Settings
{
public static final String chatPrefix = "{YELLOW}[rscp] {GOLD}";
public static final String separator = ".";
public static final String separatorRegExp = "\\.";
public static final String instantiator = "?";
@ -20,5 +21,6 @@ public interface Settings
public long getRegionFinderGranularity();
public int getAutoReloadDelayTicks();
public boolean isUseMetrics();
public String getLanguage();
public ConnectionParams getConnectionParams();
}

2
src/main/java/ru/simsonic/rscPermissions/Backends/DatabaseContents.java

@ -5,7 +5,7 @@ import ru.simsonic.rscPermissions.API.Destination;
import ru.simsonic.rscPermissions.API.RowEntity;
import ru.simsonic.rscPermissions.API.RowInheritance;
import ru.simsonic.rscPermissions.API.RowPermission;
import ru.simsonic.rscPermissions.InternalCache.Matchers;
import ru.simsonic.rscPermissions.Engine.Matchers;
public class DatabaseContents
{

21
src/main/java/ru/simsonic/rscPermissions/API/BridgeForBukkitAPI.java → src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java

@ -1,7 +1,8 @@
package ru.simsonic.rscPermissions.API;
package ru.simsonic.rscPermissions;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.ServicePriority;
import ru.simsonic.rscPermissions.Bukkit.VaultChat;
import ru.simsonic.rscPermissions.Bukkit.VaultPermission;
import ru.simsonic.rscPermissions.BukkitPluginMain;
public class BridgeForBukkitAPI
{
@ -40,4 +41,20 @@ public class BridgeForBukkitAPI
{
return rscp.isEnabled();
}
protected void setupVault()
{
final Plugin plugin = rscp.getServer().getPluginManager().getPlugin("Vault");
if(plugin != null)
{
// Register Chat
rscp.getServer().getServicesManager().register(
net.milkbowl.vault.chat.Chat.class, vaultChat,
rscp, ServicePriority.Highest);
// Register Permission
rscp.getServer().getServicesManager().register(
net.milkbowl.vault.permission.Permission.class, vaultPermission,
rscp, ServicePriority.Highest);
BukkitPluginMain.consoleLog.info("[rscp] Vault found and integrated.");
}
}
}

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

@ -13,7 +13,7 @@ import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.server.ServerListPingEvent;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public class BukkitEventListener implements Listener

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

@ -9,8 +9,8 @@ import java.util.concurrent.LinkedBlockingQueue;
import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachment;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.InternalCache.ResolutionParams;
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult;
import ru.simsonic.rscPermissions.Engine.ResolutionParams;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.RestartableThread;
public class BukkitPermissionManager extends RestartableThread

8
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java

@ -9,6 +9,7 @@ public class BukkitPluginConfiguration implements Settings
private final BukkitPluginMain plugin;
private String strDefaultGroup = "Default";
private String strMaintenanceMode = "";
private String language = "english";
private boolean bAlwaysInheritDefault = false;
private boolean bTreatAsteriskAsOP = true;
private boolean bUseMetrics = true;
@ -50,6 +51,7 @@ public class BukkitPluginConfiguration implements Settings
{
config.set("settings.enable-rewards", null);
config.set("settings.auto-update", null);
config.set("settings.language", "english");
config.set("internal.version", 3);
}
@Override
@ -57,6 +59,7 @@ public class BukkitPluginConfiguration implements Settings
{
plugin.reloadConfig();
final FileConfiguration config = plugin.getConfig();
language = config.getString("settings.language", "english");
strDefaultGroup = config.getString("settings.default-group", "Default");
strMaintenanceMode = config.getString("settings.maintenance-mode", "");
bAlwaysInheritDefault = config.getBoolean("always-inherit-default-group", false);
@ -125,6 +128,11 @@ public class BukkitPluginConfiguration implements Settings
return nRegionFinderGranularity;
}
@Override
public String getLanguage()
{
return language;
}
@Override
public ConnectionParams getConnectionParams()
{
final FileConfiguration config = plugin.getConfig();

5
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitCommands.java → src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java

@ -1,4 +1,4 @@
package ru.simsonic.rscPermissions.Bukkit;
package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
@ -8,6 +8,7 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.Bukkit.PermissionsEx_YAML;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException;
import ru.simsonic.rscUtilityLibrary.RestartableThread;
@ -27,7 +28,7 @@ public class BukkitCommands
if(rscp.connection.isConnected() == false)
if(rscp.connection.connect() == false)
{
BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache.");
BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only.");
return;
}
final DatabaseContents contents = rscp.connection.retrieveContents();

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

@ -2,7 +2,7 @@ package ru.simsonic.rscPermissions.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.API.BridgeForBukkitAPI;
import ru.simsonic.rscPermissions.BridgeForBukkitAPI;
public final class VaultChat extends net.milkbowl.vault.chat.Chat
{

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

@ -3,7 +3,7 @@ import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.API.BridgeForBukkitAPI;
import ru.simsonic.rscPermissions.BridgeForBukkitAPI;
public class VaultPermission extends net.milkbowl.vault.permission.Permission
{

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

@ -8,24 +8,22 @@ import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;
import org.mcstats.MetricsLite;
import ru.simsonic.rscPermissions.API.BridgeForBukkitAPI;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Backends.BackendDatabase;
import ru.simsonic.rscPermissions.Backends.BackendJson;
import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.Bukkit.BukkitCommands;
import ru.simsonic.rscPermissions.Bukkit.BukkitEventListener;
import ru.simsonic.rscPermissions.Bukkit.BukkitPermissionManager;
import ru.simsonic.rscPermissions.Bukkit.BukkitPluginConfiguration;
import ru.simsonic.rscPermissions.Bukkit.BukkitRegionProviders;
import ru.simsonic.rscPermissions.Bukkit.Commands.BukkitCommands;
import ru.simsonic.rscPermissions.Bukkit.RegionUpdateObserver;
import ru.simsonic.rscPermissions.InternalCache.InternalCache;
import ru.simsonic.rscPermissions.Engine.InternalCache;
import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public final class BukkitPluginMain extends JavaPlugin
{
private static final String chatPrefix = "{YELLOW}[rscp] {GOLD}";
public static final Logger consoleLog = Bukkit.getLogger();
public final Settings settings = new BukkitPluginConfiguration(this);
public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this);
@ -42,20 +40,17 @@ public final class BukkitPluginMain extends JavaPlugin
public void 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.");
}
@Override
public void onEnable()
{
Phrases.extractAll(this);
settings.readSettings();
// Register event's dispatcher
getServer().getPluginManager().registerEvents(bukkitListener, this);
regionUpdateObserver.registerListeners();
// WorldGuard, Residence and other possible region list providers
regionListProvider.integrate();
// Restore temporary cached data from json files
internalCache.setDefaultGroup(settings.getDefaultGroup());
Phrases.fill(this, settings.getLanguage());
// Restore temporary cached data from json files
final DatabaseContents contents = fileCache.retrieveContents();
contents.filterServerId(getServer().getServerId()).filterLifetime();
internalCache.fill(contents);
@ -66,24 +61,32 @@ public final class BukkitPluginMain extends JavaPlugin
contents.permissions.length,
contents.inheritance.length,
});
// Start all needed threads
permissionManager.startDeamon();
regionUpdateObserver.startDeamon();
// Connect to database and fetch data
connection.initialize(settings.getConnectionParams());
commandHelper.threadFetchDatabaseContents.startDeamon();
// Metrics
// Integrate Metrics
if(settings.isUseMetrics())
{
try
{
metrics = new MetricsLite(this);
metrics.start();
consoleLog.info("[rscp] Metrics enabled.");
consoleLog.info(Phrases.PLUGIN_METRICS.toString());
} catch(IOException ex) {
consoleLog.log(Level.INFO, "[rscp][Metrics] Exception: {0}", ex);
}
}
// Register event's dispatcher
getServer().getPluginManager().registerEvents(bukkitListener, this);
regionUpdateObserver.registerListeners();
// Integrate Vault
bridgeForBukkit.setupVault();
// WorldGuard, Residence and other possible region list providers
regionListProvider.integrate();
// Start all needed parallel threads as daemons
permissionManager.startDeamon();
regionUpdateObserver.startDeamon();
// Connect to database and initiate data fetching
connection.initialize(settings.getConnectionParams());
commandHelper.threadFetchDatabaseContents.startDeamon();
// Done
consoleLog.info("[rscp] rscPermissions has been successfully enabled.");
}
@Override
@ -122,7 +125,7 @@ public final class BukkitPluginMain extends JavaPlugin
commandHelper.onCommand(sender, cmd, label, args);
} catch(CommandAnswerException ex) {
for(String answer : ex.getMessageArray())
sender.sendMessage(GenericChatCodes.processStringStatic(chatPrefix + answer));
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix + answer));
} catch(NullPointerException ex) {
// These will never occur! I hope...
}
@ -132,7 +135,7 @@ public final class BukkitPluginMain extends JavaPlugin
{
if(message == null || "".equals(message))
return;
message = GenericChatCodes.processStringStatic(chatPrefix + message);
message = GenericChatCodes.processStringStatic(Settings.chatPrefix + message);
sender.sendMessage(message);
}
}

2
src/main/java/ru/simsonic/rscPermissions/InternalCache/InternalCache.java → src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

@ -1,4 +1,4 @@
package ru.simsonic.rscPermissions.InternalCache;
package ru.simsonic.rscPermissions.Engine;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

2
src/main/java/ru/simsonic/rscPermissions/InternalCache/Matchers.java → src/main/java/ru/simsonic/rscPermissions/Engine/Matchers.java

@ -1,4 +1,4 @@
package ru.simsonic.rscPermissions.InternalCache;
package ru.simsonic.rscPermissions.Engine;
import java.util.regex.Pattern;
public class Matchers

2
src/main/java/ru/simsonic/rscPermissions/InternalCache/ResolutionParams.java → src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java

@ -1,4 +1,4 @@
package ru.simsonic.rscPermissions.InternalCache;
package ru.simsonic.rscPermissions.Engine;
import java.util.Map;
import java.util.Set;
import ru.simsonic.rscPermissions.API.RowEntity;

2
src/main/java/ru/simsonic/rscPermissions/InternalCache/ResolutionResult.java → src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java

@ -1,4 +1,4 @@
package ru.simsonic.rscPermissions.InternalCache;
package ru.simsonic.rscPermissions.Engine;
import java.util.Map;
import java.util.Set;

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

@ -5,8 +5,8 @@ import java.util.logging.Logger;
import ru.simsonic.rscPermissions.Backends.BackendDatabase;
import ru.simsonic.rscPermissions.Backends.BackendJson;
import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.InternalCache.InternalCache;
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult;
import ru.simsonic.rscPermissions.Engine.InternalCache;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public class IndependentMain
{

14
src/main/java/ru/simsonic/rscPermissions/Phrases.java

@ -7,6 +7,7 @@ import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.util.logging.Level;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
public enum Phrases
{
@ -14,7 +15,7 @@ public enum Phrases
PLUGIN_DISABLED ("generic.disabled"),
PLUGIN_METRICS ("generic.metrics"),
PLUGIN_RELOADED ("generic.reloaded"),
FETCHED ("generic.fetched"),
MYSQL_FETCHED ("mysql.fetched"),
;
private final String node;
private String phrase;
@ -27,14 +28,19 @@ public enum Phrases
{
return phrase;
}
public static void fill(BukkitPluginMain plugin, String langName)
public static void fill(Plugin plugin, String langName)
{
final File langFile = new File(plugin.getDataFolder(), langName + ".yml");
final YamlConfiguration langConfig = YamlConfiguration.loadConfiguration(langFile);
for(Phrases value : Phrases.values())
value.phrase = langConfig.getString(value.node, value.node);
}
public static void extract(BukkitPluginMain plugin, String langName)
public static void extractAll(Plugin plugin)
{
extract(plugin, "english");
extract(plugin, "russian");
}
public static void extract(Plugin plugin, String langName)
{
try
{
@ -46,7 +52,7 @@ public enum Phrases
fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE);
}
} catch(IOException ex) {
BukkitPluginMain.consoleLog.log(Level.WARNING, "Cannot extract language: {0}", langName);
BukkitPluginMain.consoleLog.log(Level.WARNING, "Cannot extract language: {0}\n{1}", new Object[] { langName, ex });
}
}
}

7
src/main/resources/languages/english.yml

@ -0,0 +1,7 @@
generic:
enabled: ""
disabled: ""
reloaded: ""
metrics: "[rscp] Metrics enabled."
mysql:
fetched: ""

7
src/main/resources/languages/russian.yml

@ -0,0 +1,7 @@
generic:
enabled: ""
disabled: ""
reloaded: ""
metrics: "[rscp] Включён сбор метрики (mcstats.org)."
mysql:
fetched: ""

1
src/main/resources/plugin.yml

@ -11,6 +11,7 @@ softdepend:
commands:
rscp:
description: rscPermissions command hub
usage: Enter /rscp help to see all subcommands
permissions:
rscp.*:
description: Gives access to all commands

Loading…
Cancel
Save