Files
PreventStabby/src/main/java/eu/endermite/togglepvp/TogglePvp.java
T
2021-02-21 04:22:49 +01:00

89 lines
3.2 KiB
Java

package eu.endermite.togglepvp;
import eu.endermite.togglepvp.commands.MainCommand;
import eu.endermite.togglepvp.config.ConfigCache;
import eu.endermite.togglepvp.players.PlayerManager;
import eu.endermite.togglepvp.players.SmartCache;
import eu.endermite.togglepvp.util.Listener;
import eu.endermite.togglepvp.util.DatabaseSQLite;
import lombok.Getter;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import org.reflections.Reflections;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.Objects;
import java.util.Set;
public final class TogglePvp extends JavaPlugin {
@Getter private static TogglePvp plugin;
private ConfigCache configCache;
private PlayerManager playerManager;
private DatabaseSQLite sqLite;
private SmartCache smartCache;
@Override
public void onEnable() {
plugin = this;
reloadPluginConfig();
File dbFile = new File("plugins/TogglePvP");
sqLite = new DatabaseSQLite("jdbc:sqlite:plugins/TogglePvP/TogglePvP.db", dbFile);
sqLite.createDatabaseFile();
if (!sqLite.testConnection()) {
getLogger().severe("Error with accessing database. Check if server has write rights.");
getLogger().severe("Plugin will now disable.");
getServer().getPluginManager().disablePlugin(this);
return;
}
playerManager = new PlayerManager();
smartCache = new SmartCache();
smartCache.runSmartCache();
// Register listeners
Reflections reflections = new Reflections(new String[]{"eu.endermite.togglepvp"});
Set<Class<?>> listenerClasses = reflections.getTypesAnnotatedWith(Listener.class);
listenerClasses.forEach((listener)-> {
try {
getServer().getPluginManager().registerEvents((org.bukkit.event.Listener) listener.getConstructor().newInstance(), this);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
e.printStackTrace();
getLogger().severe("Error with registering listeners.");
getLogger().severe("Plugin will now disable.");
getServer().getPluginManager().disablePlugin(this);
}
});
// Register command
Objects.requireNonNull(getCommand("pvp")).setExecutor(new MainCommand());
Objects.requireNonNull(getCommand("pvp")).setTabCompleter(new MainCommand());
}
public void reloadPluginConfig() {
saveDefaultConfig();
reloadConfig();
configCache = new ConfigCache();
}
public void reloadPluginConfig(CommandSender commandSender) {
getServer().getScheduler().runTaskAsynchronously(this, () -> {
reloadPluginConfig();
commandSender.sendMessage("TogglePvP configuration reloaded.");
});
}
public ConfigCache getConfigCache() {
return configCache;
}
public PlayerManager getPlayerManager() {
return playerManager;
}
public DatabaseSQLite getSqLite() {return sqLite;}
public SmartCache getSmartCache() {
return smartCache;
}
}