UltimateTimber/src/main/java/com/craftaro/ultimatetimber/UltimateTimber.java

159 lines
5.1 KiB
Java
Raw Normal View History

package com.craftaro.ultimatetimber;
import com.craftaro.core.SongodaCore;
import com.craftaro.core.SongodaPlugin;
import com.craftaro.core.commands.CommandManager;
import com.craftaro.core.configuration.Config;
2024-01-11 11:53:50 +01:00
import com.craftaro.core.dependency.Dependency;
import com.craftaro.core.hooks.LogManager;
2024-01-11 11:53:50 +01:00
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.ultimatetimber.commands.CommandGiveAxe;
import com.craftaro.ultimatetimber.commands.CommandReload;
import com.craftaro.ultimatetimber.commands.CommandToggle;
import com.craftaro.ultimatetimber.manager.PlacedBlockManager;
import com.craftaro.ultimatetimber.manager.TreeDetectionManager;
import com.craftaro.ultimatetimber.manager.ChoppingManager;
import com.craftaro.ultimatetimber.manager.ConfigurationManager;
import com.craftaro.ultimatetimber.manager.Manager;
import com.craftaro.ultimatetimber.manager.SaplingManager;
import com.craftaro.ultimatetimber.manager.TreeAnimationManager;
import com.craftaro.ultimatetimber.manager.TreeDefinitionManager;
import com.craftaro.ultimatetimber.manager.TreeFallManager;
import java.util.Collections;
2019-03-28 05:22:13 +01:00
import java.util.HashSet;
import java.util.List;
2019-03-28 05:22:13 +01:00
import java.util.Set;
public class UltimateTimber extends SongodaPlugin {
private final Set<Manager> managers = new HashSet<>();
2019-03-28 05:22:13 +01:00
private ChoppingManager choppingManager;
2019-03-28 01:56:39 +01:00
private ConfigurationManager configurationManager;
private PlacedBlockManager placedBlockManager;
private SaplingManager saplingManager;
2019-03-28 01:56:39 +01:00
private TreeAnimationManager treeAnimationManager;
private TreeDefinitionManager treeDefinitionManager;
2019-03-28 05:22:13 +01:00
private TreeDetectionManager treeDetectionManager;
2019-03-28 01:56:39 +01:00
private TreeFallManager treeFallManager;
/**
* @deprecated Use {@link #getPlugin(Class)} instead
*/
@Deprecated
2018-12-19 18:58:05 +01:00
public static UltimateTimber getInstance() {
return getPlugin(UltimateTimber.class);
2018-12-19 18:58:05 +01:00
}
2024-01-11 11:53:50 +01:00
@Override
protected Set<Dependency> getDependencies() {
return new HashSet<>();
}
@Override
public void onPluginLoad() {
}
2018-12-18 15:12:26 +01:00
@Override
public void onPluginEnable() {
// Run Songoda Updater
SongodaCore.registerPlugin(this, 18, XMaterial.IRON_AXE);
2019-05-02 04:17:06 +02:00
2020-08-29 00:54:47 +02:00
// Load hooks
LogManager.load();
2020-06-29 02:18:23 +02:00
// Setup plugin commands
CommandManager commandManager = new CommandManager(this);
commandManager.addMainCommand("ut")
.addSubCommands(
new CommandReload(this),
new CommandToggle(this),
new CommandGiveAxe(this)
2020-06-29 02:18:23 +02:00
);
2019-05-02 04:17:06 +02:00
// Register managers
this.choppingManager = this.registerManager(ChoppingManager.class);
2019-03-28 18:38:37 +01:00
this.configurationManager = new ConfigurationManager(this);
this.placedBlockManager = this.registerManager(PlacedBlockManager.class);
this.saplingManager = this.registerManager(SaplingManager.class);
2019-03-28 05:22:13 +01:00
this.treeAnimationManager = this.registerManager(TreeAnimationManager.class);
this.treeDefinitionManager = this.registerManager(TreeDefinitionManager.class);
this.treeDetectionManager = this.registerManager(TreeDetectionManager.class);
this.treeFallManager = this.registerManager(TreeFallManager.class);
2019-03-28 01:56:39 +01:00
2020-06-29 02:18:23 +02:00
this.reloadConfig();
}
@Override
public void onPluginDisable() {
this.configurationManager.disable();
this.managers.forEach(Manager::disable);
}
2020-08-29 00:54:47 +02:00
@Override
public void onDataLoad() {
}
@Override
public void onConfigReload() {
2020-06-29 02:18:23 +02:00
this.configurationManager.reload();
this.managers.forEach(Manager::reload);
this.setLocale(getConfig().getString("locale"), true);
}
@Override
public List<Config> getExtraConfig() {
return Collections.emptyList();
2018-11-05 23:41:25 +01:00
}
2018-12-19 18:58:05 +01:00
2019-03-28 05:22:13 +01:00
/**
* Registers a manager
*
* @param managerClass The class of the manager to create a new instance of
2020-06-29 02:18:23 +02:00
* @param <T> extends Manager
2019-03-28 05:22:13 +01:00
* @return A new instance of the given manager class
*/
private <T extends Manager> T registerManager(Class<T> managerClass) {
try {
T newManager = managerClass.getConstructor(UltimateTimber.class).newInstance(this);
this.managers.add(newManager);
return newManager;
2019-03-28 18:38:37 +01:00
} catch (Exception ex) {
ex.printStackTrace();
2019-03-28 05:22:13 +01:00
return null;
}
}
public ChoppingManager getChoppingManager() {
return this.choppingManager;
}
public ConfigurationManager getConfigurationManager() {
return this.configurationManager;
2019-03-28 01:56:39 +01:00
}
public PlacedBlockManager getPlacedBlockManager() {
return this.placedBlockManager;
}
public SaplingManager getSaplingManager() {
return this.saplingManager;
2019-03-28 01:56:39 +01:00
}
public TreeAnimationManager getTreeAnimationManager() {
return this.treeAnimationManager;
2019-02-06 07:38:37 +01:00
}
2019-03-28 01:56:39 +01:00
public TreeDefinitionManager getTreeDefinitionManager() {
return this.treeDefinitionManager;
2019-02-06 07:38:37 +01:00
}
2019-03-28 05:22:13 +01:00
public TreeDetectionManager getTreeDetectionManager() {
return this.treeDetectionManager;
2019-03-28 05:22:13 +01:00
}
2019-03-28 01:56:39 +01:00
public TreeFallManager getTreeFallManager() {
return this.treeFallManager;
2019-03-25 20:40:56 +01:00
}
}