The beginning

This commit is contained in:
Esophose 2019-03-25 13:40:56 -06:00
parent 0aad72bc2c
commit cece22e247
7 changed files with 79 additions and 28 deletions

View File

@ -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<String> validWorlds = new HashSet<>();
private List<UUID> 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;
}
}

View File

@ -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<ItemStack> getBlockDrops(Block block);
void applyToolDurability(Set<Block> blocks, ItemStack tool);
}

View File

@ -0,0 +1,7 @@
package com.songoda.ultimatetimber.adapter.current;
import com.songoda.ultimatetimber.adapter.VersionAdapter;
public class CurrentAdapter implements VersionAdapter {
}

View File

@ -0,0 +1,7 @@
package com.songoda.ultimatetimber.adapter.legacy;
import com.songoda.ultimatetimber.adapter.VersionAdapter;
public class LegacyAdapter implements VersionAdapter {
}

View File

@ -10,6 +10,6 @@ public interface TimberHook {
/**
* Applies the hook
*/
public void apply(Player player, HashSet<Block> treeBlocks) throws Exception;
void apply(Player player, HashSet<Block> treeBlocks) throws Exception;
}

View File

@ -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(".", ""));
}
}

View File

@ -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