From 226dbc8c77092ae27c507e13962c2bcbf2b85ca1 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 22 Sep 2019 00:54:27 +0200 Subject: [PATCH] Add portal limiter - simply disallow certain worlds --- .../presents/ButtonPresents.java | 2 + .../portals/PortalLimitComponent.java | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/java/buttondevteam/presents/components/portals/PortalLimitComponent.java diff --git a/src/main/java/buttondevteam/presents/ButtonPresents.java b/src/main/java/buttondevteam/presents/ButtonPresents.java index e6451ef..715dad9 100644 --- a/src/main/java/buttondevteam/presents/ButtonPresents.java +++ b/src/main/java/buttondevteam/presents/ButtonPresents.java @@ -3,6 +3,7 @@ package buttondevteam.presents; import buttondevteam.lib.architecture.Component; import buttondevteam.presents.components.chunkarchive.ChunkArchiveComponent; import buttondevteam.presents.components.magic.MagicComponent; +import buttondevteam.presents.components.portals.PortalLimitComponent; import buttondevteam.presents.components.research.ResearchComponent; import buttondevteam.presents.components.research.dictionary.DictionaryComponent; import buttondevteam.presents.components.spawn.SpawnComponent; @@ -31,6 +32,7 @@ public class ButtonPresents extends JavaPlugin{ getLogger().warning("ChunkArchive compatibility error, not registering it."); } Component.registerComponent(this, new TownyFactionsComponent()); + Component.registerComponent(this, new PortalLimitComponent()); logger.info(pdfFile.getName() + " has fully registered (V." + pdfFile.getVersion()+ ")."); } diff --git a/src/main/java/buttondevteam/presents/components/portals/PortalLimitComponent.java b/src/main/java/buttondevteam/presents/components/portals/PortalLimitComponent.java new file mode 100644 index 0000000..ef358c9 --- /dev/null +++ b/src/main/java/buttondevteam/presents/components/portals/PortalLimitComponent.java @@ -0,0 +1,40 @@ +package buttondevteam.presents.components.portals; + +import buttondevteam.lib.architecture.Component; +import buttondevteam.lib.architecture.ConfigData; +import buttondevteam.presents.ButtonPresents; +import com.google.common.collect.Lists; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityPortalEvent; +import org.bukkit.event.player.PlayerPortalEvent; + +import java.util.List; + +public class PortalLimitComponent extends Component implements Listener { + @Override + protected void enable() { + registerListener(this); + } + + @Override + protected void disable() { + + } + + private ConfigData> worlds() { + return getConfig().getData("worlds", Lists.newArrayList("v1", "v2", "v3")); + } + + @EventHandler(ignoreCancelled = true) + public void onPortalEnter(PlayerPortalEvent event) { + if (worlds().get().contains(event.getFrom().getWorld().getName())) + event.setCancelled(true); + } + + @EventHandler(ignoreCancelled = true) + public void onPortalEnter(EntityPortalEvent event) { + if (worlds().get().contains(event.getFrom().getWorld().getName())) + event.setCancelled(true); + } +}