2018-11-04 00:33:37 +01:00
package com.songoda.ultimatetimber ;
2018-11-03 21:49:10 +01:00
2019-02-07 04:37:16 +01:00
import java.util.ArrayList ;
import java.util.List ;
import java.util.Set ;
import java.util.UUID ;
2018-11-03 21:49:10 +01:00
import org.bukkit.Bukkit ;
2018-12-18 15:12:26 +01:00
import org.bukkit.ChatColor ;
2018-11-05 05:15:18 +01:00
import org.bukkit.World ;
2018-11-05 23:41:25 +01:00
import org.bukkit.command.CommandSender ;
2019-02-07 04:37:16 +01:00
import org.bukkit.command.PluginCommand ;
2019-02-06 07:38:37 +01:00
import org.bukkit.entity.Player ;
2018-11-03 21:49:10 +01:00
import org.bukkit.plugin.java.JavaPlugin ;
2019-02-07 04:37:16 +01:00
import com.songoda.ultimatetimber.commands.CommandHandler ;
import com.songoda.ultimatetimber.configurations.DefaultConfig ;
2019-02-11 05:50:07 +01:00
import com.songoda.ultimatetimber.hooks.McMMOHook ;
2019-02-07 04:37:16 +01:00
import com.songoda.ultimatetimber.treefall.CustomLoot ;
import com.songoda.ultimatetimber.treefall.TreeFallAnimation ;
import com.songoda.ultimatetimber.treefall.TreeFallListener ;
import com.songoda.ultimatetimber.utils.Methods ;
2018-11-05 05:15:18 +01:00
2018-11-03 21:49:10 +01:00
/ *
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 {
2019-02-07 04:37:16 +01:00
private final static CommandSender console = Bukkit . getConsoleSender ( ) ;
2018-11-05 23:41:25 +01:00
private static UltimateTimber INSTANCE ;
2019-02-07 04:37:16 +01:00
2018-12-19 18:58:05 +01:00
private final String prefix = " &8[&6UltimateTimber&8] " ;
2019-02-07 04:37:16 +01:00
private Set < String > validWorlds ;
2019-02-06 07:38:37 +01:00
private List < UUID > isNotChopping = new ArrayList < > ( ) ;
2018-11-03 21:49:10 +01:00
2018-12-19 18:58:05 +01:00
public static UltimateTimber getInstance ( ) {
return INSTANCE ;
}
2018-11-03 21:49:10 +01:00
@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... " ) ) ;
2018-11-03 21:49:10 +01:00
/ *
Register the main event that handles toppling down trees
* /
2019-01-19 07:35:05 +01:00
Bukkit . getServer ( ) . getPluginManager ( ) . registerEvents ( new TreeFallListener ( ) , this ) ;
2018-11-03 21:49:10 +01:00
2018-11-06 21:18:16 +01:00
/ *
Prevent falling blocks from forming new blocks on the floor
* /
Bukkit . getServer ( ) . getPluginManager ( ) . registerEvents ( new TreeFallAnimation ( ) , this ) ;
2018-11-03 21:49:10 +01:00
/ *
2018-11-07 05:41:40 +01:00
Initialize config
2018-11-03 21:49:10 +01:00
* /
DefaultConfig . initialize ( ) ;
2018-11-07 05:41:40 +01:00
/ *
Initialize custom loot
* /
CustomLoot . initializeCustomItems ( ) ;
2018-11-05 05:15:18 +01:00
/ *
2019-02-07 04:37:16 +01:00
Cache valid world names for later use
2018-11-05 05:15:18 +01:00
* /
2019-02-07 04:37:16 +01:00
this . reloadValidWorlds ( ) ;
2019-02-11 05:50:07 +01:00
/ *
Check for McMMO
* /
2019-02-12 03:11:08 +01:00
if ( Bukkit . getPluginManager ( ) . isPluginEnabled ( " mcMMO " ) ) {
if ( McMMOHook . setEnabled ( ) ) {
console . sendMessage ( " Hooks: Hooked into mcMMO " ) ;
} else {
console . sendMessage ( " Hooks: Unable to hook with mcMMO, the version installed is not supported! " ) ;
}
}
2019-02-11 05:50:07 +01:00
2019-02-07 04:37:16 +01:00
/ *
Register command executor and tab completer
* /
PluginCommand ultimatetimber = this . getCommand ( " ultimatetimber " ) ;
CommandHandler commandHandler = new CommandHandler ( ) ;
ultimatetimber . setExecutor ( commandHandler ) ;
ultimatetimber . setTabCompleter ( commandHandler ) ;
2018-11-05 05:15:18 +01:00
2018-11-05 23:41:25 +01:00
console . sendMessage ( Methods . formatText ( " &a============================= " ) ) ;
2018-11-03 21:49:10 +01:00
}
@Override
public void onDisable ( ) {
2019-02-07 04:37:16 +01:00
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
}
2019-02-07 04:37:16 +01:00
public boolean isWorldValid ( World world ) {
return this . validWorlds . contains ( world . getName ( ) ) ;
2018-11-03 21:49:10 +01:00
}
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 , ( ) - > {
2019-02-07 04:37:16 +01:00
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 ) {
2019-02-07 04:37:16 +01:00
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 ) {
2019-02-07 04:37:16 +01:00
return ! this . isNotChopping . contains ( player . getUniqueId ( ) ) ;
2019-02-06 07:38:37 +01:00
}
2018-11-03 21:49:10 +01:00
}