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