Adds Vault integration

Adds the EconomyManager class for handling Vault payments
Adds the unfinished PermissionManager class for granting permissions through Vault
Adds the GPLv3 license
Fixes dependencies
Adds some code for withdrawing money and granting permissions when a sign is clicked
Changes cost to a double to be compliant with Vault
This commit is contained in:
2022-01-14 10:30:44 +01:00
parent 71e932bf40
commit 52b033c005
10 changed files with 318 additions and 46 deletions

View File

@ -5,11 +5,17 @@ import net.knarcraft.permissionsigns.command.PermissionSignsTabCompleter;
import net.knarcraft.permissionsigns.container.PermissionSign;
import net.knarcraft.permissionsigns.container.SignCreationRequest;
import net.knarcraft.permissionsigns.formatting.Translator;
import net.knarcraft.permissionsigns.manager.EconomyManager;
import net.knarcraft.permissionsigns.manager.PermissionManager;
import net.knarcraft.permissionsigns.thread.SignCreationRequestTimeoutThread;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.ServicesManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;
@ -126,12 +132,28 @@ public final class PermissionSigns extends JavaPlugin {
//player.addAttachment(this, "essentials.fly", true, seconds * 20);
//Vault probably has some API to add permissions
//TODO: Store all temporary permissions with the time they were assigned and the time they should be granted.
// Set the permissions as permanent and remove when the timer expires? Might cause problems for players that has
// the permission inherited, unless we make sure the player does not have the permission before
// Alternatively: Manage all permissions ourselves, for temporary permissions, and add permission attachments
// on startup I guess.
//TODO: Start sign creation when the create command is used and save the data until an empty sign is right-clicked
//TODO: Check for existence of old permission signs when clicked and register them as new permission signs. If
// it has the permissionSigns header and a name matching contents in signs.yml, add it.
//Check if vault is loaded
ServicesManager servicesManager = this.getServer().getServicesManager();
RegisteredServiceProvider<Permission> permissionProvider = servicesManager.getRegistration(Permission.class);
RegisteredServiceProvider<Economy> economyProvider = servicesManager.getRegistration(Economy.class);
if (permissionProvider != null && economyProvider != null) {
EconomyManager.initialize(economyProvider.getProvider());
PermissionManager.initialize(permissionProvider.getProvider());
} else {
throw new IllegalStateException("[PermissionSigns] Error: Vault could not be loaded");
}
Translator.loadLanguages("en");
registerCommands();
BukkitScheduler scheduler = Bukkit.getScheduler();