diff --git a/pom.xml b/pom.xml index 624ee88f3..5a0737cb3 100644 --- a/pom.xml +++ b/pom.xml @@ -192,6 +192,13 @@ 2.3.4 provided + + + com.github.justADeni + LogicallyAPI + 1.15.4 + provided + diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index 45fb23936..e430b83cd 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -888,6 +888,7 @@ private static void registerListeners() { JobsHook.PyroFishingPro.registerListener(); JobsHook.mcMMO.registerListener(); JobsHook.MythicMobs.registerListener(); + JobsHook.Logically.registerListener(); CMIMessages.consoleMessage("&eListeners registered successfully"); } diff --git a/src/main/java/com/gamingmesh/jobs/hooks/JobsHook.java b/src/main/java/com/gamingmesh/jobs/hooks/JobsHook.java index 0e0e4344f..2a03172d1 100644 --- a/src/main/java/com/gamingmesh/jobs/hooks/JobsHook.java +++ b/src/main/java/com/gamingmesh/jobs/hooks/JobsHook.java @@ -1,5 +1,6 @@ package com.gamingmesh.jobs.hooks; +import com.gamingmesh.jobs.hooks.Logically.TreeChopListener; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -171,6 +172,16 @@ public void registerListener() { JavaPlugin.getPlugin(Jobs.class).getServer().getPluginManager().registerEvents(new JobsCustomFishingPaymentListener(), JavaPlugin.getPlugin(Jobs.class)); printListenerMessage(this); } + }, + Logically { + @Override + public void registerListener() { + if (!isPresent()) + return; + + Jobs.getInstance().getServer().getPluginManager().registerEvents(new TreeChopListener(), Jobs.getInstance()); + printListenerMessage(this); + } }; private boolean enabled; diff --git a/src/main/java/com/gamingmesh/jobs/hooks/Logically/TreeChopListener.java b/src/main/java/com/gamingmesh/jobs/hooks/Logically/TreeChopListener.java new file mode 100644 index 000000000..1632a06d9 --- /dev/null +++ b/src/main/java/com/gamingmesh/jobs/hooks/Logically/TreeChopListener.java @@ -0,0 +1,39 @@ +package com.gamingmesh.jobs.hooks.Logically; + +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.github.justadeni.logically.api.StartChopTreeEvent; +import org.bukkit.Bukkit; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +public class TreeChopListener implements Listener { + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void onTreeChop(StartChopTreeEvent event) { + final Player player = event.getPlayer(); + + if (!Jobs.getGCManager().canPerformActionInWorld(player.getWorld())) + return; + + if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName())) + return; + + JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(player); + if (jPlayer == null) + return; + + Bukkit.getScheduler().runTask(Jobs.getInstance(), () -> { + for (Block block : event.getLogs()) { + BlockActionInfo actionInfo = new BlockActionInfo(block, ActionType.BREAK); + Jobs.action(jPlayer, actionInfo, block); + } + }); + } + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 56215ed21..ebf63648a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -8,7 +8,7 @@ website: https://www.spigotmc.org/resources/4216/ authors: [Zrips] contributors: [montlikadani] depend: [CMILib] -softdepend: [Vault, Essentials, MythicMobs, WorldGuard, MyPet, PlaceholderAPI, EcoEnchants, WildStacker, StackMob, PyroFishingPro, BlockTracker, CustomFishing] +softdepend: [Vault, Essentials, MythicMobs, WorldGuard, MyPet, PlaceholderAPI, EcoEnchants, WildStacker, StackMob, PyroFishingPro, BlockTracker, CustomFishing, Logically] commands: jobs: description: Jobs