Add WorldGuardExtraFlags Fly flag check
Add WorldGuardExtraFlags soft depency
This commit is contained in:
parent
d2e0f551aa
commit
6df07dc9d6
@ -5,7 +5,7 @@ website: ${project.url}
|
||||
description: ${project.description}
|
||||
authors: [Madus, Cayorion, Ulumulu1510, MarkehMe, Brettflan, AlkorZ3]
|
||||
depend: [MassiveCore]
|
||||
softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, LocalAreaChat, LWC, ChatManager, AuthMe, Vault, WorldEdit, WorldGuard]
|
||||
softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, LocalAreaChat, LWC, ChatManager, AuthMe, Vault, WorldEdit, WorldGuard, WorldGuardExtraFlags]
|
||||
api-version: 1.13
|
||||
permissions:
|
||||
# -------------------------------------------- #
|
||||
|
5
pom.xml
5
pom.xml
@ -49,6 +49,11 @@
|
||||
<groupId>com.sk89q.worldguard</groupId>
|
||||
<artifactId>worldguard-bukkit</artifactId>
|
||||
</dependency>
|
||||
<!-- WorldGuardExtraFlags -->
|
||||
<dependency>
|
||||
<groupId>net.goldtreeservers</groupId>
|
||||
<artifactId>worldguardextraflags</artifactId>
|
||||
</dependency>
|
||||
<!-- Vault -->
|
||||
<dependency>
|
||||
<groupId>net.milkbowl.vault</groupId>
|
||||
|
@ -2,6 +2,7 @@ package com.massivecraft.factions.engine;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.CmdFactions;
|
||||
import com.massivecraft.factions.integration.worldguard.EngineWorldGuard;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
@ -189,8 +190,8 @@ public class EngineFly extends Engine
|
||||
{
|
||||
throw new MassiveException().addMsg("<b>You are not allowed to fly within " + locationFaction.getName() + " faction.");
|
||||
}
|
||||
|
||||
// If the faction does not have the flag ...
|
||||
|
||||
// If the location faction does not have the flag ...
|
||||
if (!locationFaction.getFlag(MFlag.getFlagFly()))
|
||||
{
|
||||
MFlag flag = MFlag.getFlagFly();
|
||||
@ -207,7 +208,8 @@ public class EngineFly extends Engine
|
||||
ex.addMessage(CmdFactions.get().cmdFactionsFlag.cmdFactionsFlagSet.getTemplate(false, true, mplayer.getSender()));
|
||||
}
|
||||
// ... otherwise ...
|
||||
else {
|
||||
else
|
||||
{
|
||||
// .. tell them to have someone else edit it ...
|
||||
ex.addMsg("<i>You can ask a faction admin to change the flag.");
|
||||
}
|
||||
@ -245,6 +247,12 @@ public class EngineFly extends Engine
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
|
||||
// If the WorldGuard Region doesn't allows the player to fly...
|
||||
if (!EngineWorldGuard.isFlyAllowed(mplayer))
|
||||
{
|
||||
throw new MassiveException().addMsg("<b>You are not allowed to fly within this WorldGuard region.");
|
||||
}
|
||||
}
|
||||
|
||||
public static void deactivateForPlayer(Player player)
|
||||
|
@ -6,15 +6,22 @@ import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.event.EventFactionsChunksChange;
|
||||
import com.massivecraft.massivecore.Engine;
|
||||
import com.massivecraft.massivecore.ps.PS;
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldedit.bukkit.BukkitWorld;
|
||||
import com.sk89q.worldedit.math.BlockVector3;
|
||||
import com.sk89q.worldguard.LocalPlayer;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||
import com.sk89q.worldguard.protection.flags.Flags;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import com.sk89q.worldguard.protection.regions.GlobalProtectedRegion;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
||||
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -61,7 +68,7 @@ public class EngineWorldGuard extends Engine
|
||||
// Only do this for players
|
||||
if (player == null) return;
|
||||
|
||||
LocalPlayer wrapperPlayer = WorldGuardPlugin.inst() .wrapPlayer(player);
|
||||
LocalPlayer wrapperPlayer = WorldGuardPlugin.inst().wrapPlayer(player);
|
||||
|
||||
if ( ! MConf.get().worldguardCheckWorldsEnabled.contains(player)) return;
|
||||
|
||||
@ -123,5 +130,25 @@ public class EngineWorldGuard extends Engine
|
||||
|
||||
return overlapRegions;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static boolean isFlyAllowed(MPlayer mplayer)
|
||||
{
|
||||
// Skip checks if the configuration has worldguardCheckEnabled disabled
|
||||
if ( ! MConf.get().worldguardCheckEnabled) return(true);
|
||||
|
||||
LocalPlayer wrapperPlayer = WorldGuardPlugin.inst().wrapPlayer(mplayer.getPlayer());
|
||||
RegionQuery query = WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery();
|
||||
ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(mplayer.getPlayer().getLocation()));
|
||||
|
||||
if( set.queryState( wrapperPlayer, net.goldtreeservers.worldguardextraflags.flags.Flags.FLY) == StateFlag.State.DENY)
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
return(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user