diff --git a/RPGRegions.iml b/RPGRegions.iml index 9994807..e504fb0 100644 --- a/RPGRegions.iml +++ b/RPGRegions.iml @@ -1,5 +1,5 @@ - + diff --git a/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java b/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java index f1777cb..2eb8cdb 100644 --- a/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java +++ b/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java @@ -7,11 +7,10 @@ import org.bukkit.entity.Player; public abstract class RegionRequirement implements IGuiEditable { private final transient IRPGRegionsAPI api; - private final PreventType preventType; + private final PreventType preventType; // TODO make enums editable public RegionRequirement(IRPGRegionsAPI api) { - this.api = api; - this.preventType = PreventType.TELEPORT; + this(api, PreventType.TELEPORT); } public RegionRequirement(IRPGRegionsAPI api, PreventType preventType) { diff --git a/gradle.properties b/gradle.properties index 07990cb..02fa3ea 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ pluginGroup=net.islandearth -pluginVersion=1.3.5 +pluginVersion=1.3.6 # Set to false if you don't have access to the UltraRegions API jar to make the plugin compilable. The purchased plugin has support for it. ultraRegionsSupport=true diff --git a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java index 2aff798..14cb44d 100644 --- a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java +++ b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java @@ -52,8 +52,10 @@ public class WorldGuardIntegration implements IntegrationManager { && checkRequirements(pme, region.getId())) stringRegions.add(region.getId()); }); - stringRegions.add(0, getPrioritisedRegion(pme.getTo()).getId()); - Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringRegions, !oldRegions.equals(regions))); + if (checkRequirements(pme, prioritisedRegion.getId())) { + stringRegions.add(0, prioritisedRegion.getId()); + Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringRegions, !oldRegions.equals(regions))); + } } @Override diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/gui/EditRegionElementGUI.java b/rpgregions/src/main/java/net/islandearth/rpgregions/gui/EditRegionElementGUI.java index 4648179..3b9be7d 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/gui/EditRegionElementGUI.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/gui/EditRegionElementGUI.java @@ -19,11 +19,13 @@ import net.islandearth.rpgregions.utils.ItemStackBuilder; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import java.util.ArrayList; import java.util.List; +import java.util.function.Predicate; public class EditRegionElementGUI extends RPGRegionsGUI { @@ -64,30 +66,55 @@ public class EditRegionElementGUI extends RPGRegionsGUI { List items = new ArrayList<>(); if (registry instanceof RegionEffectRegistry) { for (RegionEffect effect : region.getEffects()) { - items.add(getDefaultGuiItem(effect, registry)); + items.add(getDefaultGuiItem(effect, registry, clickType -> { + if (clickType == ClickType.SHIFT_LEFT) { + region.getEffects().remove(effect); + return true; + } + return false; + })); } } else if (registry instanceof RegionRewardRegistry) { for (DiscoveryReward reward : region.getRewards()) { - items.add(getDefaultGuiItem(reward, registry)); + items.add(getDefaultGuiItem(reward, registry, clickType -> { + if (clickType == ClickType.SHIFT_LEFT) { + region.getRewards().remove(reward); + return true; + } + return false; + })); } } else if (registry instanceof RegionRequirementRegistry) { for (RegionRequirement requirement : region.getRequirements()) { - items.add(getDefaultGuiItem(requirement, registry)); + items.add(getDefaultGuiItem(requirement, registry, clickType -> { + if (clickType == ClickType.SHIFT_LEFT) { + region.getRequirements().remove(requirement); + return true; + } + return false; + })); } } pane.populateWithGuiItems(items); gui.update(); } - public GuiItem getDefaultGuiItem(IGuiEditable guiEditable, IRPGRegionsRegistry registry) { + public GuiItem getDefaultGuiItem(IGuiEditable guiEditable, IRPGRegionsRegistry registry, Predicate function) { ItemStack item = new ItemStackBuilder(registry.getIcon()) .withName("&6" + guiEditable.getName()) - .withLore("&7No additional data to display") + .withLore("&7No additional data to display", "&c&lShift-Click &cto remove.") .build(); - return new GuiItem(item, click -> { + GuiItem guiItem = new GuiItem(item); + guiItem.setAction(click -> { + if (function.test(click.getClick())) { + guiItem.setVisible(false); + gui.update(); + return; + } new EditGuiElementGUI(plugin, player, region, guiEditable).open(); player.playSound(player.getLocation(), Sound.BLOCK_ENCHANTMENT_TABLE_USE, 1f, 1f); }); + return guiItem; } @Override