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 interface Settings
{ {
public static final String chatPrefix = "{YELLOW}[rscp] {GOLD}";
public static final String separator = "."; public static final String separator = ".";
public static final String separatorRegExp = "\\."; public static final String separatorRegExp = "\\.";
public static final String instantiator = "?"; public static final String instantiator = "?";
@ -20,5 +21,6 @@ public interface Settings
public long getRegionFinderGranularity(); public long getRegionFinderGranularity();
public int getAutoReloadDelayTicks(); public int getAutoReloadDelayTicks();
public boolean isUseMetrics(); public boolean isUseMetrics();
public String getLanguage();
public ConnectionParams getConnectionParams(); 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.RowEntity;
import ru.simsonic.rscPermissions.API.RowInheritance; import ru.simsonic.rscPermissions.API.RowInheritance;
import ru.simsonic.rscPermissions.API.RowPermission; import ru.simsonic.rscPermissions.API.RowPermission;
import ru.simsonic.rscPermissions.InternalCache.Matchers; import ru.simsonic.rscPermissions.Engine.Matchers;
public class DatabaseContents 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.VaultChat;
import ru.simsonic.rscPermissions.Bukkit.VaultPermission; import ru.simsonic.rscPermissions.Bukkit.VaultPermission;
import ru.simsonic.rscPermissions.BukkitPluginMain;
public class BridgeForBukkitAPI public class BridgeForBukkitAPI
{ {
@ -40,4 +41,20 @@ public class BridgeForBukkitAPI
{ {
return rscp.isEnabled(); 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.player.PlayerQuitEvent;
import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.event.server.ServerListPingEvent;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult; import ru.simsonic.rscPermissions.Engine.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public class BukkitEventListener implements Listener 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.entity.Player;
import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachment;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.InternalCache.ResolutionParams; import ru.simsonic.rscPermissions.Engine.ResolutionParams;
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult; import ru.simsonic.rscPermissions.Engine.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.RestartableThread; import ru.simsonic.rscUtilityLibrary.RestartableThread;
public class BukkitPermissionManager extends 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 final BukkitPluginMain plugin;
private String strDefaultGroup = "Default"; private String strDefaultGroup = "Default";
private String strMaintenanceMode = ""; private String strMaintenanceMode = "";
private String language = "english";
private boolean bAlwaysInheritDefault = false; private boolean bAlwaysInheritDefault = false;
private boolean bTreatAsteriskAsOP = true; private boolean bTreatAsteriskAsOP = true;
private boolean bUseMetrics = true; private boolean bUseMetrics = true;
@ -50,6 +51,7 @@ public class BukkitPluginConfiguration implements Settings
{ {
config.set("settings.enable-rewards", null); config.set("settings.enable-rewards", null);
config.set("settings.auto-update", null); config.set("settings.auto-update", null);
config.set("settings.language", "english");
config.set("internal.version", 3); config.set("internal.version", 3);
} }
@Override @Override
@ -57,6 +59,7 @@ public class BukkitPluginConfiguration implements Settings
{ {
plugin.reloadConfig(); plugin.reloadConfig();
final FileConfiguration config = plugin.getConfig(); final FileConfiguration config = plugin.getConfig();
language = config.getString("settings.language", "english");
strDefaultGroup = config.getString("settings.default-group", "Default"); strDefaultGroup = config.getString("settings.default-group", "Default");
strMaintenanceMode = config.getString("settings.maintenance-mode", ""); strMaintenanceMode = config.getString("settings.maintenance-mode", "");
bAlwaysInheritDefault = config.getBoolean("always-inherit-default-group", false); bAlwaysInheritDefault = config.getBoolean("always-inherit-default-group", false);
@ -125,6 +128,11 @@ public class BukkitPluginConfiguration implements Settings
return nRegionFinderGranularity; return nRegionFinderGranularity;
} }
@Override @Override
public String getLanguage()
{
return language;
}
@Override
public ConnectionParams getConnectionParams() public ConnectionParams getConnectionParams()
{ {
final FileConfiguration config = plugin.getConfig(); 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.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -8,6 +8,7 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import ru.simsonic.rscPermissions.Backends.DatabaseContents; import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.Bukkit.PermissionsEx_YAML;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException; import ru.simsonic.rscUtilityLibrary.CommandProcessing.CommandAnswerException;
import ru.simsonic.rscUtilityLibrary.RestartableThread; import ru.simsonic.rscUtilityLibrary.RestartableThread;
@ -27,7 +28,7 @@ public class BukkitCommands
if(rscp.connection.isConnected() == false) if(rscp.connection.isConnected() == false)
if(rscp.connection.connect() == 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; return;
} }
final DatabaseContents contents = rscp.connection.retrieveContents(); 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.OfflinePlayer;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; 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 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.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; 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 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.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitScheduler;
import org.mcstats.MetricsLite; import org.mcstats.MetricsLite;
import ru.simsonic.rscPermissions.API.BridgeForBukkitAPI;
import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Backends.BackendDatabase; import ru.simsonic.rscPermissions.Backends.BackendDatabase;
import ru.simsonic.rscPermissions.Backends.BackendJson; import ru.simsonic.rscPermissions.Backends.BackendJson;
import ru.simsonic.rscPermissions.Backends.DatabaseContents; import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.Bukkit.BukkitCommands;
import ru.simsonic.rscPermissions.Bukkit.BukkitEventListener; import ru.simsonic.rscPermissions.Bukkit.BukkitEventListener;
import ru.simsonic.rscPermissions.Bukkit.BukkitPermissionManager; import ru.simsonic.rscPermissions.Bukkit.BukkitPermissionManager;
import ru.simsonic.rscPermissions.Bukkit.BukkitPluginConfiguration; import ru.simsonic.rscPermissions.Bukkit.BukkitPluginConfiguration;
import ru.simsonic.rscPermissions.Bukkit.BukkitRegionProviders; import ru.simsonic.rscPermissions.Bukkit.BukkitRegionProviders;
import ru.simsonic.rscPermissions.Bukkit.Commands.BukkitCommands;
import ru.simsonic.rscPermissions.Bukkit.RegionUpdateObserver; 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.CommandProcessing.CommandAnswerException;
import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes;
public final class BukkitPluginMain extends JavaPlugin public final class BukkitPluginMain extends JavaPlugin
{ {
private static final String chatPrefix = "{YELLOW}[rscp] {GOLD}";
public static final Logger consoleLog = Bukkit.getLogger(); public static final Logger consoleLog = Bukkit.getLogger();
public final Settings settings = new BukkitPluginConfiguration(this); public final Settings settings = new BukkitPluginConfiguration(this);
public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this); public final BridgeForBukkitAPI bridgeForBukkit = new BridgeForBukkitAPI(this);
@ -42,20 +40,17 @@ public final class BukkitPluginMain extends JavaPlugin
public void onLoad() public void onLoad()
{ {
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.");
} }
@Override @Override
public void onEnable() public void onEnable()
{ {
Phrases.extractAll(this);
settings.readSettings(); 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()); internalCache.setDefaultGroup(settings.getDefaultGroup());
Phrases.fill(this, settings.getLanguage());
// Restore temporary cached data from json files
final DatabaseContents contents = fileCache.retrieveContents(); final DatabaseContents contents = fileCache.retrieveContents();
contents.filterServerId(getServer().getServerId()).filterLifetime(); contents.filterServerId(getServer().getServerId()).filterLifetime();
internalCache.fill(contents); internalCache.fill(contents);
@ -66,24 +61,32 @@ public final class BukkitPluginMain extends JavaPlugin
contents.permissions.length, contents.permissions.length,
contents.inheritance.length, contents.inheritance.length,
}); });
// Start all needed threads // Integrate Metrics
permissionManager.startDeamon();
regionUpdateObserver.startDeamon();
// Connect to database and fetch data
connection.initialize(settings.getConnectionParams());
commandHelper.threadFetchDatabaseContents.startDeamon();
// Metrics
if(settings.isUseMetrics()) if(settings.isUseMetrics())
{ {
try try
{ {
metrics = new MetricsLite(this); metrics = new MetricsLite(this);
metrics.start(); metrics.start();
consoleLog.info("[rscp] Metrics enabled."); consoleLog.info(Phrases.PLUGIN_METRICS.toString());
} catch(IOException ex) { } catch(IOException ex) {
consoleLog.log(Level.INFO, "[rscp][Metrics] Exception: {0}", 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."); consoleLog.info("[rscp] rscPermissions has been successfully enabled.");
} }
@Override @Override
@ -122,7 +125,7 @@ public final class BukkitPluginMain extends JavaPlugin
commandHelper.onCommand(sender, cmd, label, args); commandHelper.onCommand(sender, cmd, label, args);
} catch(CommandAnswerException ex) { } catch(CommandAnswerException ex) {
for(String answer : ex.getMessageArray()) for(String answer : ex.getMessageArray())
sender.sendMessage(GenericChatCodes.processStringStatic(chatPrefix + answer)); sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix + answer));
} catch(NullPointerException ex) { } catch(NullPointerException ex) {
// These will never occur! I hope... // These will never occur! I hope...
} }
@ -132,7 +135,7 @@ public final class BukkitPluginMain extends JavaPlugin
{ {
if(message == null || "".equals(message)) if(message == null || "".equals(message))
return; return;
message = GenericChatCodes.processStringStatic(chatPrefix + message); message = GenericChatCodes.processStringStatic(Settings.chatPrefix + message);
sender.sendMessage(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.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; 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; import java.util.regex.Pattern;
public class Matchers 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.Map;
import java.util.Set; import java.util.Set;
import ru.simsonic.rscPermissions.API.RowEntity; 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.Map;
import java.util.Set; 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.BackendDatabase;
import ru.simsonic.rscPermissions.Backends.BackendJson; import ru.simsonic.rscPermissions.Backends.BackendJson;
import ru.simsonic.rscPermissions.Backends.DatabaseContents; import ru.simsonic.rscPermissions.Backends.DatabaseContents;
import ru.simsonic.rscPermissions.InternalCache.InternalCache; import ru.simsonic.rscPermissions.Engine.InternalCache;
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult; import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public class IndependentMain 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.nio.channels.FileChannel;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
public enum Phrases public enum Phrases
{ {
@ -14,7 +15,7 @@ public enum Phrases
PLUGIN_DISABLED ("generic.disabled"), PLUGIN_DISABLED ("generic.disabled"),
PLUGIN_METRICS ("generic.metrics"), PLUGIN_METRICS ("generic.metrics"),
PLUGIN_RELOADED ("generic.reloaded"), PLUGIN_RELOADED ("generic.reloaded"),
FETCHED ("generic.fetched"), MYSQL_FETCHED ("mysql.fetched"),
; ;
private final String node; private final String node;
private String phrase; private String phrase;
@ -27,14 +28,19 @@ public enum Phrases
{ {
return phrase; 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 File langFile = new File(plugin.getDataFolder(), langName + ".yml");
final YamlConfiguration langConfig = YamlConfiguration.loadConfiguration(langFile); final YamlConfiguration langConfig = YamlConfiguration.loadConfiguration(langFile);
for(Phrases value : Phrases.values()) for(Phrases value : Phrases.values())
value.phrase = langConfig.getString(value.node, value.node); 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 try
{ {
@ -46,7 +52,7 @@ public enum Phrases
fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE); fileChannel.transferFrom(Channels.newChannel(langStream), 0, Long.MAX_VALUE);
} }
} catch(IOException ex) { } 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: commands:
rscp: rscp:
description: rscPermissions command hub description: rscPermissions command hub
usage: Enter /rscp help to see all subcommands
permissions: permissions:
rscp.*: rscp.*:
description: Gives access to all commands description: Gives access to all commands

Loading…
Cancel
Save