BeesPlus/src/main/java/com/tomff/beesplus/BeesPlus.java

159 lines
6.8 KiB
Java
Raw Normal View History

2020-05-04 12:47:38 +02:00
package com.tomff.beesplus;
import com.tomff.beesplus.core.UpdateChecker;
import com.tomff.beesplus.core.gui.GuiHandler;
import com.tomff.beesplus.core.gui.GuiViewTracker;
2020-05-04 12:47:38 +02:00
import com.tomff.beesplus.core.items.CustomItemManager;
2020-07-03 21:16:02 +02:00
import com.tomff.beesplus.core.migrations.AddFields;
import com.tomff.beesplus.core.migrations.Field;
import com.tomff.beesplus.core.migrations.MigrationsExecutor;
2020-07-03 16:23:40 +02:00
import com.tomff.beesplus.handlers.BeehiveHandler;
import com.tomff.beesplus.handlers.DamageHandler;
import com.tomff.beesplus.handlers.RightClickHandler;
import com.tomff.beesplus.items.*;
2020-05-04 12:47:38 +02:00
import com.tomff.beesplus.localization.Localization;
2022-06-20 19:25:08 +02:00
import com.tomff.beesplus.localization.LocalizationLoader;
2020-05-04 12:47:38 +02:00
import org.bstats.bukkit.Metrics;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.IOException;
import java.util.Locale;
public class BeesPlus extends JavaPlugin {
2022-06-20 19:25:08 +02:00
private static final int RESOURCE_ID = 77224;
private static final int PLUGIN_ID = 7065;
private GuiViewTracker guiViewTracker;
2020-05-04 12:47:38 +02:00
private CustomItemManager customItemManager;
@Override
public void onEnable() {
performMigrations();
2020-05-04 12:47:38 +02:00
saveDefaultConfig();
guiViewTracker = new GuiViewTracker();
customItemManager = new CustomItemManager(this);
getServer().getPluginManager().registerEvents(new GuiHandler(this), this);
2020-07-03 16:23:40 +02:00
getServer().getPluginManager().registerEvents(new BeehiveHandler(), this);
getServer().getPluginManager().registerEvents(new RightClickHandler(this), this);
if (!loadLocale()) {
getServer().getPluginManager().disablePlugin(this);
return;
}
registerItems();
2020-07-03 21:23:28 +02:00
setupMetrics();
2022-06-20 19:25:08 +02:00
setupUpdateChecker();
}
2020-05-04 12:47:38 +02:00
2022-06-20 19:25:08 +02:00
private void setupUpdateChecker() {
new UpdateChecker(this, RESOURCE_ID).getVersion(version -> {
if (!this.getDescription().getVersion().equalsIgnoreCase(version)) {
getLogger().info("A new update is available: BeesPlus " + version);
}
});
}
2020-07-03 21:23:28 +02:00
private void setupMetrics() {
2022-06-20 19:25:08 +02:00
Metrics metrics = new Metrics(this, PLUGIN_ID);
2020-07-03 21:23:28 +02:00
metrics.addCustomChart(new Metrics.SimplePie("language_used",
() -> getConfig().getString("locale", Locale.ENGLISH.toLanguageTag())));
}
@Override
public void onDisable() {
guiViewTracker.clearViews();
}
private boolean loadLocale() {
String locale = getConfig().getString("locale", Locale.ENGLISH.toLanguageTag());
2022-06-20 19:25:08 +02:00
LocalizationLoader localizationLoader = new LocalizationLoader(this, "locale");
2020-05-04 12:47:38 +02:00
try {
2022-06-20 19:25:08 +02:00
YamlConfiguration localeYamlFile = localizationLoader.load(locale);
2020-05-04 12:47:38 +02:00
Localization.load(localeYamlFile);
} catch (IOException e) {
getLogger().severe("Invalid locale! Please choose a valid locale.");
return false;
} catch (InvalidConfigurationException | IllegalArgumentException e) {
2020-05-04 12:47:38 +02:00
getLogger().severe(e.getMessage());
getLogger().severe("Locale file corrupted or malformed! Please check your locale file.");
return false;
2020-05-04 12:47:38 +02:00
}
return true;
}
2020-05-04 12:47:38 +02:00
private void performMigrations() {
MigrationsExecutor migrationsExecutor = new MigrationsExecutor(this);
2020-07-03 21:16:02 +02:00
Field[] beehiveUpgradeTranslation = new Field[] {
new Field("beehive_upgrade_item_name", "&6Beehive Upgrade"),
new Field("beehive_upgrade_item_lore", "&7Bee capacity: &a+3||&8(Right click to use)"),
new Field("beehive_upgrade_success", "&aBeehive upgraded! New population: &7%beesno%&a bees"),
new Field("beehive_upgrade_max", "&cError: This beehive has reached the maximum population allowed!")
};
migrationsExecutor.addMigration(1,
new AddFields("config.yml", new Field[] {
new Field("beehiveupgrade.maximumpopulation", 9)
}),
new AddFields("locale/en.yml", beehiveUpgradeTranslation),
new AddFields("locale/fr.yml", beehiveUpgradeTranslation),
2020-07-04 21:01:11 +02:00
new AddFields("locale/hu.yml", new Field[] {
new Field("beehive_upgrade_item_name", "&6Méhkas fejlesztés"),
new Field("beehive_upgrade_item_lore", "&7Méh kapacitás: &a+3||&8(Jobb klikk, hogy használd)"),
new Field("beehive_upgrade_success", "&aMéhkas felfejlesztve! Új populáció: &7%beesno%&a méh"),
new Field("beehive_upgrade_max", "&cHiba: Ez a méhkas elérte a megengedett maximum populációt!")
}),
2020-07-04 20:53:09 +02:00
new AddFields("locale/zh_cn.yml", new Field[] {
new Field("beehive_upgrade_item_name", "&6蜂巢升级"),
new Field("beehive_upgrade_item_lore", "&7蜜蜂容量: &a+3||&8(右键单击查看)"),
new Field("beehive_upgrade_success", "&a蜂巢升级! 新移入: &7%beesno%&a 蜜蜂"),
new Field("beehive_upgrade_max", "&c错误此蜂箱已达到允许的最大数量!")
}),
2020-07-03 21:16:02 +02:00
new AddFields("locale/pt.yml", new Field[] {
new Field("beehive_upgrade_item_name", "&6Melhorar Colmeia"),
new Field("beehive_upgrade_item_lore", "&7População de abelhas: &a+3||&8(Clique direito para usar)"),
new Field("beehive_upgrade_success", "&aColmeia melhorada! Nova população: &7%beesno%&a abelhas"),
new Field("beehive_upgrade_max", "&cErro: Esta colmeia atingiu a população máxima permitida!")
})
);
migrationsExecutor.migrate();
}
private void registerItems() {
2020-07-02 00:46:39 +02:00
BeeHiveUpgrade beeHiveUpgrade = new BeeHiveUpgrade(this);
customItemManager.registerCustomItem("honey_upgrade", beeHiveUpgrade);
getServer().getPluginManager().registerEvents(beeHiveUpgrade, this);
2020-05-04 12:47:38 +02:00
boolean isProtectionSuitEnabled = getConfig().getBoolean("beeprotectionsuit.enabled", true);
2022-06-20 19:25:08 +02:00
if (isProtectionSuitEnabled) {
2020-05-04 12:47:38 +02:00
customItemManager.registerCustomItem("protection_boots", new BeeProtectionBoots());
customItemManager.registerCustomItem("protection_leggings", new BeeProtectionLeggings());
customItemManager.registerCustomItem("protection_chestplate", new BeeProtectionChestplate());
customItemManager.registerCustomItem("protection_helmet", new BeeProtectionHelmet());
getServer().getPluginManager().registerEvents(new DamageHandler(this), this);
}
}
public GuiViewTracker getGuiViewTracker() {
return guiViewTracker;
2020-05-04 12:47:38 +02:00
}
public CustomItemManager getCustomItemManager() {
return customItemManager;
}
2020-07-03 21:16:02 +02:00
}