From cece22e24793174df00632caa13aeb97075811c4 Mon Sep 17 00:00:00 2001 From: Esophose Date: Mon, 25 Mar 2019 13:40:56 -0600 Subject: [PATCH] The beginning --- .../ultimatetimber/UltimateTimber.java | 53 ++++++++++--------- .../adapter/VersionAdapter.java | 14 +++++ .../adapter/current/CurrentAdapter.java | 7 +++ .../adapter/legacy/LegacyAdapter.java | 7 +++ .../ultimatetimber/hooks/TimberHook.java | 2 +- .../songoda/ultimatetimber/utils/NMSUtil.java | 22 ++++++++ src/main/resources/plugin.yml | 2 +- 7 files changed, 79 insertions(+), 28 deletions(-) create mode 100644 src/main/java/com/songoda/ultimatetimber/adapter/VersionAdapter.java create mode 100644 src/main/java/com/songoda/ultimatetimber/adapter/current/CurrentAdapter.java create mode 100644 src/main/java/com/songoda/ultimatetimber/adapter/legacy/LegacyAdapter.java create mode 100644 src/main/java/com/songoda/ultimatetimber/utils/NMSUtil.java diff --git a/src/main/java/com/songoda/ultimatetimber/UltimateTimber.java b/src/main/java/com/songoda/ultimatetimber/UltimateTimber.java index f4efbe2..d9c184c 100644 --- a/src/main/java/com/songoda/ultimatetimber/UltimateTimber.java +++ b/src/main/java/com/songoda/ultimatetimber/UltimateTimber.java @@ -2,7 +2,11 @@ package com.songoda.ultimatetimber; import java.util.*; +import com.songoda.ultimatetimber.adapter.VersionAdapter; +import com.songoda.ultimatetimber.adapter.current.CurrentAdapter; +import com.songoda.ultimatetimber.adapter.legacy.LegacyAdapter; import com.songoda.ultimatetimber.utils.Metrics; +import com.songoda.ultimatetimber.utils.NMSUtil; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.World; @@ -19,18 +23,13 @@ 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 - */ - public class UltimateTimber extends JavaPlugin { - - private final static CommandSender console = Bukkit.getConsoleSender(); + + private static final String prefix = "&8[&6UltimateTimber&8]"; + private static final CommandSender console = Bukkit.getConsoleSender(); private static UltimateTimber INSTANCE; - private final String prefix = "&8[&6UltimateTimber&8]"; + private VersionAdapter adapter; private Set validWorlds = new HashSet<>(); private List isNotChopping = new ArrayList<>(); @@ -40,14 +39,17 @@ public class UltimateTimber extends JavaPlugin { @Override public void onEnable() { - - if (!checkVersion()) return; - INSTANCE = this; 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: &aEnabling&7...")); + + /* + Set up version adapter + */ + this.setupAdapter(); + /* Register the main event that handles toppling down trees */ @@ -85,7 +87,10 @@ public class UltimateTimber extends JavaPlugin { CommandHandler commandHandler = new CommandHandler(); ultimatetimber.setExecutor(commandHandler); ultimatetimber.setTabCompleter(commandHandler); - + + /* + Set up metrics + */ new Metrics(this); console.sendMessage(Methods.formatText("&a=============================")); @@ -115,20 +120,12 @@ public class UltimateTimber extends JavaPlugin { return prefix; } - 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(""); - }, 20L); - return false; + private void setupAdapter() { + if (NMSUtil.getVersionNumber() > 12) { + this.adapter = new CurrentAdapter(); + } else { + this.adapter = new LegacyAdapter(); } - return true; } public boolean toggleChopping(Player player) { @@ -142,4 +139,8 @@ public class UltimateTimber extends JavaPlugin { return !this.isNotChopping.contains(player.getUniqueId()); } + public VersionAdapter getAdapter() { + return this.adapter; + } + } diff --git a/src/main/java/com/songoda/ultimatetimber/adapter/VersionAdapter.java b/src/main/java/com/songoda/ultimatetimber/adapter/VersionAdapter.java new file mode 100644 index 0000000..19ad92d --- /dev/null +++ b/src/main/java/com/songoda/ultimatetimber/adapter/VersionAdapter.java @@ -0,0 +1,14 @@ +package com.songoda.ultimatetimber.adapter; + +import jdk.nashorn.internal.ir.Block; +import org.bukkit.inventory.ItemStack; + +import java.util.Set; + +public interface VersionAdapter { + + Set getBlockDrops(Block block); + + void applyToolDurability(Set blocks, ItemStack tool); + +} diff --git a/src/main/java/com/songoda/ultimatetimber/adapter/current/CurrentAdapter.java b/src/main/java/com/songoda/ultimatetimber/adapter/current/CurrentAdapter.java new file mode 100644 index 0000000..1ce928a --- /dev/null +++ b/src/main/java/com/songoda/ultimatetimber/adapter/current/CurrentAdapter.java @@ -0,0 +1,7 @@ +package com.songoda.ultimatetimber.adapter.current; + +import com.songoda.ultimatetimber.adapter.VersionAdapter; + +public class CurrentAdapter implements VersionAdapter { + +} diff --git a/src/main/java/com/songoda/ultimatetimber/adapter/legacy/LegacyAdapter.java b/src/main/java/com/songoda/ultimatetimber/adapter/legacy/LegacyAdapter.java new file mode 100644 index 0000000..70757e8 --- /dev/null +++ b/src/main/java/com/songoda/ultimatetimber/adapter/legacy/LegacyAdapter.java @@ -0,0 +1,7 @@ +package com.songoda.ultimatetimber.adapter.legacy; + +import com.songoda.ultimatetimber.adapter.VersionAdapter; + +public class LegacyAdapter implements VersionAdapter { + +} diff --git a/src/main/java/com/songoda/ultimatetimber/hooks/TimberHook.java b/src/main/java/com/songoda/ultimatetimber/hooks/TimberHook.java index e63e400..b9db1d6 100644 --- a/src/main/java/com/songoda/ultimatetimber/hooks/TimberHook.java +++ b/src/main/java/com/songoda/ultimatetimber/hooks/TimberHook.java @@ -10,6 +10,6 @@ public interface TimberHook { /** * Applies the hook */ - public void apply(Player player, HashSet treeBlocks) throws Exception; + void apply(Player player, HashSet treeBlocks) throws Exception; } diff --git a/src/main/java/com/songoda/ultimatetimber/utils/NMSUtil.java b/src/main/java/com/songoda/ultimatetimber/utils/NMSUtil.java new file mode 100644 index 0000000..68f6d1a --- /dev/null +++ b/src/main/java/com/songoda/ultimatetimber/utils/NMSUtil.java @@ -0,0 +1,22 @@ +package com.songoda.ultimatetimber.utils; + +import org.bukkit.Bukkit; + +public class NMSUtil { + + public static String getVersion() { + String name = Bukkit.getServer().getClass().getPackage().getName(); + return name.substring(name.lastIndexOf('.') + 1) + "."; + } + + public static int getVersionNumber() { + String name = getVersion().substring(3); + return Integer.valueOf(name.substring(0, name.length() - 4)); + } + + public static int getVersionReleaseNumber() { + String NMSVersion = getVersion(); + return Integer.valueOf(NMSVersion.substring(NMSVersion.length() - 2).replace(".", "")); + } + +} \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c5bf47d..f42111c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ version: maven-version-number author: Songoda main: com.songoda.ultimatetimber.UltimateTimber api-version: 1.13 -softdepend: [Multiverse-Core, mcMMO, Jobs] +softdepend: [mcMMO, Jobs] commands: ultimatetimber: description: Reloads the configuration file