From 75df051d08438dee28176655bb745660491d3f78 Mon Sep 17 00:00:00 2001
From: PretzelJohn <58197328+PretzelJohn@users.noreply.github.com>
Date: Thu, 16 Mar 2023 19:12:04 -0400
Subject: [PATCH] Version 1.6.1: * Added disabled professions feature * Added
disabled trades feature (completely removes certain trades)
---
dependency-reduced-pom.xml | 2 +-
pom.xml | 2 +-
.../listeners/VillagerListener.java | 39 +++++++++++++++++++
src/main/resources/config.yml | 7 ++++
src/main/resources/plugin.yml | 2 +-
5 files changed, 49 insertions(+), 3 deletions(-)
diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
index 073d773..2af45cf 100644
--- a/dependency-reduced-pom.xml
+++ b/dependency-reduced-pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.pretzel.dev
VillagerTradeLimiter
- 1.6.0
+ 1.6.1
src
diff --git a/pom.xml b/pom.xml
index 1e90936..228fbd3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.pretzel.dev
VillagerTradeLimiter
- 1.6.0
+ 1.6.1
1.8
diff --git a/src/com/pretzel/dev/villagertradelimiter/listeners/VillagerListener.java b/src/com/pretzel/dev/villagertradelimiter/listeners/VillagerListener.java
index b4952c3..38c4b93 100644
--- a/src/com/pretzel/dev/villagertradelimiter/listeners/VillagerListener.java
+++ b/src/com/pretzel/dev/villagertradelimiter/listeners/VillagerListener.java
@@ -4,15 +4,19 @@ import com.pretzel.dev.villagertradelimiter.VillagerTradeLimiter;
import com.pretzel.dev.villagertradelimiter.data.Cooldown;
import com.pretzel.dev.villagertradelimiter.data.PlayerData;
import com.pretzel.dev.villagertradelimiter.settings.Settings;
+import org.bukkit.entity.Item;
import org.bukkit.entity.Villager;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
+import org.bukkit.event.entity.VillagerAcquireTradeEvent;
+import org.bukkit.event.entity.VillagerCareerChangeEvent;
import org.bukkit.event.entity.VillagerReplenishTradeEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.MerchantRecipe;
import java.time.Instant;
import java.util.Date;
+import java.util.List;
import java.util.UUID;
public class VillagerListener implements Listener {
@@ -28,6 +32,41 @@ public class VillagerListener implements Listener {
this.settings = settings;
}
+ /** Handles villager promotions */
+ @EventHandler
+ public void onVillagerPromotion(final VillagerAcquireTradeEvent event) {
+ //Gets the items in the trade
+ final MerchantRecipe recipe = event.getRecipe();
+ List items = recipe.getIngredients();
+ items.add(recipe.getResult());
+
+ //Gets the disabled item list from config
+ List disabledItems = instance.getCfg().getStringList("DisableItems");
+
+ //Checks each item if it should be removed from the trade list
+ for(ItemStack item : items) {
+ if(disabledItems.contains(item.getType().name().toLowerCase())) {
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+
+ /** Handles villager profession change **/
+ @EventHandler
+ public void onVillagerChangeProfession(final VillagerCareerChangeEvent event) {
+ //Gets the new profession
+ final Villager.Profession profession = event.getProfession();
+
+ //Gets the disabled profession list from config
+ List disabledProfessions = instance.getCfg().getStringList("DisableProfessions");
+
+ //Changes the new profession to none if disabled in config
+ if(disabledProfessions.contains(profession.name().toLowerCase())) {
+ event.setProfession(Villager.Profession.NONE);
+ }
+ }
+
/** Handles villager restocks */
@EventHandler
public void onVillagerRestock(final VillagerReplenishTradeEvent event) {
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 453eed6..043f977 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -41,6 +41,13 @@ DisableTrading:
- world_nether
- world_the_end
+# Add profession names that you want to prevent villagers from acquiring
+DisableProfessions: []
+
+# Add item names that you want to prevent villagers from offering as trades.
+# This is a permanent change. The items can't be re-added to the villager's trades.
+DisableItems: []
+
# The maximum level of the "Hero of the Village" (HotV) effect that a player can have. This limits HotV price decreases.
# * Set to -1 to disable this feature and keep vanilla behavior.
# * Set to a number between 0 and 5 to set the maximum HotV effect level players can have
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 1512d37..a359d69 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: VillagerTradeLimiter
author: PretzelJohn
main: com.pretzel.dev.villagertradelimiter.VillagerTradeLimiter
-version: 1.6.0
+version: 1.6.1
api-version: 1.14
commands: