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

149 lines
5.1 KiB
Java
Raw Normal View History

2018-11-04 00:33:37 +01:00
package com.songoda.ultimatetimber;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;
2019-03-06 05:06:38 +01:00
import com.songoda.ultimatetimber.utils.Metrics;
import org.bukkit.Bukkit;
2018-12-18 15:12:26 +01:00
import org.bukkit.ChatColor;
import org.bukkit.World;
2018-11-05 23:41:25 +01:00
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
2019-02-06 07:38:37 +01:00
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import com.songoda.ultimatetimber.commands.CommandHandler;
import com.songoda.ultimatetimber.configurations.DefaultConfig;
2019-02-16 08:16:54 +01:00
import com.songoda.ultimatetimber.hooks.HookManager;
import com.songoda.ultimatetimber.treefall.CustomLoot;
import com.songoda.ultimatetimber.treefall.TreeFallAnimation;
import com.songoda.ultimatetimber.treefall.TreeFallListener;
import com.songoda.ultimatetimber.utils.Methods;
/*
Note: In this plugin, I have called the act of a tree falling over with pseudo-physics "toppling over". This is reflected
in the documentation, config files and variable names.
PS: MagmaGuy was here
*/
2018-11-04 00:33:37 +01:00
public class UltimateTimber extends JavaPlugin {
private final static CommandSender console = Bukkit.getConsoleSender();
2018-11-05 23:41:25 +01:00
private static UltimateTimber INSTANCE;
2018-12-19 18:58:05 +01:00
private final String prefix = "&8[&6UltimateTimber&8]";
private Set<String> validWorlds;
2019-02-06 07:38:37 +01:00
private List<UUID> isNotChopping = new ArrayList<>();
2018-12-19 18:58:05 +01:00
public static UltimateTimber getInstance() {
return INSTANCE;
}
@Override
public void onEnable() {
2018-12-18 15:12:26 +01:00
if (!checkVersion()) return;
2018-11-05 23:41:25 +01:00
INSTANCE = this;
2018-12-18 15:12:26 +01:00
2018-11-05 23:41:25 +01:00
console.sendMessage(Methods.formatText("&a============================="));
2019-02-06 07:38:37 +01:00
console.sendMessage(Methods.formatText("&7" + this.getDescription().getName() + " " + this.getDescription().getVersion() + " by &5Songoda <3&7!"));
2018-11-05 23:41:25 +01:00
console.sendMessage(Methods.formatText("&7Action: &aEnabling&7..."));
/*
Register the main event that handles toppling down trees
*/
2019-01-19 07:35:05 +01:00
Bukkit.getServer().getPluginManager().registerEvents(new TreeFallListener(), this);
/*
Prevent falling blocks from forming new blocks on the floor
*/
Bukkit.getServer().getPluginManager().registerEvents(new TreeFallAnimation(), this);
/*
Initialize config
*/
DefaultConfig.initialize();
/*
Initialize custom loot
*/
CustomLoot.initializeCustomItems();
/*
Cache valid world names for later use
*/
this.reloadValidWorlds();
2019-02-11 05:50:07 +01:00
/*
2019-02-16 08:16:54 +01:00
Hook into supported plugins
2019-02-11 05:50:07 +01:00
*/
2019-02-16 08:16:54 +01:00
HookManager.getInstance().hook();
/*
Register command executor and tab completer
*/
PluginCommand ultimatetimber = this.getCommand("ultimatetimber");
CommandHandler commandHandler = new CommandHandler();
ultimatetimber.setExecutor(commandHandler);
ultimatetimber.setTabCompleter(commandHandler);
2019-03-06 05:06:38 +01:00
new Metrics(this);
2018-11-05 23:41:25 +01:00
console.sendMessage(Methods.formatText("&a============================="));
}
@Override
public void onDisable() {
console.sendMessage(Methods.formatText("&a============================="));
console.sendMessage(Methods.formatText("&7" + this.getDescription().getName() + " " + this.getDescription().getVersion() + " by &5Songoda <3&7!"));
console.sendMessage(Methods.formatText("&7Action: &cDisabling&7..."));
this.validWorlds.clear();
this.isNotChopping.clear();
console.sendMessage(Methods.formatText("&a============================="));
}
public void reloadValidWorlds() {
this.validWorlds = this.getConfig().getConfigurationSection(DefaultConfig.VALID_WORLDS).getKeys(false);
2018-11-05 23:41:25 +01:00
}
public boolean isWorldValid(World world) {
return this.validWorlds.contains(world.getName());
}
2018-11-05 23:41:25 +01:00
public String getPrefix() {
return prefix;
}
2018-12-19 18:58:05 +01:00
2018-12-18 15:12:26 +01:00
private boolean checkVersion() {
int workingVersion = 13;
int currentVersion = Integer.parseInt(Bukkit.getServer().getClass()
.getPackage().getName().split("\\.")[3].split("_")[1]);
if (currentVersion < workingVersion) {
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
console.sendMessage("");
console.sendMessage(String.format("%sYou installed the 1.%s only version of %s on a 1.%s server. Since you are on the wrong version we disabled the plugin for you. Please install correct version to continue using %s.", ChatColor.RED, workingVersion, this.getDescription().getName(), currentVersion, this.getDescription().getName()));
console.sendMessage("");
2018-12-18 15:12:26 +01:00
}, 20L);
return false;
}
return true;
}
2019-02-06 07:38:37 +01:00
public boolean toggleChopping(Player player) {
boolean removed = this.isNotChopping.remove(player.getUniqueId());
if (!removed)
this.isNotChopping.add(player.getUniqueId());
return removed;
2019-02-06 07:38:37 +01:00
}
public boolean isChopping(Player player) {
return !this.isNotChopping.contains(player.getUniqueId());
2019-02-06 07:38:37 +01:00
}
}