From 2f3b662d4cb708f1979ec6b586300ea7f02c1850 Mon Sep 17 00:00:00 2001 From: SamB440 Date: Mon, 10 Feb 2020 21:01:45 +0000 Subject: [PATCH] Add isWearingRequired --- .../rpgregions/effects/PotionRegionEffect.java | 6 +++--- .../rpgregions/effects/RegionEffect.java | 8 +++++++- .../rpgregions/listener/RegionListener.java | 13 +++++++++++++ .../rpgregions/managers/RPGRegionsManagers.java | 1 + 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java b/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java index 613bb58..04e0161 100644 --- a/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java +++ b/api/src/main/java/net/islandearth/rpgregions/effects/PotionRegionEffect.java @@ -10,8 +10,8 @@ public class PotionRegionEffect extends RegionEffect { private final PotionEffect potionEffect; - public PotionRegionEffect(PotionEffect potionEffect, List ignoreItems) { - super(ignoreItems); + public PotionRegionEffect(PotionEffect potionEffect, boolean wearingRequired, List ignoreItems) { + super(wearingRequired, ignoreItems); this.potionEffect = potionEffect; } @@ -26,6 +26,6 @@ public class PotionRegionEffect extends RegionEffect { @Override public String getName() { - return null; + return "PotionRegionEffect"; } } diff --git a/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java b/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java index a7351ce..315101d 100644 --- a/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java +++ b/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java @@ -7,14 +7,20 @@ import java.util.List; public abstract class RegionEffect { + private final boolean wearingRequired; private final List ignoreItems; - public RegionEffect(List ignoreItems) { + public RegionEffect(boolean wearingRequired, List ignoreItems) { + this.wearingRequired = wearingRequired; this.ignoreItems = ignoreItems; } public abstract void effect(Player player); + public boolean isWearingRequired() { + return wearingRequired; + } + public List getIgnoreItems() { return ignoreItems; } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java b/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java index 26e747f..efff93c 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java @@ -47,12 +47,25 @@ public class RegionListener implements Listener { ConfiguredRegion configuredRegion = plugin.getManagers().getRegionsCache().getConfiguredRegions().get(region); configuredRegion.getEffects().forEach(regionEffect -> { boolean canEffect = true; + if (regionEffect.isWearingRequired()) { + for (ItemStack itemStack : player.getInventory().getArmorContents()) { + if (regionEffect.shouldIgnore(itemStack)) { + canEffect = false; + break; + } + } + + if (canEffect) regionEffect.effect(player); + return; + } + for (ItemStack itemStack : player.getInventory()) { if (regionEffect.shouldIgnore(itemStack)) { canEffect = false; break; } } + if (canEffect) regionEffect.effect(player); }); diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java index f2104c7..8a72576 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/RPGRegionsManagers.java @@ -67,6 +67,7 @@ public class RPGRegionsManagers { List effects = new ArrayList<>(); effects.add(new PotionRegionEffect( new PotionEffect(PotionEffectType.GLOWING, 100, 1, true, true, true), + true, Collections.singletonList(new ItemStackBuilder(Material.IRON_CHESTPLATE).build()))); ConfiguredRegion configuredRegion = new ConfiguredRegion(null, "exampleconfig", "ExampleConfig", rewards, effects, XSound.AMBIENT_UNDERWATER_EXIT.parseSound(),