From 72a40b33030fa6577a545ed4fe568fee40bcac57 Mon Sep 17 00:00:00 2001 From: Stanislav Usenkov Date: Mon, 25 Apr 2016 15:35:24 +0600 Subject: [PATCH] Started implementation of database editing commands (/rscp user addgroup/removegroup ...). --- pom.xml | 14 +-- .../Bukkit/BukkitDatabaseFetcher.java | 18 ++- .../Bukkit/Commands/BukkitCommands.java | 84 ++++---------- .../Bukkit/Commands/CommandUser.java | 109 ++++++++++++++++++ .../Engine/Backends/BackendDatabase.java | 20 +++- .../Engine/Backends/DatabaseAction.java | 11 ++ .../Engine/Backends/DatabaseTransaction.java | 56 +++++++++ .../rscPermissions/Engine/InternalCache.java | 1 + .../Engine/ResolutionResult.java | 1 + .../Sponge/Commands/SpongeCommands.java | 22 ++-- .../Sponge/SpongePermissionManager.java | 27 ++++- .../rscPermissions/SpongePluginMain.java | 10 +- 12 files changed, 275 insertions(+), 98 deletions(-) create mode 100644 src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java create mode 100644 src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseAction.java create mode 100644 src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseTransaction.java diff --git a/pom.xml b/pom.xml index dbf8fed..9535ecd 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ ru.simsonic rscPermissions - 0.9.22b + 0.10.0b-SNAPSHOT jar rscPermissions @@ -50,28 +50,28 @@ mysql mysql-connector-java - 5.1.36 + 5.1.38 runtime com.google.code.gson gson - 2.3.1 + 2.6.2 compile org.spigotmc spigot-api - 1.8-R0.1-SNAPSHOT + 1.8.8-R0.1-SNAPSHOT provided org.spongepowered spongeapi - 2.0 + 3.0.0 provided @@ -132,7 +132,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + 3.5.1 1.7 1.7 @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-shade-plugin - 2.3 + 2.4.3 package diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java index ad55fc2..af7308a 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java @@ -28,14 +28,10 @@ public class BukkitDatabaseFetcher extends RestartableThread BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only."); return; } - final DatabaseContents contents = rscp.connection.retrieveContents(); + final DatabaseContents contents = remoteToLocal(); rscp.connection.disconnect(); if(contents != null) { - contents.normalize(); - rscp.localStorage.cleanup(); - rscp.localStorage.saveContents(contents); - contents.filterServerId(rscp.getServer().getServerId()); rscp.internalCache.fill(contents); final Runnable syncTask = new Runnable() { @@ -76,4 +72,16 @@ public class BukkitDatabaseFetcher extends RestartableThread } else BukkitPluginMain.consoleLog.warning("[rscp] Cannot load data from database."); } + public synchronized DatabaseContents remoteToLocal() + { + final DatabaseContents contents = rscp.connection.retrieveContents(); + if(contents != null) + { + contents.normalize(); + rscp.localStorage.cleanup(); + rscp.localStorage.saveContents(contents); + contents.filterServerId(rscp.getServer().getServerId()); + } + return contents; + } } diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java index f9d8799..be60b39 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java @@ -1,10 +1,8 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; import java.util.ArrayList; -import java.util.Collections; import java.util.logging.Level; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; import ru.simsonic.rscCommonsLibrary.RestartableThread; import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException; import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes; @@ -12,13 +10,12 @@ import ru.simsonic.rscMinecraftLibrary.Bukkit.Tools; import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.Bukkit.BukkitDatabaseFetcher; import ru.simsonic.rscPermissions.BukkitPluginMain; -import ru.simsonic.rscPermissions.Engine.Matchers; import ru.simsonic.rscPermissions.Engine.Phrases; -import ru.simsonic.rscPermissions.Engine.ResolutionResult; public class BukkitCommands { private final BukkitPluginMain rscp; + private final CommandUser cmdUser; private final CommandLock cmdLock; private final CommandFetch cmdFetch; private final CommandDebug cmdDebug; @@ -28,6 +25,7 @@ public class BukkitCommands public BukkitCommands(final BukkitPluginMain plugin) { this.rscp = plugin; + cmdUser = new CommandUser(rscp); cmdLock = new CommandLock(rscp); cmdFetch = new CommandFetch(rscp); cmdDebug = new CommandDebug(rscp); @@ -123,16 +121,31 @@ public class BukkitCommands switch(args[0].toLowerCase()) { case "user": - onCommandHubUser(sender, args); - break; + cmdUser.onUserCommandHub(sender, args); + return; case "lock": cmdLock.executeLock(sender, args); return; case "unlock": cmdLock.executeUnlock(sender); return; + case "fetch": + /* rscp fetch */ + cmdFetch.execute(sender); + return; + case "debug": + /* rscp debug [|toggle] */ + cmdDebug.execute(sender, args); + return; + case "reload": + /* rscp reload */ + cmdReload.execute(sender); + return; + case "update": + cmdUpdate.execute(sender, args); + return; case "examplerows": - /* rscp examplerows */ + /* DEPRECATED: rscp examplerows */ if(sender.hasPermission("rscp.admin")) { threadInsertExampleRows(sender); @@ -140,6 +153,7 @@ public class BukkitCommands } break; case "import": + /* DEPRECATED: rscp import pex-sql*/ if(sender.hasPermission("rscp.admin")) { if(args.length > 1) @@ -157,68 +171,12 @@ public class BukkitCommands }); } return; - case "fetch": - /* rscp fetch */ - cmdFetch.execute(sender); - return; - case "debug": - /* rscp debug [|toggle] */ - cmdDebug.execute(sender, args); - return; - case "reload": - /* rscp reload */ - cmdReload.execute(sender); - return; - case "update": - cmdUpdate.execute(sender, args); - return; case "help": default: break; } throw new CommandAnswerException(help); } - private void onCommandHubUser(CommandSender sender, String[] args) throws CommandAnswerException - { - if(sender.hasPermission("rscp.admin") == false) - throw new CommandAnswerException("Not enough permissions."); - if(args.length < 3) - return; - final Player player = rscp.bridgeForBukkit.findPlayer(args[1]); - if(player != null) - args[1] = player.getName(); - final ResolutionResult result = (player != null) - ? rscp.permissionManager.getResult(player) - : rscp.permissionManager.getResult(args[1]); - final ArrayList answer = new ArrayList<>(); - if(Matchers.isCorrectDashlessUUID(args[1])) - args[1] = Matchers.uuidAddDashes(args[1]); - switch(args[2].toLowerCase()) - { - case "lp": - answer.add("Permission list for user {_YL}" + args[1] + "{_LS}:"); - final ArrayList sorted_keys = new ArrayList<>(result.permissions.keySet()); - Collections.sort(sorted_keys); - for(String perm : sorted_keys) - answer.add((result.permissions.get(perm) ? "{_LG}" : "{_LR}") + perm); - throw new CommandAnswerException(answer); - case "lg": - answer.add("Group list for user {_YL}" + args[1] + "{_LS}:"); - for(String group : result.getOrderedGroups()) - answer.add("{_LG}" + group); - throw new CommandAnswerException(answer); - case "p": - case "prefix": - answer.add("Calculated prefix for user {_YL}" + args[1] + "{_LS} is:"); - answer.add("{_R}\"" + result.prefix + "{_R}\""); - throw new CommandAnswerException(answer); - case "s": - case "suffix": - answer.add("Calculated suffix for user {_YL}" + args[1] + "{_LS} is:"); - answer.add("{_R}\"" + result.suffix + "{_R}\""); - throw new CommandAnswerException(answer); - } - } public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException { if(arg == null || "".equals(arg)) diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java new file mode 100644 index 0000000..263ad0f --- /dev/null +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java @@ -0,0 +1,109 @@ +package ru.simsonic.rscPermissions.Bukkit.Commands; + +import java.util.ArrayList; +import java.util.Collections; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException; +import ru.simsonic.rscPermissions.BukkitPluginMain; +import ru.simsonic.rscPermissions.Engine.Matchers; +import ru.simsonic.rscPermissions.Engine.ResolutionResult; + +public class CommandUser +{ + private final BukkitPluginMain rscp; + CommandUser(BukkitPluginMain plugin) + { + this.rscp = plugin; + } + public void onUserCommandHub(CommandSender sender, String[] args) throws CommandAnswerException + { + if(sender.hasPermission("rscp.admin")) + { + if(args.length < 3) + return; + final Player player = rscp.bridgeForBukkit.findPlayer(args[1]); + if(player != null) + args[1] = player.getName(); + final ResolutionResult result = (player != null) + ? rscp.permissionManager.getResult(player) + : rscp.permissionManager.getResult(args[1]); + if(Matchers.isCorrectDashlessUUID(args[1])) + args[1] = Matchers.uuidAddDashes(args[1]); + switch(args[2].toLowerCase()) + { + case "p": + case "prefix": + viewPrefix(result, args[1]); + break; + case "s": + case "suffix": + viewSuffix(result, args[1]); + break; + case "listpermissions": + case "lp": + listPermissions(result, args[1]); + break; + case "listgroups": + case "lg": + listGroups(result, args[1]); + break; + case "addgroup": + case "ag": + // TO DO HERE + addGroup(result, args[1], null, null, null); + break; + case "removegroup": + case "rg": + // TO DO HERE + removeGroup(result, args[1], null); + break; + default: + break; + } + } else + throw new CommandAnswerException("Not enough permissions."); + } + private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException + { + final ArrayList answer = new ArrayList<>(); + answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:"); + answer.add("{_R}\"" + result.prefix + "{_R}\""); + throw new CommandAnswerException(answer); + } + private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException + { + final ArrayList answer = new ArrayList<>(); + answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:"); + answer.add("{_R}\"" + result.suffix + "{_R}\""); + throw new CommandAnswerException(answer); + } + private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException + { + final ArrayList answer = new ArrayList<>(); + answer.add("Permission list for user {_YL}" + user + "{_LS}:"); + final ArrayList sorted_keys = new ArrayList<>(result.permissions.keySet()); + Collections.sort(sorted_keys); + for(String perm : sorted_keys) + answer.add((result.permissions.get(perm) ? "{_LG}" : "{_LR}") + perm); + throw new CommandAnswerException(answer); + } + private void listGroups(ResolutionResult result, String user) throws CommandAnswerException + { + final ArrayList answer = new ArrayList<>(); + answer.add("Group list for user {_YL}" + user + "{_LS}:"); + for(String group : result.getOrderedGroups()) + answer.add("{_LG}" + group); + throw new CommandAnswerException(answer); + } + private void addGroup(ResolutionResult result, String user, String parent, String destination, Integer seconds) throws CommandAnswerException + { + final ArrayList answer = new ArrayList<>(); + throw new CommandAnswerException(answer); + } + private void removeGroup(ResolutionResult result, String user, String parent) throws CommandAnswerException + { + final ArrayList answer = new ArrayList<>(); + throw new CommandAnswerException(answer); + } +} diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java index 4b7ae5a..e9d4f36 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java @@ -120,17 +120,25 @@ public class BackendDatabase extends ConnectionMySQL setupQueryTemplate("{TEXT}", (text != null) ? "'" + text + "'" : "NULL"); executeUpdateT("Update_entity_text"); } - public synchronized void LockTables() + public synchronized void lockTableEntities() { - executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}entities`, `{DATABASE}`.`{PREFIX}permissions`, `{DATABASE}`.`{PREFIX}inheritance`;"); + executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}entities`;"); } - public synchronized void UnlockTables() + public synchronized void lockTablePermissions() + { + executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}permissions`;"); + } + public synchronized void lockTableInheritance() + { + executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}inheritance`;"); + } + public synchronized void unlockAllTables() { executeUpdate("UNLOCK TABLES;"); } public synchronized void transactionStart() { - executeUpdate("BEGIN TRANSACTION;"); + executeUpdate("START TRANSACTION;"); } public synchronized void transactionCommit() { @@ -142,12 +150,12 @@ public class BackendDatabase extends ConnectionMySQL } public synchronized void modifyDatabase() { - LockTables(); + lockTableEntities(); // FETCH ALL DATA transactionStart(); // MAKE MODIFICATIONS transactionCommit(); - UnlockTables(); + unlockAllTables(); // FETCH ALL DATA AGAIN } } diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseAction.java b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseAction.java new file mode 100644 index 0000000..4c7892a --- /dev/null +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseAction.java @@ -0,0 +1,11 @@ +package ru.simsonic.rscPermissions.Engine.Backends; + +import ru.simsonic.rscPermissions.API.RowInheritance; +import ru.simsonic.rscPermissions.API.RowPermission; + +public class DatabaseAction +{ + public int id; + public RowPermission permissions; + public RowInheritance inheritance; +} diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseTransaction.java b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseTransaction.java new file mode 100644 index 0000000..072195b --- /dev/null +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseTransaction.java @@ -0,0 +1,56 @@ +package ru.simsonic.rscPermissions.Engine.Backends; + +import java.util.LinkedList; +import java.util.List; +import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException; +import ru.simsonic.rscPermissions.BukkitPluginMain; + +public class DatabaseTransaction +{ + private final BukkitPluginMain rscp; + private final List actions = new LinkedList<>(); + public DatabaseTransaction(BukkitPluginMain rscp) + { + this.rscp = rscp; + } + /* + What can happen? + add permission [destination] [lifetime] + remove permission [destination] + add group [destination] [lifitime] + remove group [destination] + */ + public void apply() throws CommandAnswerException + { + // START TRANSACTION AND LOCK TABLE + rscp.connection.lockTableEntities(); + rscp.connection.lockTablePermissions(); + rscp.connection.lockTableInheritance(); + rscp.connection.transactionStart(); + + // SELECT FROM DATABASE INTO LOCAL CACHE TO MAKE IT ACTUAL + final DatabaseContents contents = rscp.commandHelper.threadFetchDatabaseContents.remoteToLocal(); + + // UNDERSTAND WHAT TO DO + if(contents != null) + { + // OPTIONAL: REMOVE OLD `id`'s WITH POTENTIALLY MULTIPLY DATA + if(false) + { + // OPTIONAL: RESTORE DATA THAT SHOULDN'T BE REMOVED + } + // OPTIONAL: INSERT NEW DATA THAT SHOULD BE ADDED + if(false) + { + + } + } + + // COMMIT CHANGES AND UNLOCK TABLE + rscp.connection.transactionCommit(); + rscp.connection.unlockAllTables(); + + // CALL PLUGIN TO APPLY ALL THIS CHANGES + rscp.commandHelper.threadFetchDatabaseContents.run(); + } +} diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java index 17eda3d..c714949 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java @@ -221,6 +221,7 @@ public class InternalCache processPermissions(params, applicablePermissions); result.permissions = params.finalPerms; result.groups = params.groupList; + result.params = params; return result; } private ResolutionResult resolveParent(ResolutionParams params) diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java b/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java index 5b4c712..3130a22 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java @@ -11,6 +11,7 @@ public class ResolutionResult { public String prefix = ""; public String suffix = ""; + public ResolutionParams params; public Map permissions; protected List groups; public boolean hasPermission(String permission) diff --git a/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java b/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java index d7ef53c..366f06e 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java +++ b/src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java @@ -1,19 +1,19 @@ package ru.simsonic.rscPermissions.Sponge.Commands; -import org.spongepowered.api.text.Texts; -import org.spongepowered.api.util.command.CommandException; -import org.spongepowered.api.util.command.CommandResult; -import org.spongepowered.api.util.command.CommandSource; -import org.spongepowered.api.util.command.args.CommandContext; -import org.spongepowered.api.util.command.spec.CommandExecutor; -import org.spongepowered.api.util.command.spec.CommandSpec; +import org.spongepowered.api.command.spec.CommandExecutor; +import org.spongepowered.api.command.CommandException; +import org.spongepowered.api.command.CommandResult; +import org.spongepowered.api.command.CommandSource; +import org.spongepowered.api.command.args.CommandContext; +import org.spongepowered.api.command.spec.CommandSpec; +import org.spongepowered.api.text.Text; public class SpongeCommands implements CommandExecutor { private final CommandSpec commandHub = CommandSpec.builder() - .setDescription(Texts.of("Hello World Command")) - .setPermission("myplugin.command.helloworld") - .setExecutor(this) + .description(Text.of("Hello World Command")) + .permission("myplugin.command.helloworld") + .executor(this) .build(); public SpongeCommands() { @@ -22,7 +22,7 @@ public class SpongeCommands implements CommandExecutor @Override public CommandResult execute(CommandSource src, CommandContext context) throws CommandException { - src.sendMessage(Texts.of("Hello rscp's World!")); + src.sendMessage(Text.of("Hello rscp's World!")); return CommandResult.success(); } } diff --git a/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java b/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java index bd6753d..eb459f4 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java +++ b/src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java @@ -1,21 +1,25 @@ package ru.simsonic.rscPermissions.Sponge; +import java.util.Collection; import java.util.Map; +import java.util.Optional; import org.slf4j.Logger; +import org.spongepowered.api.service.context.ContextCalculator; +import org.spongepowered.api.service.permission.PermissionDescription; import org.spongepowered.api.service.permission.PermissionService; +import org.spongepowered.api.service.permission.Subject; import org.spongepowered.api.service.permission.SubjectCollection; import org.spongepowered.api.service.permission.SubjectData; -import org.spongepowered.api.service.permission.context.ContextCalculator; import ru.simsonic.rscPermissions.SpongePluginMain; public class SpongePermissionManager implements PermissionService { private final SpongePluginMain rscp; - private final Logger logger; + // private final Logger logger; public SpongePermissionManager(SpongePluginMain plugin) { this.rscp = plugin; - this.logger = rscp.getLogger(); + // this.logger = rscp.getLogger(); } @Override public SubjectCollection getUserSubjects() @@ -43,7 +47,22 @@ public class SpongePermissionManager implements PermissionService throw new UnsupportedOperationException("Not supported yet."); } @Override - public void registerContextCalculator(ContextCalculator calculator) + public void registerContextCalculator(ContextCalculator cc) + { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public Optional newDescriptionBuilder(Object o) + { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public Optional getDescription(String string) + { + throw new UnsupportedOperationException("Not supported yet."); + } + @Override + public Collection getDescriptions() { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java b/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java index 382cb0b..1be9c27 100644 --- a/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java +++ b/src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java @@ -3,13 +3,15 @@ package ru.simsonic.rscPermissions; import com.google.inject.Inject; import java.io.File; import org.slf4j.Logger; +/* import org.spongepowered.api.Game; import org.spongepowered.api.event.Subscribe; -import org.spongepowered.api.event.state.ServerAboutToStartEvent; +import org.spongepowered.api.event.sstate.ServerAboutToStartEvent; import org.spongepowered.api.event.state.ServerStartedEvent; import org.spongepowered.api.event.state.ServerStartingEvent; import org.spongepowered.api.event.state.ServerStoppedEvent; import org.spongepowered.api.event.state.ServerStoppingEvent; +*/ import org.spongepowered.api.plugin.Plugin; import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase; @@ -20,15 +22,18 @@ import ru.simsonic.rscPermissions.Sponge.SpongePluginConfiguration; // Documentation for Sponge: https://docs.spongepowered.org/ru/index.html -@Plugin(id = "rscPermissions", name = "rscPermissions", version = "0.9.16b") +@Plugin(id = "rscPermissions", name = "rscPermissions", version = "0.10.0b") public class SpongePluginMain { + /* private final Logger logger; + */ private final Settings settings = new SpongePluginConfiguration(this); private final SpongePermissionManager permissionManager = new SpongePermissionManager(this); public final BackendJson localStorage = new BackendJson(new File("")); public final BackendDatabase connection = new BackendDatabase(null); public final InternalCache internalCache = new InternalCache(); + /* @Inject private Game game; @Inject @@ -66,4 +71,5 @@ public class SpongePluginMain { logger.info("onServerStopped"); } + */ }