diff --git a/UltimateTimber-Adapter/Current/pom.xml b/UltimateTimber-Adapter/Current/pom.xml
index f8a9fde..5a0ad6c 100644
--- a/UltimateTimber-Adapter/Current/pom.xml
+++ b/UltimateTimber-Adapter/Current/pom.xml
@@ -3,7 +3,7 @@
com.songoda
UltimateTimber
- 2.0.8
+ 2.0.9
../../
diff --git a/UltimateTimber-Adapter/Current/src/com.songoda.ultimatetimber.adapter.current/CurrentAdapter.java b/UltimateTimber-Adapter/Current/src/com.songoda.ultimatetimber.adapter.current/CurrentAdapter.java
index 3620755..0066175 100644
--- a/UltimateTimber-Adapter/Current/src/com.songoda.ultimatetimber.adapter.current/CurrentAdapter.java
+++ b/UltimateTimber-Adapter/Current/src/com.songoda.ultimatetimber.adapter.current/CurrentAdapter.java
@@ -21,6 +21,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.event.player.PlayerItemBreakEvent;
import java.util.Collection;
import java.util.HashSet;
@@ -79,8 +80,11 @@ public class CurrentAdapter implements VersionAdapter {
damageable.setDamage(damageable.getDamage() + actualDamage);
tool.setItemMeta((ItemMeta) damageable);
- if (!this.hasEnoughDurability(tool, 1))
+ if (!this.hasEnoughDurability(tool, 1)) {
+ PlayerItemBreakEvent breakEvent = new PlayerItemBreakEvent(player, tool);
+ Bukkit.getServer().getPluginManager().callEvent(breakEvent);
this.removeItemInHand(player);
+ }
}
@Override
diff --git a/UltimateTimber-Adapter/Legacy/pom.xml b/UltimateTimber-Adapter/Legacy/pom.xml
index c5b78e2..33e26ee 100644
--- a/UltimateTimber-Adapter/Legacy/pom.xml
+++ b/UltimateTimber-Adapter/Legacy/pom.xml
@@ -3,7 +3,7 @@
com.songoda
UltimateTimber
- 2.0.8
+ 2.0.9
../../
diff --git a/UltimateTimber-Hook/CoreProtect/pom.xml b/UltimateTimber-Hook/CoreProtect/pom.xml
deleted file mode 100644
index 1e15ccb..0000000
--- a/UltimateTimber-Hook/CoreProtect/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- com.songoda
- UltimateTimber
- 2.0.8
- ../../
-
-
- CoreProtect
-
- 4.0.0
- jar
-
-
-
- org.spigotmc
- spigot
- 1.15
- provided
-
-
- ${project.groupId}
- Core
- ${project.version}
- compile
-
-
- net
- coreprotect
- 2.17.5
- provided
-
-
-
\ No newline at end of file
diff --git a/UltimateTimber-Hook/CoreProtect/src/com/songoda/ultimatetimber/hook/CoreProtectHook.java b/UltimateTimber-Hook/CoreProtect/src/com/songoda/ultimatetimber/hook/CoreProtectHook.java
deleted file mode 100644
index 60c57ae..0000000
--- a/UltimateTimber-Hook/CoreProtect/src/com/songoda/ultimatetimber/hook/CoreProtectHook.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.songoda.ultimatetimber.hook;
-
-import com.songoda.ultimatetimber.tree.ITreeBlock;
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import com.songoda.ultimatetimber.utils.NMSUtil;
-import net.coreprotect.CoreProtect;
-import net.coreprotect.CoreProtectAPI;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-
-public class CoreProtectHook implements TimberHook {
-
- private CoreProtectAPI api;
- private boolean useDeprecatedMethod = NMSUtil.getVersionNumber() <= 12;
-
- public CoreProtectHook() {
- this.api = CoreProtect.getInstance().getAPI();
- }
-
- @Override
- public void applyExperience(Player player, TreeBlockSet treeBlocks) {
- if (!this.api.isEnabled())
- return;
-
- for (ITreeBlock treeBlock : treeBlocks.getAllTreeBlocks()) {
- if (this.useDeprecatedMethod) {
- this.api.logRemoval(player.getName(), treeBlock.getLocation(), treeBlock.getBlock().getType(), treeBlock.getBlock().getData());
- } else {
- this.api.logRemoval(player.getName(), treeBlock.getLocation(), treeBlock.getBlock().getType(), treeBlock.getBlock().getBlockData());
- }
- }
- }
-
- @Override
- public boolean shouldApplyDoubleDrops(Player player) {
- return false;
- }
-
- @Override
- public boolean isUsingAbility(Player player) {
- return false;
- }
-
-}
diff --git a/UltimateTimber-Hook/Jobs/pom.xml b/UltimateTimber-Hook/Jobs/pom.xml
deleted file mode 100644
index 096cdb6..0000000
--- a/UltimateTimber-Hook/Jobs/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- com.songoda
- UltimateTimber
- 2.0.8
- ../../
-
-
- Jobs
-
- 4.0.0
- jar
-
-
-
- org.spigotmc
- spigot
- 1.15
- provided
-
-
- ${project.groupId}
- Core
- ${project.version}
- compile
-
-
- com.gamingmesh
- jobs
- 4.13.0
- provided
-
-
-
\ No newline at end of file
diff --git a/UltimateTimber-Hook/Jobs/src/com/songoda/ultimatetimber/hook/JobsHook.java b/UltimateTimber-Hook/Jobs/src/com/songoda/ultimatetimber/hook/JobsHook.java
deleted file mode 100644
index 052d02d..0000000
--- a/UltimateTimber-Hook/Jobs/src/com/songoda/ultimatetimber/hook/JobsHook.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.songoda.ultimatetimber.hook;
-
-import com.gamingmesh.jobs.Jobs;
-import com.gamingmesh.jobs.actions.BlockActionInfo;
-import com.gamingmesh.jobs.container.ActionType;
-import com.gamingmesh.jobs.container.JobsPlayer;
-import com.songoda.ultimatetimber.tree.ITreeBlock;
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import org.bukkit.GameMode;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-
-public class JobsHook implements TimberHook {
-
- @Override
- public void applyExperience(Player player, TreeBlockSet treeBlocks) {
- if (player.getGameMode().equals(GameMode.CREATIVE))
- return;
-
- JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(player);
- if (jPlayer == null)
- return;
-
- for (ITreeBlock treeBlock : treeBlocks.getLogBlocks()) {
- Block block = treeBlock.getBlock();
- BlockActionInfo bInfo = new BlockActionInfo(block, ActionType.BREAK);
- Jobs.action(jPlayer, bInfo, block);
- }
- }
-
- @Override
- public boolean shouldApplyDoubleDrops(Player player) {
- return false;
- }
-
- @Override
- public boolean isUsingAbility(Player player) {
- return true;
- }
-
-}
diff --git a/UltimateTimber-Hook/McMMO/pom.xml b/UltimateTimber-Hook/McMMO/pom.xml
deleted file mode 100644
index 799abdb..0000000
--- a/UltimateTimber-Hook/McMMO/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- com.songoda
- UltimateTimber
- 2.0.8
- ../../
-
-
- McMMO
-
- 4.0.0
- jar
-
-
-
- org.spigotmc
- spigot
- 1.15
- provided
-
-
- ${project.groupId}
- Core
- ${project.version}
- compile
-
-
- com.gmail.nossr50
- mcmmo
- 2.1.50
- provided
-
-
-
\ No newline at end of file
diff --git a/UltimateTimber-Hook/McMMO/src/com/songoda/ultimatetimber/hook/McMMOHook.java b/UltimateTimber-Hook/McMMO/src/com/songoda/ultimatetimber/hook/McMMOHook.java
deleted file mode 100644
index dbc42c8..0000000
--- a/UltimateTimber-Hook/McMMO/src/com/songoda/ultimatetimber/hook/McMMOHook.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.songoda.ultimatetimber.hook;
-
-import com.gmail.nossr50.api.AbilityAPI;
-import com.gmail.nossr50.api.ExperienceAPI;
-import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
-import com.gmail.nossr50.datatypes.skills.SubSkillType;
-import com.gmail.nossr50.util.Permissions;
-import com.gmail.nossr50.util.player.UserManager;
-import com.gmail.nossr50.util.random.RandomChanceUtil;
-import com.gmail.nossr50.util.skills.RankUtils;
-import com.gmail.nossr50.util.skills.SkillActivationType;
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import org.bukkit.GameMode;
-import org.bukkit.block.Block;
-import org.bukkit.block.BlockState;
-import org.bukkit.entity.Player;
-
-import java.util.ArrayList;
-
-public class McMMOHook implements TimberHook {
-
- @Override
- public void applyExperience(Player player, TreeBlockSet treeBlocks) {
- if (player.getGameMode().equals(GameMode.CREATIVE))
- return;
-
- ArrayList blockStates = new ArrayList<>();
- treeBlocks.getLogBlocks().forEach(x -> blockStates.add(x.getBlock().getState()));
- ExperienceAPI.addXpFromBlocksBySkill(blockStates, UserManager.getPlayer(player), PrimarySkillType.WOODCUTTING);
- }
-
- @Override
- public boolean shouldApplyDoubleDrops(Player player) {
- if (PrimarySkillType.WOODCUTTING.getDoubleDropsDisabled())
- return false;
-
- return Permissions.isSubSkillEnabled(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER)
- && RankUtils.hasReachedRank(1, player, SubSkillType.WOODCUTTING_HARVEST_LUMBER)
- && RandomChanceUtil.isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.WOODCUTTING_HARVEST_LUMBER, player);
- }
-
- @Override
- public boolean isUsingAbility(Player player) {
- return AbilityAPI.treeFellerEnabled(player);
- }
-
-}
diff --git a/UltimateTimber-Hook/McMMOClassic12/pom.xml b/UltimateTimber-Hook/McMMOClassic12/pom.xml
deleted file mode 100644
index 179c1f3..0000000
--- a/UltimateTimber-Hook/McMMOClassic12/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- com.songoda
- UltimateTimber
- 2.0.8
- ../../
-
-
- McMMOClassic12
-
- 4.0.0
- jar
-
-
-
- org.spigotmc
- spigot
- 1.12.2
- provided
-
-
- ${project.groupId}
- Core
- ${project.version}
- compile
-
-
- com.gmail.nossr50
- mcmmo
- 1.5.10
- provided
-
-
-
\ No newline at end of file
diff --git a/UltimateTimber-Hook/McMMOClassic12/src/com/songoda/ultimatetimber/hook/McMMOClassic12Hook.java b/UltimateTimber-Hook/McMMOClassic12/src/com/songoda/ultimatetimber/hook/McMMOClassic12Hook.java
deleted file mode 100644
index c5bdc87..0000000
--- a/UltimateTimber-Hook/McMMOClassic12/src/com/songoda/ultimatetimber/hook/McMMOClassic12Hook.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.songoda.ultimatetimber.hook;
-
-import com.gmail.nossr50.api.AbilityAPI;
-import com.gmail.nossr50.api.ExperienceAPI;
-import com.gmail.nossr50.config.experience.ExperienceConfig;
-import com.gmail.nossr50.datatypes.skills.SecondaryAbility;
-import com.gmail.nossr50.datatypes.skills.SkillType;
-import com.gmail.nossr50.util.Permissions;
-import com.gmail.nossr50.util.player.UserManager;
-import com.gmail.nossr50.util.skills.PerksUtils;
-import com.gmail.nossr50.util.skills.SkillUtils;
-import com.songoda.ultimatetimber.tree.ITreeBlock;
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import org.bukkit.GameMode;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.material.MaterialData;
-
-public class McMMOClassic12Hook implements TimberHook {
-
- @Override
- public void applyExperience(Player player, TreeBlockSet treeBlocks) {
- if (player.getGameMode().equals(GameMode.CREATIVE))
- return;
-
- int xp = 0;
- for (ITreeBlock treeBlock : treeBlocks.getLogBlocks()) {
- Block block = treeBlock.getBlock();
- MaterialData materialData = block.getState().getData();
- xp += ExperienceConfig.getInstance().getXp(SkillType.WOODCUTTING, materialData);
- }
-
- ExperienceAPI.addXP(player, "woodcutting", xp, "pve");
- }
-
- @Override
- public boolean shouldApplyDoubleDrops(Player player) {
- if (player == null || !player.hasMetadata("mcMMO: Player Data") || SkillType.WOODCUTTING.getDoubleDropsDisabled())
- return false;
-
- int skillLevel = UserManager.getPlayer(player).getSkillLevel(SkillType.WOODCUTTING);
- int activationChance = PerksUtils.handleLuckyPerks(player, SkillType.WOODCUTTING);
- return Permissions.secondaryAbilityEnabled(player, SecondaryAbility.WOODCUTTING_DOUBLE_DROPS)
- && SkillUtils.activationSuccessful(SecondaryAbility.WOODCUTTING_DOUBLE_DROPS, player, skillLevel, activationChance);
- }
-
- @Override
- public boolean isUsingAbility(Player player) {
- return AbilityAPI.treeFellerEnabled(player);
- }
-
-}
diff --git a/UltimateTimber-Hook/McMMOClassic13/pom.xml b/UltimateTimber-Hook/McMMOClassic13/pom.xml
deleted file mode 100644
index a091dbb..0000000
--- a/UltimateTimber-Hook/McMMOClassic13/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- com.songoda
- UltimateTimber
- 2.0.8
- ../../
-
-
- McMMOClassic13
-
- 4.0.0
- jar
-
-
-
- org.spigotmc
- spigot
- 1.15
- provided
-
-
- ${project.groupId}
- Core
- ${project.version}
- compile
-
-
- com.gmail.nossr50
- mcmmo
- 1.6.0
- provided
-
-
-
\ No newline at end of file
diff --git a/UltimateTimber-Hook/McMMOClassic13/src/com/songoda/ultimatetimber/hook/McMMOClassic13Hook.java b/UltimateTimber-Hook/McMMOClassic13/src/com/songoda/ultimatetimber/hook/McMMOClassic13Hook.java
deleted file mode 100644
index a074fa9..0000000
--- a/UltimateTimber-Hook/McMMOClassic13/src/com/songoda/ultimatetimber/hook/McMMOClassic13Hook.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.songoda.ultimatetimber.hook;
-
-import com.gmail.nossr50.api.AbilityAPI;
-import com.gmail.nossr50.api.ExperienceAPI;
-import com.gmail.nossr50.config.experience.ExperienceConfig;
-import com.gmail.nossr50.datatypes.player.McMMOPlayer;
-import com.gmail.nossr50.datatypes.skills.SecondaryAbility;
-import com.gmail.nossr50.datatypes.skills.SkillType;
-import com.gmail.nossr50.util.Permissions;
-import com.gmail.nossr50.util.player.UserManager;
-import com.gmail.nossr50.util.skills.PerksUtils;
-import com.gmail.nossr50.util.skills.SkillUtils;
-import com.songoda.ultimatetimber.tree.ITreeBlock;
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import org.bukkit.GameMode;
-import org.bukkit.block.Block;
-import org.bukkit.block.data.BlockData;
-import org.bukkit.entity.Player;
-
-public class McMMOClassic13Hook implements TimberHook {
-
- @Override
- public void applyExperience(Player player, TreeBlockSet treeBlocks) {
- if (player.getGameMode().equals(GameMode.CREATIVE))
- return;
-
- int xp = 0;
- for (ITreeBlock treeBlock : treeBlocks.getLogBlocks()) {
- Block block = treeBlock.getBlock();
- BlockData blockData = block.getBlockData();
- xp += ExperienceConfig.getInstance().getXp(SkillType.WOODCUTTING, blockData);
- }
-
- ExperienceAPI.addXP(player, "woodcutting", xp, "pve");
- }
-
- @Override
- public boolean shouldApplyDoubleDrops(Player player) {
- if (player == null || !player.hasMetadata("mcMMO: Player Data") || SkillType.WOODCUTTING.getDoubleDropsDisabled())
- return false;
-
- int skillLevel = UserManager.getPlayer(player).getSkillLevel(SkillType.WOODCUTTING);
- int activationChance = PerksUtils.handleLuckyPerks(player, SkillType.WOODCUTTING);
- return Permissions.secondaryAbilityEnabled(player, SecondaryAbility.WOODCUTTING_DOUBLE_DROPS)
- && SkillUtils.activationSuccessful(SecondaryAbility.WOODCUTTING_DOUBLE_DROPS, player, skillLevel, activationChance);
- }
-
- @Override
- public boolean isUsingAbility(Player player) {
- return AbilityAPI.treeFellerEnabled(player);
- }
-
-}
diff --git a/UltimateTimber-Hook/McMMOClassic8/pom.xml b/UltimateTimber-Hook/McMMOClassic8/pom.xml
deleted file mode 100644
index 2e3c8b3..0000000
--- a/UltimateTimber-Hook/McMMOClassic8/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- com.songoda
- UltimateTimber
- 2.0.8
- ../../
-
-
- McMMOClassic8
-
- 4.0.0
- jar
-
-
-
- org.spigotmc
- spigot
- 1.8.8
- provided
-
-
- ${project.groupId}
- Core
- ${project.version}
- compile
-
-
- com.gmail.nossr50
- mcmmo
- 1.5.04
- provided
-
-
-
\ No newline at end of file
diff --git a/UltimateTimber-Hook/McMMOClassic8/src/com/songoda/ultimatetimber/hook/McMMOClassic8Hook.java b/UltimateTimber-Hook/McMMOClassic8/src/com/songoda/ultimatetimber/hook/McMMOClassic8Hook.java
deleted file mode 100644
index 05153dc..0000000
--- a/UltimateTimber-Hook/McMMOClassic8/src/com/songoda/ultimatetimber/hook/McMMOClassic8Hook.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.songoda.ultimatetimber.hook;
-
-import com.gmail.nossr50.api.AbilityAPI;
-import com.gmail.nossr50.api.ExperienceAPI;
-import com.gmail.nossr50.config.experience.ExperienceConfig;
-import com.gmail.nossr50.datatypes.skills.SecondaryAbility;
-import com.gmail.nossr50.datatypes.skills.SkillType;
-import com.gmail.nossr50.util.Permissions;
-import com.gmail.nossr50.util.player.UserManager;
-import com.gmail.nossr50.util.skills.PerksUtils;
-import com.gmail.nossr50.util.skills.SkillUtils;
-import com.songoda.ultimatetimber.tree.ITreeBlock;
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import org.bukkit.GameMode;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-
-public class McMMOClassic8Hook implements TimberHook {
-
- @Override
- public void applyExperience(Player player, TreeBlockSet treeBlocks) {
- if (player.getGameMode().equals(GameMode.CREATIVE))
- return;
-
- int xp = 0;
- for (ITreeBlock treeBlock : treeBlocks.getLogBlocks()) {
- Block block = treeBlock.getBlock();
- Material material = block.getType();
- xp += ExperienceConfig.getInstance().getXp(SkillType.WOODCUTTING, material);
- }
-
- ExperienceAPI.addXP(player, "woodcutting", xp, "pve");
- }
-
- @Override
- public boolean shouldApplyDoubleDrops(Player player) {
- if (player == null || !player.hasMetadata("mcMMO: Player Data") || SkillType.WOODCUTTING.getDoubleDropsDisabled())
- return false;
-
- int skillLevel = UserManager.getPlayer(player).getSkillLevel(SkillType.WOODCUTTING);
- int activationChance = PerksUtils.handleLuckyPerks(player, SkillType.WOODCUTTING);
- return Permissions.secondaryAbilityEnabled(player, SecondaryAbility.WOODCUTTING_DOUBLE_DROPS)
- && SkillUtils.activationSuccessful(SecondaryAbility.WOODCUTTING_DOUBLE_DROPS, player, skillLevel, activationChance);
- }
-
- @Override
- public boolean isUsingAbility(Player player) {
- return AbilityAPI.treeFellerEnabled(player);
- }
-
-}
diff --git a/UltimateTimber/Core/pom.xml b/UltimateTimber/Core/pom.xml
index 08a913e..961f5cc 100644
--- a/UltimateTimber/Core/pom.xml
+++ b/UltimateTimber/Core/pom.xml
@@ -3,7 +3,7 @@
com.songoda
UltimateTimber
- 2.0.8
+ 2.0.9
../../
diff --git a/UltimateTimber/Core/src/com/songoda/ultimatetimber/hook/TimberHook.java b/UltimateTimber/Core/src/com/songoda/ultimatetimber/hook/TimberHook.java
deleted file mode 100644
index 8a032da..0000000
--- a/UltimateTimber/Core/src/com/songoda/ultimatetimber/hook/TimberHook.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.songoda.ultimatetimber.hook;
-
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-
-public interface TimberHook {
-
- /**
- * Applies experience to a player for a fallen tree
- *
- * @param player The player
- * @param treeBlocks The tree blocks that were broken
- */
- void applyExperience(Player player, TreeBlockSet treeBlocks);
-
- /**
- * Checks if double drops should be applied
- *
- * @param player The player
- * @return True if double drops should be applied, otherwise false
- */
- boolean shouldApplyDoubleDrops(Player player);
-
- /**
- * Checks if a player is using an ability
- *
- * @param player The player
- * @return True if an ability is being used, otherwise false
- */
- boolean isUsingAbility(Player player);
-
-}
diff --git a/UltimateTimber/Plugin/pom.xml b/UltimateTimber/Plugin/pom.xml
index f8511e9..8ccc59e 100644
--- a/UltimateTimber/Plugin/pom.xml
+++ b/UltimateTimber/Plugin/pom.xml
@@ -3,7 +3,7 @@
com.songoda
UltimateTimber
- 2.0.8
+ 2.0.9
../../
@@ -101,41 +101,5 @@
${project.version}
compile
-
- ${project.groupId}
- CoreProtect
- ${project.version}
- compile
-
-
- ${project.groupId}
- Jobs
- ${project.version}
- compile
-
-
- ${project.groupId}
- McMMO
- ${project.version}
- compile
-
-
- ${project.groupId}
- McMMOClassic8
- ${project.version}
- compile
-
-
- ${project.groupId}
- McMMOClassic12
- ${project.version}
- compile
-
-
- ${project.groupId}
- McMMOClassic13
- ${project.version}
- compile
-
\ No newline at end of file
diff --git a/UltimateTimber/Plugin/resources/config-current.yml b/UltimateTimber/Plugin/resources/config-current.yml
index 91d3e6e..0a5e163 100644
--- a/UltimateTimber/Plugin/resources/config-current.yml
+++ b/UltimateTimber/Plugin/resources/config-current.yml
@@ -390,7 +390,7 @@ trees:
leaves:
- WARPED_WART_BLOCK
- SHROOMLIGHT
- sapling: CRIMSON_FUNGUS
+ sapling: WARPED_FUNGUS
plantable-soil:
- WARPED_NYLIUM
max-log-distance-from-trunk: 27
diff --git a/UltimateTimber/Plugin/resources/plugin.yml b/UltimateTimber/Plugin/resources/plugin.yml
index a478fa1..b9d9744 100644
--- a/UltimateTimber/Plugin/resources/plugin.yml
+++ b/UltimateTimber/Plugin/resources/plugin.yml
@@ -3,7 +3,7 @@ version: maven-version-number
authors: [Songoda, Esophose]
main: com.songoda.ultimatetimber.UltimateTimber
api-version: 1.13
-softdepend: [mcMMO, Jobs]
+softdepend: [mcMMO, Jobs, CoreProtect]
commands:
ut:
description: Reloads the configuration file
diff --git a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/UltimateTimber.java b/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/UltimateTimber.java
index 344eadf..1d45cf8 100644
--- a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/UltimateTimber.java
+++ b/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/UltimateTimber.java
@@ -4,6 +4,7 @@ import com.songoda.core.SongodaCore;
import com.songoda.core.SongodaPlugin;
import com.songoda.core.compatibility.CompatibleMaterial;
import com.songoda.core.configuration.Config;
+import com.songoda.core.hooks.LogManager;
import com.songoda.ultimatetimber.adapter.VersionAdapter;
import com.songoda.ultimatetimber.adapter.current.CurrentAdapter;
import com.songoda.ultimatetimber.adapter.legacy.LegacyAdapter;
@@ -28,7 +29,6 @@ public class UltimateTimber extends SongodaPlugin {
private VersionAdapter versionAdapter;
private ChoppingManager choppingManager;
private ConfigurationManager configurationManager;
- private HookManager hookManager;
private com.songoda.core.commands.CommandManager commandManager;
private PlacedBlockManager placedBlockManager;
private SaplingManager saplingManager;
@@ -51,6 +51,9 @@ public class UltimateTimber extends SongodaPlugin {
// Run Songoda Updater
SongodaCore.registerPlugin(this, 18, CompatibleMaterial.IRON_AXE);
+ // Load hooks
+ LogManager.load();
+
// Setup plugin commands
this.commandManager = new com.songoda.core.commands.CommandManager(this);
this.commandManager.addMainCommand("ut")
@@ -62,7 +65,6 @@ public class UltimateTimber extends SongodaPlugin {
this.managers = new HashSet<>();
this.choppingManager = this.registerManager(ChoppingManager.class);
this.configurationManager = new ConfigurationManager(this);
- this.hookManager = this.registerManager(HookManager.class);
this.placedBlockManager = this.registerManager(PlacedBlockManager.class);
this.saplingManager = this.registerManager(SaplingManager.class);
this.treeAnimationManager = this.registerManager(TreeAnimationManager.class);
@@ -80,6 +82,10 @@ public class UltimateTimber extends SongodaPlugin {
this.disable();
}
+ @Override
+ public void onDataLoad() {
+ }
+
@Override
public void onConfigReload() {
this.configurationManager.reload();
@@ -156,15 +162,6 @@ public class UltimateTimber extends SongodaPlugin {
return this.configurationManager;
}
- /**
- * Gets the hook manager
- *
- * @return The HookManager instance
- */
- public HookManager getHookManager() {
- return this.hookManager;
- }
-
/**
* Gets the placed block manager
*
diff --git a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/HookManager.java b/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/HookManager.java
deleted file mode 100644
index ae34105..0000000
--- a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/HookManager.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package com.songoda.ultimatetimber.manager;
-
-import com.songoda.ultimatetimber.UltimateTimber;
-import com.songoda.ultimatetimber.adapter.VersionAdapterType;
-import com.songoda.ultimatetimber.hook.CoreProtectHook;
-import com.songoda.ultimatetimber.hook.JobsHook;
-import com.songoda.ultimatetimber.hook.McMMOClassic12Hook;
-import com.songoda.ultimatetimber.hook.McMMOClassic13Hook;
-import com.songoda.ultimatetimber.hook.McMMOClassic8Hook;
-import com.songoda.ultimatetimber.hook.McMMOHook;
-import com.songoda.ultimatetimber.hook.TimberHook;
-import com.songoda.ultimatetimber.tree.TreeBlockSet;
-import com.songoda.ultimatetimber.utils.NMSUtil;
-import java.util.HashSet;
-import java.util.Set;
-import org.bukkit.Bukkit;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.plugin.Plugin;
-
-public class HookManager extends Manager {
-
- private Set hooks;
-
- public HookManager(UltimateTimber ultimateTimber) {
- super(ultimateTimber);
- this.hooks = new HashSet<>();
- }
-
- @Override
- public void reload() {
- this.hooks.clear();
-
- this.tryHook("Jobs", JobsHook.class);
- this.tryHook("CoreProtect", CoreProtectHook.class);
-
- Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> {
- if (this.plugin.getVersionAdapter().getVersionAdapterType().equals(VersionAdapterType.CURRENT)) {
- Plugin mcMMO = Bukkit.getPluginManager().getPlugin("mcMMO");
- if (mcMMO != null) {
- String version = mcMMO.getDescription().getVersion();
- if (version.startsWith("2")) {
- this.tryHook("mcMMO", McMMOHook.class);
- } else {
- this.tryHook("mcMMO", McMMOClassic13Hook.class);
- }
- }
- } else {
- if (NMSUtil.getVersionNumber() == 12) {
- this.tryHook("mcMMO", McMMOClassic12Hook.class);
- } else if (NMSUtil.getVersionNumber() == 8) {
- this.tryHook("mcMMO", McMMOClassic8Hook.class);
- }
- }
- });
- }
-
- @Override
- public void disable() {
- this.hooks.clear();
- }
-
- /**
- * Tries to hook into a compatible plugin
- *
- * @param pluginName The name of the plugin
- * @param hookClass The hook class
- */
- private void tryHook(String pluginName, Class extends TimberHook> hookClass) {
- if (!Bukkit.getPluginManager().isPluginEnabled(pluginName))
- return;
-
- try {
- this.hooks.add(hookClass.newInstance());
- Bukkit.getConsoleSender().sendMessage(String.format("Hooks: Hooked into %s!", pluginName));
- } catch (Exception ex) {
- Bukkit.getConsoleSender().sendMessage(String.format("Hooks: Unable to hook with %s, the version installed is not supported!", pluginName));
- }
- }
-
- /**
- * Applies experience to the loaded hooks
- *
- * @param player The player to apply experience to
- * @param treeBlocks The blocks of the tree that were broken
- */
- public void applyExperienceHooks(Player player, TreeBlockSet treeBlocks) {
- if (!ConfigurationManager.Setting.HOOKS_APPLY_EXPERIENCE.getBoolean())
- return;
-
- for (TimberHook hook : this.hooks)
- hook.applyExperience(player, treeBlocks);
- }
-
- /**
- * Checks if double drops should be applied from the loaded hooks
- *
- * @param player The player to check
- */
- public boolean shouldApplyDoubleDropsHooks(Player player) {
- if (!ConfigurationManager.Setting.HOOKS_APPLY_EXTRA_DROPS.getBoolean())
- return false;
-
- for (TimberHook hook : this.hooks)
- if (hook.shouldApplyDoubleDrops(player))
- return true;
- return false;
- }
-
- /**
- * Checks if a player is using an ability from the loaded hooks
- *
- * @param player The player to check
- */
- public boolean isUsingAbilityHooks(Player player) {
- if (!ConfigurationManager.Setting.HOOKS_REQUIRE_ABILITY_ACTIVE.getBoolean() || this.hooks.isEmpty())
- return true;
-
- for (TimberHook hook : this.hooks)
- if (hook.isUsingAbility(player))
- return true;
- return false;
- }
-
-}
diff --git a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeDefinitionManager.java b/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeDefinitionManager.java
index 524957e..7ec4df9 100644
--- a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeDefinitionManager.java
+++ b/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeDefinitionManager.java
@@ -1,5 +1,6 @@
package com.songoda.ultimatetimber.manager;
+import com.songoda.core.hooks.McMMOHook;
import com.songoda.ultimatetimber.UltimateTimber;
import com.songoda.ultimatetimber.adapter.IBlockData;
import com.songoda.ultimatetimber.adapter.VersionAdapter;
@@ -246,7 +247,6 @@ public class TreeDefinitionManager extends Manager {
*/
public void dropTreeLoot(TreeDefinition treeDefinition, ITreeBlock treeBlock, Player player, boolean hasSilkTouch, boolean isForEntireTree) {
VersionAdapter versionAdapter = this.plugin.getVersionAdapter();
- HookManager hookManager = this.plugin.getHookManager();
boolean addToInventory = ConfigurationManager.Setting.ADD_ITEMS_TO_INVENTORY.getBoolean();
boolean hasBonusChance = player.hasPermission("ultimatetimber.bonusloot");
@@ -260,7 +260,7 @@ public class TreeDefinitionManager extends Manager {
toTry.addAll(this.globalEntireTreeLoot);
} else {
if (ConfigurationManager.Setting.APPLY_SILK_TOUCH.getBoolean() && hasSilkTouch) {
- if (hookManager.shouldApplyDoubleDropsHooks(player))
+ if (McMMOHook.hasWoodcuttingDoubleDrops(player))
lootedItems.addAll(versionAdapter.getBlockDrops(treeDefinition, treeBlock));
lootedItems.addAll(versionAdapter.getBlockDrops(treeDefinition, treeBlock));
} else {
@@ -269,7 +269,7 @@ public class TreeDefinitionManager extends Manager {
toTry.addAll(treeDefinition.getLogLoot());
toTry.addAll(this.globalLogLoot);
if (treeDefinition.shouldDropOriginalLog()) {
- if (hookManager.shouldApplyDoubleDropsHooks(player))
+ if (McMMOHook.hasWoodcuttingDoubleDrops(player))
lootedItems.addAll(versionAdapter.getBlockDrops(treeDefinition, treeBlock));
lootedItems.addAll(versionAdapter.getBlockDrops(treeDefinition, treeBlock));
}
@@ -278,7 +278,7 @@ public class TreeDefinitionManager extends Manager {
toTry.addAll(treeDefinition.getLeafLoot());
toTry.addAll(this.globalLeafLoot);
if (treeDefinition.shouldDropOriginalLeaf()) {
- if (hookManager.shouldApplyDoubleDropsHooks(player))
+ if (McMMOHook.hasWoodcuttingDoubleDrops(player))
lootedItems.addAll(versionAdapter.getBlockDrops(treeDefinition, treeBlock));
lootedItems.addAll(versionAdapter.getBlockDrops(treeDefinition, treeBlock));
}
@@ -295,13 +295,13 @@ public class TreeDefinitionManager extends Manager {
continue;
if (treeLoot.hasItem()) {
- if (hookManager.shouldApplyDoubleDropsHooks(player))
+ if (McMMOHook.hasWoodcuttingDoubleDrops(player))
lootedItems.add(treeLoot.getItem());
lootedItems.add(treeLoot.getItem());
}
if (treeLoot.hasCommand()) {
- if (hookManager.shouldApplyDoubleDropsHooks(player))
+ if (McMMOHook.hasWoodcuttingDoubleDrops(player))
lootedCommands.add(treeLoot.getCommand());
lootedCommands.add(treeLoot.getCommand());
}
@@ -359,5 +359,4 @@ public class TreeDefinitionManager extends Manager {
double chance = configurationSection.getDouble("chance");
return new TreeLoot(treeBlockType, item, command, chance);
}
-
}
diff --git a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeFallManager.java b/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeFallManager.java
index 69c8f09..365028a 100644
--- a/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeFallManager.java
+++ b/UltimateTimber/Plugin/src/com/songoda/ultimatetimber/manager/TreeFallManager.java
@@ -1,12 +1,17 @@
package com.songoda.ultimatetimber.manager;
+import com.songoda.core.hooks.JobsHook;
+import com.songoda.core.hooks.LogManager;
+import com.songoda.core.hooks.McMMOHook;
import com.songoda.ultimatetimber.UltimateTimber;
import com.songoda.ultimatetimber.adapter.VersionAdapter;
import com.songoda.ultimatetimber.events.TreeFallEvent;
import com.songoda.ultimatetimber.events.TreeFellEvent;
import com.songoda.ultimatetimber.misc.OnlyToppleWhile;
import com.songoda.ultimatetimber.tree.DetectedTree;
+import com.songoda.ultimatetimber.tree.ITreeBlock;
import com.songoda.ultimatetimber.tree.TreeBlockSet;
+import com.songoda.ultimatetimber.tree.TreeBlockType;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Material;
@@ -19,6 +24,8 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
+import java.util.stream.Collectors;
+
public class TreeFallManager extends Manager implements Listener {
public TreeFallManager(UltimateTimber ultimateTimber) {
@@ -44,7 +51,6 @@ public class TreeFallManager extends Manager implements Listener {
ChoppingManager choppingManager = this.plugin.getChoppingManager();
SaplingManager saplingManager = this.plugin.getSaplingManager();
VersionAdapter versionAdapter = this.plugin.getVersionAdapter();
- HookManager hookManager = this.plugin.getHookManager();
Player player = event.getPlayer();
Block block = event.getBlock();
@@ -85,7 +91,8 @@ public class TreeFallManager extends Manager implements Listener {
if (!treeDefinitionManager.isToolValidForAnyTreeDefinition(tool))
isValid = false;
- if (!hookManager.isUsingAbilityHooks(player))
+ if (ConfigurationManager.Setting.HOOKS_REQUIRE_ABILITY_ACTIVE.getBoolean()
+ && McMMOHook.isUsingTreeFeller(player))
isValid = false;
boolean alwaysReplantSapling = ConfigurationManager.Setting.ALWAYS_REPLANT_SAPLING.getBoolean();
@@ -131,7 +138,15 @@ public class TreeFallManager extends Manager implements Listener {
if (!player.getGameMode().equals(GameMode.CREATIVE))
versionAdapter.applyToolDurability(player, toolDamage);
- hookManager.applyExperienceHooks(player, detectedTree.getDetectedTreeBlocks());
+ McMMOHook.addWoodcutting(player, detectedTree.getDetectedTreeBlocks().getAllTreeBlocks().stream()
+ .map(ITreeBlock::getBlock).collect(Collectors.toList()));
+
+ for (ITreeBlock treeBlock : detectedTree.getDetectedTreeBlocks().getAllTreeBlocks()) {
+ if (JobsHook.isEnabled() && treeBlock.getTreeBlockType() == TreeBlockType.LOG)
+ JobsHook.breakBlock(player, block);
+ LogManager.logRemoval(player, treeBlock.getBlock());
+ }
+
treeAnimationManager.runAnimation(detectedTree, player);
treeDefinitionManager.dropTreeLoot(detectedTree.getTreeDefinition(), detectedTree.getDetectedTreeBlocks().getInitialLogBlock(), player, false, true);
diff --git a/pom.xml b/pom.xml
index da59f66..a27c5a1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
com.songoda
UltimateTimber
- 2.0.8
+ 2.0.9
4.0.0
pom
@@ -11,12 +11,6 @@
UltimateTimber/Plugin
UltimateTimber-Adapter/Current
UltimateTimber-Adapter/Legacy
- UltimateTimber-Hook/Jobs
- UltimateTimber-Hook/McMMO
- UltimateTimber-Hook/McMMOClassic13
- UltimateTimber-Hook/McMMOClassic12
- UltimateTimber-Hook/McMMOClassic8
- UltimateTimber-Hook/CoreProtect