VillagerTradeLimiter/src/com/pretzel/dev/villagertradelimiter/VillagerTradeLimiter.java

96 lines
3.8 KiB
Java

package com.pretzel.dev.villagertradelimiter;
import com.pretzel.dev.villagertradelimiter.lib.CommandBase;
import com.pretzel.dev.villagertradelimiter.lib.ConfigUpdater;
import com.pretzel.dev.villagertradelimiter.lib.Metrics;
import com.pretzel.dev.villagertradelimiter.lib.Util;
import com.pretzel.dev.villagertradelimiter.listeners.PlayerListener;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
public class VillagerTradeLimiter extends JavaPlugin {
public static final String PLUGIN_NAME = "VillagerTradeLimiter";
public static final String PREFIX = ChatColor.GOLD+"["+PLUGIN_NAME+"] ";
//Settings
private FileConfiguration cfg;
//Initial plugin load/unload
public void onEnable() {
//Initialize instance variables
this.cfg = null;
//Copy default settings & load settings
this.getConfig().options().copyDefaults();
this.saveDefaultConfig();
this.loadSettings();
this.loadBStats();
//Register commands and listeners
this.registerCommands();
this.registerListeners();
//Send enabled message
Util.consoleMsg(PREFIX+PLUGIN_NAME+" is running!");
}
//Loads or reloads config.yml settings
public void loadSettings() {
//Load config.yml
final String mainPath = this.getDataFolder().getPath()+"/";
final File file = new File(mainPath, "config.yml");
try {
ConfigUpdater.update(this, "config.yml", file, Collections.singletonList("Overrides"));
} catch (IOException e) {
Util.errorMsg(e);
}
this.cfg = YamlConfiguration.loadConfiguration(file);
}
private void loadBStats() {
if(this.cfg.getBoolean("bStats", true)) new Metrics(this, 9829);
}
//Registers plugin commands
private void registerCommands() {
final String reloaded = Util.replaceColors("&eVillagerTradeLimiter &ahas been reloaded!");
final CommandBase vtl = new CommandBase("villagertradelimiter", "villagertradelimiter.use", (p,args) -> this.help(p));
vtl.addSub(new CommandBase("reload", "villagertradelimiter.reload", (p,args) -> {
loadSettings();
Util.sendMsg(reloaded, p);
}));
this.getCommand("villagertradelimiter").setExecutor(vtl);
this.getCommand("villagertradelimiter").setTabCompleter(vtl);
}
//Registers plugin listeners
private void registerListeners() {
this.getServer().getPluginManager().registerEvents(new PlayerListener(this), this);
}
// ------------------------- Commands -------------------------
private void help(final Player p) {
if(p != null) {
if(!p.hasPermission("villagertradelimiter.use") && !p.hasPermission("villagertradelimiter.*")) return;
p.sendMessage(ChatColor.GREEN+"VillagerTradeLimiter commands:");
p.sendMessage(ChatColor.AQUA+"/vtl "+ChatColor.WHITE+"- shows this help message");
Util.sendIfPermitted("villagertradelimiter.reload", ChatColor.AQUA+"/vtl reload "+ChatColor.WHITE+"- reloads config.yml", p);
} else {
Util.consoleMsg(ChatColor.GREEN+"VillagerTradeLimiter commands:");
Util.consoleMsg(ChatColor.AQUA+"/vtl "+ChatColor.WHITE+"- shows this help message");
Util.consoleMsg(ChatColor.AQUA+"/vtl reload "+ChatColor.WHITE+"- reloads config.yml");
}
}
// ------------------------- Getters -------------------------
//Returns the settings from config.yml
public FileConfiguration getCfg() { return this.cfg; }
}