From 642b4643e1d4f13cb1d99206b5c93a1cdfd48dff Mon Sep 17 00:00:00 2001 From: FireML <106587317+FireML@users.noreply.github.com> Date: Sat, 1 Apr 2023 05:57:05 +0100 Subject: [PATCH 1/4] Bucketing Entities Action --- .../gamingmesh/jobs/config/ConfigManager.java | 3 ++- .../gamingmesh/jobs/container/ActionType.java | 3 ++- .../jobs/listeners/JobsPaymentListener.java | 25 ++++++++++++++++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java index 1d043e16..43e6deeb 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java @@ -617,6 +617,7 @@ public class ConfigManager { case BREW: case BREAK: case STRIPLOGS: + case BUCKET: case COLLECT: material = CMIMaterial.get(myKey + (subType)); @@ -723,7 +724,7 @@ public class ConfigManager { } id = material.getId(); - } else if (actionType == ActionType.KILL || actionType == ActionType.TAME || actionType == ActionType.BREED || actionType == ActionType.MILK) { + } else if (actionType == ActionType.KILL || actionType == ActionType.TAME || actionType == ActionType.BREED || actionType == ActionType.MILK || actionType == ActionType.BUCKET) { // check entities CMIEntityType entity = CMIEntityType.getByName(myKey); diff --git a/src/main/java/com/gamingmesh/jobs/container/ActionType.java b/src/main/java/com/gamingmesh/jobs/container/ActionType.java index 0b9a1a9d..08019512 100644 --- a/src/main/java/com/gamingmesh/jobs/container/ActionType.java +++ b/src/main/java/com/gamingmesh/jobs/container/ActionType.java @@ -41,7 +41,8 @@ public enum ActionType { EAT("Eat"), CUSTOMKILL("custom-kill"), COLLECT("Collect"), - BAKE("Bake"); + BAKE("Bake"), + BUCKET("Bucket"); private String name; diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index 8eb06e19..37e16113 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -74,10 +74,7 @@ import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.event.inventory.InventoryType.SlotType; -import org.bukkit.event.player.PlayerFishEvent; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerShearEntityEvent; +import org.bukkit.event.player.*; import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.EnchantingInventory; @@ -1979,4 +1976,24 @@ public final class JobsPaymentListener implements Listener { fp.setTime(System.currentTimeMillis() + 45); } } + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onEntityBucketed(PlayerBucketEntityEvent event) { + Player player = event.getPlayer(); + + if (!Jobs.getGCManager().canPerformActionInWorld(player.getWorld())) + return; + + // check if in creative + if (!payIfCreative(player)) + return; + + if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName())) + return; + + // check if player is riding + if (Jobs.getGCManager().disablePaymentIfRiding && player.isInsideVehicle() && !player.getVehicle().getType().equals(EntityType.BOAT)) + return; + + Jobs.action(Jobs.getPlayerManager().getJobsPlayer(player), new EntityActionInfo(event.getEntity(), ActionType.BUCKET)); + } } From 1f079cb461d851c59715467fc2ca7e871b402b83 Mon Sep 17 00:00:00 2001 From: FireML <106587317+FireML@users.noreply.github.com> Date: Fri, 21 Apr 2023 15:48:28 +0100 Subject: [PATCH 2/4] Resolve Conflict --- .../com/gamingmesh/jobs/listeners/JobsPaymentListener.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index 37e16113..dfbd2476 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -74,7 +74,12 @@ import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.event.inventory.InventoryType.SlotType; -import org.bukkit.event.player.*; +import org.bukkit.event.inventory.PrepareAnvilEvent; +import org.bukkit.event.player.PlayerFishEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerShearEntityEvent; +import org.bukkit.event.player.PlayerBucketEntityEvent; import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.EnchantingInventory; From b9c21a0f51e774ff4bdd160413ead9f4f984bd5c Mon Sep 17 00:00:00 2001 From: FireML <106587317+FireML@users.noreply.github.com> Date: Fri, 21 Apr 2023 20:31:56 +0100 Subject: [PATCH 3/4] Remove Duplicate Import --- .../java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index dfbd2476..08454653 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -74,7 +74,6 @@ import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.event.inventory.InventoryType.SlotType; -import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.event.player.PlayerFishEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; From d7cd60172312db97dd46b5bf8c82585e77628834 Mon Sep 17 00:00:00 2001 From: FireML <106587317+FireML@users.noreply.github.com> Date: Wed, 30 Aug 2023 03:47:42 +0100 Subject: [PATCH 4/4] Version Dependent All tested and working on Spigot 1.16.5 and 1.20.1. --- src/main/java/com/gamingmesh/jobs/Jobs.java | 4 ++ .../jobs/listeners/JobsPayment16Listener.java | 38 +++++++++++++++++++ .../jobs/listeners/JobsPaymentListener.java | 20 ---------- 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/gamingmesh/jobs/listeners/JobsPayment16Listener.java diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index e9971e3f..55a8c183 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -97,6 +97,7 @@ import com.gamingmesh.jobs.listeners.JobsListener; import com.gamingmesh.jobs.listeners.JobsPayment14Listener; import com.gamingmesh.jobs.listeners.JobsPaymentListener; import com.gamingmesh.jobs.listeners.PistonProtectionListener; +import com.gamingmesh.jobs.listeners.JobsPayment16Listener; import com.gamingmesh.jobs.selection.SelectionManager; import com.gamingmesh.jobs.stuff.Loging; import com.gamingmesh.jobs.stuff.TabComplete; @@ -794,6 +795,9 @@ public final class Jobs extends JavaPlugin { if (Version.isCurrentEqualOrHigher(Version.v1_14_R1)) { pm.registerEvents(new JobsPayment14Listener(), getInstance()); } + if (Version.isCurrentEqualOrHigher(Version.v1_16_R3)) { + pm.registerEvents(new JobsPayment16Listener(), getInstance()); + } if (getGCManager().useBlockProtection) { pm.registerEvents(new PistonProtectionListener(), getInstance()); diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPayment16Listener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPayment16Listener.java new file mode 100644 index 00000000..b49e7319 --- /dev/null +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPayment16Listener.java @@ -0,0 +1,38 @@ +package com.gamingmesh.jobs.listeners; + +import com.gamingmesh.jobs.Jobs; +import com.gamingmesh.jobs.actions.EntityActionInfo; +import com.gamingmesh.jobs.container.ActionType; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerBucketEntityEvent; + +public class JobsPayment16Listener implements Listener { + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onEntityBucketed(PlayerBucketEntityEvent event) { + Player player = event.getPlayer(); + + if (!Jobs.getGCManager().canPerformActionInWorld(player.getWorld())) { + return; + } + + // check if in creative + if (!JobsPaymentListener.payIfCreative(player)) { + return; + } + + if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName())) { + return; + } + + // check if player is riding + if (Jobs.getGCManager().disablePaymentIfRiding && player.isInsideVehicle() && !player.getVehicle().getType().equals(EntityType.BOAT)) { + return; + } + + Jobs.action(Jobs.getPlayerManager().getJobsPlayer(player), new EntityActionInfo(event.getEntity(), ActionType.BUCKET)); + } +} diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index f34ca05e..b55614fc 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -1985,24 +1985,4 @@ public final class JobsPaymentListener implements Listener { fp.setTime(System.currentTimeMillis() + 45); } } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onEntityBucketed(PlayerBucketEntityEvent event) { - Player player = event.getPlayer(); - - if (!Jobs.getGCManager().canPerformActionInWorld(player.getWorld())) - return; - - // check if in creative - if (!payIfCreative(player)) - return; - - if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName())) - return; - - // check if player is riding - if (Jobs.getGCManager().disablePaymentIfRiding && player.isInsideVehicle() && !player.getVehicle().getType().equals(EntityType.BOAT)) - return; - - Jobs.action(Jobs.getPlayerManager().getJobsPlayer(player), new EntityActionInfo(event.getEntity(), ActionType.BUCKET)); - } }