Clean up & bug fixes

This commit is contained in:
isokissa3 2017-07-15 00:12:30 +03:00
parent e77ad889e8
commit 40177f5e05
40 changed files with 1256 additions and 1012 deletions

147
pom.xml
View file

@ -1,74 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.goldtreeservers</groupId>
<artifactId>worldguardextraflags</artifactId>
<version>2.12.2</version>
<name>WorldGuardExtraFlags</name>
<build>
<finalName>WorldGuardExtraFlagsPlugin</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>sk89q-repo</id>
<url>https://maven.sk89q.com/repo/</url>
</repository>
<repository>
<id>ess-repo</id>
<url>http://repo.ess3.net/content/groups/essentials</url>
</repository>
</repositories>
<dependencies>
<!--Spigot API-->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.11.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!--WorldGuard -->
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-legacy</artifactId>
<version>6.1.3-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.connorlinfoot</groupId>
<artifactId>TitleAPI</artifactId>
<version>1.7.4</version>
</dependency>
<dependency>
<groupId>net.elseland.xikage</groupId>
<artifactId>MythicMobs</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>com.boydti</groupId>
<artifactId>fawe-api</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>net.ess3</groupId>
<artifactId>Essentials</artifactId>
<version>2.13-SNAPSHOT</version>
</dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<groupId>net.goldtreeservers</groupId>
<artifactId>worldguardextraflags</artifactId>
<version>2.12.2</version>
<name>WorldGuardExtraFlags</name>
<build>
<finalName>WorldGuardExtraFlagsPlugin</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>sk89q-repo</id>
<url>https://maven.sk89q.com/repo/</url>
</repository>
<repository>
<id>ess-repo</id>
<url>http://repo.ess3.net/content/groups/essentials</url>
</repository>
<repository>
<id>empcraft</id>
<url>http://ci.athion.net/job/FastAsyncWorldEdit/ws/mvn/</url>
</repository>
</repositories>
<dependencies>
<!--Spigot API-->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.12-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!--WorldGuard -->
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-legacy</artifactId>
<version>6.1.3-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.elseland.xikage</groupId>
<artifactId>MythicMobs</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>com.boydti</groupId>
<artifactId>fawe-api</artifactId>
<version>17.07.12-6b6f285-750-13.7.8</version>
</dependency>
<dependency>
<groupId>net.ess3</groupId>
<artifactId>Essentials</artifactId>
<version>2.13-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View file

@ -1,46 +1,37 @@
package net.goldtreeservers.worldguardextraflags;
import java.awt.Color;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityToggleGlideEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import com.earth2me.essentials.Essentials;
import com.sk89q.worldedit.bukkit.BukkitUtil;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.flags.BooleanFlag;
import com.sk89q.worldguard.protection.flags.CommandStringFlag;
import com.sk89q.worldguard.protection.flags.DoubleFlag;
import com.sk89q.worldguard.protection.flags.LocationFlag;
import com.sk89q.worldguard.protection.flags.SetFlag;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.flags.StringFlag;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import net.goldtreeservers.worldguardextraflags.flags.BlockedEffectsFlag;
import net.goldtreeservers.worldguardextraflags.flags.CommandOnEntryFlag;
import net.goldtreeservers.worldguardextraflags.flags.CommandOnExitFlag;
import net.goldtreeservers.worldguardextraflags.flags.ConsoleCommandOnEntryFlag;
import net.goldtreeservers.worldguardextraflags.flags.ConsoleCommandOnExitFlag;
import net.goldtreeservers.worldguardextraflags.flags.CustomSetFlag;
import lombok.Getter;
import net.goldtreeservers.worldguardextraflags.flags.FlyFlag;
import net.goldtreeservers.worldguardextraflags.flags.GiveEffectsFlag;
import net.goldtreeservers.worldguardextraflags.flags.GlideFlag;
import net.goldtreeservers.worldguardextraflags.flags.GodmodeFlag;
import net.goldtreeservers.worldguardextraflags.flags.MaterialFlag;
import net.goldtreeservers.worldguardextraflags.flags.PlaySoundsFlag;
import net.goldtreeservers.worldguardextraflags.flags.PotionEffectFlag;
import net.goldtreeservers.worldguardextraflags.flags.PotionEffectTypeFlag;
import net.goldtreeservers.worldguardextraflags.flags.SoundDataFlag;
import net.goldtreeservers.worldguardextraflags.flags.TeleportOnEntryFlag;
import net.goldtreeservers.worldguardextraflags.flags.TeleportOnExitFlag;
import net.goldtreeservers.worldguardextraflags.flags.WalkSpeedFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.BlockedEffectsFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.CommandOnEntryFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.CommandOnExitFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.ConsoleCommandOnEntryFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.ConsoleCommandOnExitFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.GiveEffectsFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.PlaySoundsFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.TeleportOnEntryFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.TeleportOnExitFlag;
import net.goldtreeservers.worldguardextraflags.listeners.BlockListener;
import net.goldtreeservers.worldguardextraflags.listeners.EntityListener;
import net.goldtreeservers.worldguardextraflags.listeners.EntityListenerOnePointNine;
@ -48,48 +39,21 @@ import net.goldtreeservers.worldguardextraflags.listeners.EssentialsListener;
import net.goldtreeservers.worldguardextraflags.listeners.PlayerListener;
import net.goldtreeservers.worldguardextraflags.listeners.WorldEditListener;
import net.goldtreeservers.worldguardextraflags.listeners.WorldListener;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.PluginUtils;
import net.goldtreeservers.worldguardextraflags.utils.SoundData;
public class WorldGuardExtraFlagsPlugin extends JavaPlugin
{
private static WorldGuardExtraFlagsPlugin plugin;
private static WorldGuardPlugin worldGuardPlugin;
private static WorldEditPlugin worldEditPlugin;
private static Essentials essentialsPlugin;
private static boolean mythicMobsEnabled;
private static boolean supportFrostwalker;
private static boolean fastAsyncWorldEditEnabled;
private static boolean essentialsEnabled;
public final static LocationFlag teleportOnEntry = new LocationFlag("teleport-on-entry");
public final static LocationFlag teleportOnExit = new LocationFlag("teleport-on-exit");
public final static CustomSetFlag<String> commandOnEntry = new CustomSetFlag<String>("command-on-entry", new CommandStringFlag(null));
public final static CustomSetFlag<String> commandOnExit = new CustomSetFlag<String>("command-on-exit", new CommandStringFlag(null));
public final static CustomSetFlag<String> consoleCommandOnEntry = new CustomSetFlag<String>("console-command-on-entry", new CommandStringFlag(null));
public final static CustomSetFlag<String> consoleCommandOnExit = new CustomSetFlag<String>("console-command-on-exit", new CommandStringFlag(null));
public final static DoubleFlag walkSpeed = new DoubleFlag("walk-speed");
public final static BooleanFlag keepInventory = new BooleanFlag("keep-inventory");
public final static BooleanFlag keepExp = new BooleanFlag("keep-exp");
public final static StringFlag chatPrefix = new StringFlag("chat-prefix");
public final static StringFlag chatSuffix = new StringFlag("chat-suffix");
public final static SetFlag<PotionEffectType> blockedEffects = new SetFlag<PotionEffectType>("blocked-effects", new PotionEffectTypeFlag(null));
public final static StateFlag godmode = new StateFlag("godmode", false);
public final static LocationFlag respawnLocation = new LocationFlag("respawn-location");
public final static StateFlag worldEdit = new StateFlag("worldedit", true);
public final static SetFlag<PotionEffect> giveEffects = new SetFlag<PotionEffect>("give-effects", new PotionEffectFlag(null));
public final static StateFlag fly = new StateFlag("fly", false);
public final static SetFlag<SoundData> playSounds = new SetFlag<SoundData>("play-sounds", new SoundDataFlag(null));
public final static StateFlag mythicMobsEggs = new StateFlag("mythicmobs-eggs", true);
public final static StateFlag frostwalker = new StateFlag("frostwalker", true);
public final static StateFlag netherPortals = new StateFlag("nether-portals", true);
public final static SetFlag<Material> allowBlockPlace = new SetFlag<Material>("allow-block-place", new MaterialFlag(null));
public final static SetFlag<Material> denyBlockPlace = new SetFlag<Material>("deny-block-place", new MaterialFlag(null));
public final static SetFlag<Material> allowBlockBreak = new SetFlag<Material>("allow-block-break", new MaterialFlag(null));
public final static SetFlag<Material> denyBlockBreak = new SetFlag<Material>("deny-block-break", new MaterialFlag(null));
public final static StateFlag glide = new StateFlag("glide", false);
public final static StateFlag chunkUnload = new StateFlag("chunk-unload", true);
public final static StateFlag itemDurability = new StateFlag("item-durability", true);
@Getter private static WorldGuardExtraFlagsPlugin plugin;
@Getter private static WorldGuardPlugin worldGuardPlugin;
@Getter private static WorldEditPlugin worldEditPlugin;
@Getter private static Essentials essentialsPlugin;
@Getter private static boolean supportsMobEffectColors;
@Getter private static boolean supportFrostwalker;
@Getter private static boolean supportsStopSound;
@Getter private static boolean mythicMobsEnabled;
@Getter private static boolean fastAsyncWorldEditEnabled;
public WorldGuardExtraFlagsPlugin()
{
@ -102,9 +66,24 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
WorldGuardExtraFlagsPlugin.supportFrostwalker = true;
}
}
catch (NoSuchFieldError ignored)
catch (Throwable ignored)
{
}
try
{
WorldGuardExtraFlagsPlugin.supportsMobEffectColors = PotionEffect.class.getDeclaredMethod("getColor", Color.class) != null;
}
catch (Throwable ignored)
{
}
try
{
WorldGuardExtraFlagsPlugin.supportsStopSound = Player.class.getDeclaredMethod("stopSound", Color.class) != null;
}
catch (Throwable ignored)
{
}
}
@ -114,34 +93,34 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
WorldGuardExtraFlagsPlugin.worldEditPlugin = (WorldEditPlugin) this.getServer().getPluginManager().getPlugin("WorldEdit");
WorldGuardExtraFlagsPlugin.worldGuardPlugin = (WorldGuardPlugin) this.getServer().getPluginManager().getPlugin("WorldGuard");
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.teleportOnEntry);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.teleportOnExit);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.commandOnEntry);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.commandOnExit);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.consoleCommandOnEntry);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.consoleCommandOnExit);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.walkSpeed);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.keepInventory);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.keepExp);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.chatPrefix);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.chatSuffix);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.blockedEffects);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.godmode);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.respawnLocation);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.worldEdit);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.giveEffects);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.fly);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.playSounds);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.mythicMobsEggs);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.frostwalker);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.netherPortals);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.allowBlockPlace);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.denyBlockPlace);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.allowBlockBreak);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.denyBlockBreak);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.glide);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.chunkUnload);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(WorldGuardExtraFlagsPlugin.itemDurability);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.TELEPORT_ON_ENTRY);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.TELEPORT_ON_EXIT);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.COMMAND_ON_ENTRY);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.COMMAND_ON_EXIT);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.CONSOLE_COMMAND_ON_ENTRY);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.CONSOLE_COMMAND_ON_EXIT);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.WALK_SPEED);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.KEEP_INVENTORY);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.KEEP_EXP);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.CHAT_PREFIX);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.CHAT_SUFFIX);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.BLOCKED_EFFECTS);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.GODMODE);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.RESPAWN_LOCATION);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.WORLDEDIT);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.GIVE_EFFECTS);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.FLY);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.PLAY_SOUNDS);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.MYTHICMOB_EGGS);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.FROSTWALKER);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.NETHER_PORTALS);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.ALLOW_BLOCK_PLACE);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.DENY_BLOCK_PLACE);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.ALLOW_BLOCK_BREAK);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.DENY_BLOCK_BREAK);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.GLIDE);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.CHUNK_UNLOAD);
WorldGuardExtraFlagsPlugin.worldGuardPlugin.getFlagRegistry().register(FlagUtils.ITEM_DURABILITY);
}
@Override
@ -183,9 +162,9 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
{
WorldGuardExtraFlagsPlugin.essentialsPlugin = (Essentials)essentialsPlugin;
}
WorldGuardExtraFlagsPlugin.mythicMobsEnabled = this.getServer().getPluginManager().isPluginEnabled("MythicMobs");
WorldGuardExtraFlagsPlugin.fastAsyncWorldEditEnabled = this.getServer().getPluginManager().isPluginEnabled("FastAsyncWorldEdit");
WorldGuardExtraFlagsPlugin.essentialsEnabled = this.getServer().getPluginManager().isPluginEnabled("Essentials");
if (WorldGuardExtraFlagsPlugin.fastAsyncWorldEditEnabled)
{
@ -196,7 +175,7 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
WorldGuardExtraFlagsPlugin.worldEditPlugin.getWorldEdit().getEventBus().register(new WorldEditListener());
}
if (WorldGuardExtraFlagsPlugin.essentialsEnabled)
if (WorldGuardExtraFlagsPlugin.isEssentialsEnable())
{
this.getServer().getPluginManager().registerEvents(new EssentialsListener(), this);
}
@ -207,53 +186,18 @@ public class WorldGuardExtraFlagsPlugin extends JavaPlugin
}
}
public static WorldGuardExtraFlagsPlugin getPlugin()
public static boolean isEssentialsEnable()
{
return WorldGuardExtraFlagsPlugin.plugin;
}
public static WorldGuardPlugin getWorldGuard()
{
return WorldGuardExtraFlagsPlugin.worldGuardPlugin;
}
public static WorldEditPlugin getWorldEditPlugin()
{
return WorldGuardExtraFlagsPlugin.worldEditPlugin;
}
public static boolean isMythicMobsEnabled()
{
return WorldGuardExtraFlagsPlugin.mythicMobsEnabled;
}
public static boolean isSupportingFrostwalker()
{
return WorldGuardExtraFlagsPlugin.supportFrostwalker;
}
public static boolean isFastAsyncWorldEditEnabled()
{
return WorldGuardExtraFlagsPlugin.fastAsyncWorldEditEnabled;
}
public static boolean isEssentialsEnabled()
{
return WorldGuardExtraFlagsPlugin.essentialsEnabled;
}
public static Essentials getEssentialsPlugin()
{
return WorldGuardExtraFlagsPlugin.essentialsPlugin;
return WorldGuardExtraFlagsPlugin.essentialsPlugin != null;
}
public static void doUnloadChunkFlagWorldCheck(World world)
{
for (ProtectedRegion region : WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionManager(world).getRegions().values())
for (ProtectedRegion region : WorldGuardExtraFlagsPlugin.worldGuardPlugin.getRegionManager(world).getRegions().values())
{
if (region.getFlag(WorldGuardExtraFlagsPlugin.chunkUnload) == State.DENY)
if (region.getFlag(FlagUtils.CHUNK_UNLOAD) == State.DENY)
{
System.out.println("Loading chunks for region " + region.getId() + " located in " + world.getName());
WorldGuardExtraFlagsPlugin.getPlugin().getLogger().info("Loading chunks for region " + region.getId() + " located in " + world.getName() + " due to chunk-unload flag being deny");
Location min = BukkitUtil.toLocation(world, region.getMinimumPoint());
Location max = BukkitUtil.toLocation(world, region.getMaximumPoint());

View file

@ -1,51 +0,0 @@
package net.goldtreeservers.worldguardextraflags.flags;
import java.util.Set;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
public class BlockedEffectsFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<BlockedEffectsFlag>
{
@Override
public BlockedEffectsFlag create(Session session)
{
return new BlockedEffectsFlag(session);
}
}
protected BlockedEffectsFlag(Session session)
{
super(session);
}
@Override
public void tick(Player player, ApplicableRegionSet set)
{
if (!this.getSession().getManager().hasBypass(player, player.getWorld()))
{
for(Set<PotionEffectType> potionEffects : set.queryAllValues(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.blockedEffects))
{
if (potionEffects != null)
{
for(PotionEffectType potionEffect : potionEffects)
{
if (potionEffect != null)
{
player.removePotionEffect(potionEffect);
}
}
}
}
}
}
}

View file

@ -1,23 +0,0 @@
package net.goldtreeservers.worldguardextraflags.flags;
import com.sk89q.worldguard.protection.flags.FlagContext;
import com.sk89q.worldguard.protection.flags.InvalidFlagFormat;
import com.sk89q.worldguard.protection.flags.StringFlag;
public class CaseForcedStringFlag extends StringFlag
{
private final boolean upperCase;
public CaseForcedStringFlag(String name, boolean upperCase)
{
super(name);
this.upperCase = upperCase;
}
@Override
public String parseInput(FlagContext context) throws InvalidFlagFormat
{
return this.upperCase ? super.parseInput(context).toUpperCase() : super.parseInput(context).toLowerCase();
}
}

View file

@ -1,73 +0,0 @@
package net.goldtreeservers.worldguardextraflags.flags;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
public class CommandOnEntryFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<CommandOnEntryFlag>
{
@Override
public CommandOnEntryFlag create(Session session)
{
return new CommandOnEntryFlag(session);
}
}
protected CommandOnEntryFlag(Session session)
{
super(session);
}
@Override
public final void initialize(Player player, Location current, ApplicableRegionSet set)
{
for(ProtectedRegion region : set)
{
this.runCommands(region.getFlag(WorldGuardExtraFlagsPlugin.commandOnEntry), player);
}
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
for(ProtectedRegion region : entered)
{
this.runCommands(region.getFlag(WorldGuardExtraFlagsPlugin.commandOnEntry), player);
}
return true;
}
public void runCommands(Set<String> commands, Player player)
{
if (commands != null)
{
for(String command : commands)
{
boolean isOp = player.isOp();
try
{
player.setOp(true);
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(player, command.substring(1).replace("%username%", player.getName()));
}
finally
{
player.setOp(isOp);
}
}
}
}
}

View file

@ -1,60 +0,0 @@
package net.goldtreeservers.worldguardextraflags.flags;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
public class CommandOnExitFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<CommandOnExitFlag>
{
@Override
public CommandOnExitFlag create(Session session)
{
return new CommandOnExitFlag(session);
}
}
protected CommandOnExitFlag(Session session)
{
super(session);
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
for(ProtectedRegion region : exited)
{
Set<String> commands = region.getFlag(WorldGuardExtraFlagsPlugin.commandOnExit);
if (commands != null)
{
for(String command : commands)
{
boolean isOp = player.isOp();
try
{
player.setOp(true);
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(player, command.substring(1).replace("%username%", player.getName()));
}
finally
{
player.setOp(isOp);
}
}
}
}
return true;
}
}

View file

@ -1,63 +0,0 @@
package net.goldtreeservers.worldguardextraflags.flags;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
public class ConsoleCommandOnEntryFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<ConsoleCommandOnEntryFlag>
{
@Override
public ConsoleCommandOnEntryFlag create(Session session)
{
return new ConsoleCommandOnEntryFlag(session);
}
}
protected ConsoleCommandOnEntryFlag(Session session)
{
super(session);
}
@Override
public final void initialize(Player player, Location current, ApplicableRegionSet set)
{
for(ProtectedRegion region : set)
{
this.runCommands(region.getFlag(WorldGuardExtraFlagsPlugin.consoleCommandOnEntry), player);
}
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
for(ProtectedRegion region : entered)
{
this.runCommands(region.getFlag(WorldGuardExtraFlagsPlugin.consoleCommandOnEntry), player);
}
return true;
}
public void runCommands(Set<String> commands, Player player)
{
if (commands != null)
{
for(String command : commands)
{
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(WorldGuardExtraFlagsPlugin.getPlugin().getServer().getConsoleSender(), command.substring(1).replace("%username%", player.getName()));
}
}
}
}

View file

@ -1,49 +0,0 @@
package net.goldtreeservers.worldguardextraflags.flags;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
public class ConsoleCommandOnExitFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<ConsoleCommandOnExitFlag>
{
@Override
public ConsoleCommandOnExitFlag create(Session session)
{
return new ConsoleCommandOnExitFlag(session);
}
}
protected ConsoleCommandOnExitFlag(Session session)
{
super(session);
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
for(ProtectedRegion region : exited)
{
Set<String> commands = region.getFlag(WorldGuardExtraFlagsPlugin.consoleCommandOnExit);
if (commands != null)
{
for(String command : commands)
{
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(WorldGuardExtraFlagsPlugin.getPlugin().getServer().getConsoleSender(), command.substring(1).replace("%username%", player.getName()));
}
}
}
return true;
}
}

View file

@ -11,7 +11,9 @@ import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.FlagValueChangeHandler;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import lombok.Getter;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class FlyFlag extends FlagValueChangeHandler<State>
{
@ -24,41 +26,39 @@ public class FlyFlag extends FlagValueChangeHandler<State>
return new FlyFlag(session);
}
}
@Getter private Boolean currentValue;
private Boolean originalFly;
private Boolean currentValue;
protected FlyFlag(Session session)
{
super(session, WorldGuardExtraFlagsPlugin.fly);
super(session, FlagUtils.FLY);
}
private void updateFly(Player player, State newValue, World world)
{
if (!this.getSession().getManager().hasBypass(player, world))
if (!WorldGuardUtils.hasBypass(player) && newValue != null)
{
this.currentValue = newValue == null ? null : newValue == State.ALLOW ? true : false;
boolean value = (newValue == State.ALLOW ? true : false);
if (this.currentValue != null)
{
if (player.getAllowFlight() != this.currentValue)
{
if (this.originalFly == null)
{
this.originalFly = player.getAllowFlight();
}
player.setAllowFlight(this.currentValue);
}
}
else
{
if (this.originalFly != null)
{
player.setAllowFlight(this.originalFly);
this.originalFly = null;
}
}
if (player.getAllowFlight() != value)
{
if (this.originalFly == null)
{
this.originalFly = player.getAllowFlight();
}
player.setAllowFlight(value);
}
}
else
{
if (this.originalFly != null)
{
player.setAllowFlight(this.originalFly);
this.originalFly = null;
}
}
}
@ -72,6 +72,7 @@ public class FlyFlag extends FlagValueChangeHandler<State>
protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType)
{
this.updateFly(player, currentValue, to.getWorld());
return true;
}
@ -79,6 +80,7 @@ public class FlyFlag extends FlagValueChangeHandler<State>
protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType)
{
this.updateFly(player, null, player.getWorld());
return true;
}
@ -92,9 +94,4 @@ public class FlyFlag extends FlagValueChangeHandler<State>
return true;
}
public Boolean getFlyStatys()
{
return this.currentValue;
}
}

View file

@ -1,178 +0,0 @@
package net.goldtreeservers.worldguardextraflags.flags;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
public class GiveEffectsFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<GiveEffectsFlag>
{
@Override
public GiveEffectsFlag create(Session session)
{
return new GiveEffectsFlag(session);
}
}
private HashMap<String, PotionEffect> originalPotionEffects = new HashMap<String, PotionEffect>();
private HashSet<PotionEffectType> effectsGiven = new HashSet<PotionEffectType>();
protected GiveEffectsFlag(Session session)
{
super(session);
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
for(ProtectedRegion enterd : entered)
{
Set<PotionEffect> potionEffects = enterd.getFlag(WorldGuardExtraFlagsPlugin.giveEffects);
if (potionEffects != null)
{
for (PotionEffect potionEffect : potionEffects)
{
if (potionEffect != null)
{
if (player.hasPotionEffect(potionEffect.getType()))
{
if (!this.originalPotionEffects.containsKey(potionEffect.getType().getName()))
{
for(PotionEffect currentPotionEffect : player.getActivePotionEffects())
{
if (currentPotionEffect.getType().getName().equals(potionEffect.getType().getName()))
{
this.originalPotionEffects.put(potionEffect.getType().getName(), currentPotionEffect);
break;
}
}
}
player.removePotionEffect(potionEffect.getType());
}
this.effectsGiven.add(potionEffect.getType());
player.addPotionEffect(potionEffect);
}
}
}
}
for(ProtectedRegion exitd : exited)
{
Set<PotionEffect> potionEffects = exitd.getFlag(WorldGuardExtraFlagsPlugin.giveEffects);
if (potionEffects != null)
{
for(PotionEffect potionEffect : potionEffects)
{
if (potionEffect != null)
{
this.effectsGiven.remove(potionEffect.getType());
player.removePotionEffect(potionEffect.getType());
PotionEffect oldPotionEffect = this.originalPotionEffects.remove(potionEffect.getType().getName());
if (oldPotionEffect != null)
{
player.addPotionEffect(oldPotionEffect);
}
}
}
}
}
return true;
}
@Override
public void tick(Player player, ApplicableRegionSet set)
{
if (this.originalPotionEffects != null)
{
for(PotionEffect oldPotionEffect : this.originalPotionEffects.values().toArray(new PotionEffect[0]))
{
this.originalPotionEffects.remove(oldPotionEffect);
this.originalPotionEffects.put(oldPotionEffect.getType().getName(), new PotionEffect(oldPotionEffect.getType(), oldPotionEffect.getDuration() - 20, oldPotionEffect.getAmplifier(), oldPotionEffect.isAmbient(), oldPotionEffect.hasParticles()));
}
}
List<PotionEffectType> shouldRemove = new ArrayList<PotionEffectType>(this.effectsGiven);
for(Set<PotionEffect> potionEffects : set.queryAllValues(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.giveEffects))
{
if (potionEffects != null)
{
for(PotionEffect potionEffect : potionEffects)
{
if (potionEffect != null)
{
if (player.hasPotionEffect(potionEffect.getType()))
{
for(PotionEffect effect : player.getActivePotionEffects())
{
if (effect.getType().equals(potionEffect.getType()))
{
if (effect.getAmplifier() != potionEffect.getAmplifier())
{
player.removePotionEffect(potionEffect.getType());
}
}
}
player.addPotionEffect(potionEffect);
}
else
{
player.addPotionEffect(potionEffect);
}
this.effectsGiven.add(potionEffect.getType());
shouldRemove.remove(potionEffect.getType());
}
}
}
}
for(PotionEffectType effectType : shouldRemove)
{
PotionEffect oldPotionEffect = this.originalPotionEffects.remove(effectType.getName());
if (oldPotionEffect != null)
{
if (player.hasPotionEffect(effectType))
{
player.removePotionEffect(effectType);
}
player.addPotionEffect(oldPotionEffect);
}
}
}
public void drinkMilk()
{
this.originalPotionEffects.clear();
}
public void drinkPotion(Collection<PotionEffect> effects)
{
for(PotionEffect potionEffect : effects)
{
this.originalPotionEffects.put(potionEffect.getType().getName(), potionEffect);
}
}
}

View file

@ -11,7 +11,8 @@ import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.FlagValueChangeHandler;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class GlideFlag extends FlagValueChangeHandler<State>
{
@ -30,35 +31,33 @@ public class GlideFlag extends FlagValueChangeHandler<State>
protected GlideFlag(Session session)
{
super(session, WorldGuardExtraFlagsPlugin.glide);
super(session, FlagUtils.GLIDE);
}
private void updateGlide(Player player, State newValue, World world)
{
if (!this.getSession().getManager().hasBypass(player, world))
if (!WorldGuardUtils.hasBypass(player) && newValue != null)
{
this.currentValue = newValue == null ? null : newValue == State.ALLOW ? true : false;
boolean value = (newValue == State.ALLOW ? true : false);
if (this.currentValue != null)
{
if (player.isGliding() != this.currentValue)
{
if (this.originalGlide == null)
{
this.originalGlide = player.isGliding();
}
player.setGliding(this.currentValue);
}
}
else
{
if (this.originalGlide != null)
{
player.setGliding(this.originalGlide);
this.originalGlide = null;
}
}
if (player.isGliding() != value)
{
if (this.originalGlide == null)
{
this.originalGlide = player.isGliding();
}
player.setGliding(value);
}
}
else
{
if (this.originalGlide != null)
{
player.setGliding(this.originalGlide);
this.originalGlide = null;
}
}
}
@ -72,6 +71,7 @@ public class GlideFlag extends FlagValueChangeHandler<State>
protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType)
{
this.updateGlide(player, currentValue, to.getWorld());
return true;
}
@ -79,6 +79,7 @@ public class GlideFlag extends FlagValueChangeHandler<State>
protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType)
{
this.updateGlide(player, null, player.getWorld());
return true;
}

View file

@ -2,20 +2,19 @@ package net.goldtreeservers.worldguardextraflags.flags;
import javax.annotation.Nullable;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.earth2me.essentials.User;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.FlagValueChangeHandler;
import com.sk89q.worldguard.session.handler.Handler;
import lombok.Getter;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class GodmodeFlag extends FlagValueChangeHandler<State>
public class GodmodeFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<GodmodeFlag>
@ -27,82 +26,59 @@ public class GodmodeFlag extends FlagValueChangeHandler<State>
}
}
private Boolean isGodmodeEnabled;
@Getter private Boolean isGodmodeEnabled;
private Boolean originalEssentialsGodmode;
protected GodmodeFlag(Session session)
{
super(session, WorldGuardExtraFlagsPlugin.godmode);
super(session);
}
@Nullable
@Override
public State getInvincibility(Player player)
{
if (!this.getSession().getManager().hasBypass(player, player.getWorld()))
if (!WorldGuardUtils.hasBypass(player))
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
return regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.godmode);
State state = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation()).queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.GODMODE);
if (state != null)
{
this.isGodmodeEnabled = (state == State.ALLOW ? true : false);
}
else
{
this.isGodmodeEnabled = null;
}
if (WorldGuardExtraFlagsPlugin.isEssentialsEnable())
{
User user = WorldGuardExtraFlagsPlugin.getEssentialsPlugin().getUser(player);
if (this.isGodmodeEnabled != null)
{
if (this.isGodmodeEnabled != user.isGodModeEnabled())
{
this.originalEssentialsGodmode = user.isGodModeEnabled();
user.setGodModeEnabled(this.isGodmodeEnabled);
}
}
else
{
if (this.originalEssentialsGodmode != null)
{
user.setGodModeEnabled(this.isGodmodeEnabled);
this.originalEssentialsGodmode = null;
}
}
}
return state;
}
else
{
return null;
}
}
public void updateGodmode(Player player, State newValue, World world)
{
if (!this.getSession().getManager().hasBypass(player, world))
{
this.isGodmodeEnabled = newValue == null ? null : newValue == State.ALLOW ? true : false;
if (this.isGodmodeEnabled != null)
{
if (WorldGuardExtraFlagsPlugin.isEssentialsEnabled())
{
if (this.originalEssentialsGodmode == null)
{
this.originalEssentialsGodmode = WorldGuardExtraFlagsPlugin.getEssentialsPlugin().getUser(player).isGodModeEnabledRaw();
}
WorldGuardExtraFlagsPlugin.getEssentialsPlugin().getUser(player).setGodModeEnabled(this.isGodmodeEnabled);
}
}
else
{
this.isGodmodeEnabled = null;
if (this.originalEssentialsGodmode != null)
{
WorldGuardExtraFlagsPlugin.getEssentialsPlugin().getUser(player).setGodModeEnabled(this.originalEssentialsGodmode);
this.originalEssentialsGodmode = null;
}
}
}
}
@Override
protected void onInitialValue(Player player, ApplicableRegionSet set, State value)
{
this.updateGodmode(player, value, player.getWorld());
}
@Override
protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType)
{
this.updateGodmode(player, currentValue, player.getWorld());
return true;
}
@Override
protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType)
{
this.updateGodmode(player, null, player.getWorld());
return true;
}
public Boolean getIsGodmodEnbled()
{
return this.isGodmodeEnabled;
}
}

View file

@ -10,7 +10,7 @@ import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.FlagValueChangeHandler;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
public class WalkSpeedFlag extends FlagValueChangeHandler<Double>
{
@ -28,7 +28,7 @@ public class WalkSpeedFlag extends FlagValueChangeHandler<Double>
protected WalkSpeedFlag(Session session)
{
super(session, WorldGuardExtraFlagsPlugin.walkSpeed);
super(session, FlagUtils.WALK_SPEED);
}
private void updateWalkSpeed(Player player, Double newValue, World world)
@ -46,10 +46,10 @@ public class WalkSpeedFlag extends FlagValueChangeHandler<Double>
if (player.getWalkSpeed() != newValue.floatValue())
{
if (this.originalWalkSpeed == null)
{
this.originalWalkSpeed = player.getWalkSpeed();
}
if (this.originalWalkSpeed == null)
{
this.originalWalkSpeed = player.getWalkSpeed();
}
player.setWalkSpeed(newValue.floatValue());
}
@ -59,6 +59,7 @@ public class WalkSpeedFlag extends FlagValueChangeHandler<Double>
if (this.originalWalkSpeed != null)
{
player.setWalkSpeed(this.originalWalkSpeed);
this.originalWalkSpeed = null;
}
}
@ -74,6 +75,7 @@ public class WalkSpeedFlag extends FlagValueChangeHandler<Double>
protected boolean onSetValue(Player player, Location from, Location to, ApplicableRegionSet toSet, Double currentValue, Double lastValue, MoveType moveType)
{
this.updateWalkSpeed(player, currentValue, to.getWorld());
return true;
}
@ -81,6 +83,7 @@ public class WalkSpeedFlag extends FlagValueChangeHandler<Double>
protected boolean onAbsentValue(Player player, Location from, Location to, ApplicableRegionSet toSet, Double lastValue, MoveType moveType)
{
this.updateWalkSpeed(player, null, player.getWorld());
return true;
}
}

View file

@ -0,0 +1,136 @@
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.helpers.PotionEffectDetails;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.TimeUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class BlockedEffectsFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<BlockedEffectsFlag>
{
@Override
public BlockedEffectsFlag create(Session session)
{
return new BlockedEffectsFlag(session);
}
}
private HashMap<PotionEffectType, PotionEffectDetails> removedEffects;
protected BlockedEffectsFlag(Session session)
{
super(session);
this.removedEffects = new HashMap<>();
}
@Override
public void initialize(Player player, Location current, ApplicableRegionSet set)
{
if (!WorldGuardUtils.hasBypass(player))
{
this.check(player, set);
}
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!WorldGuardUtils.hasBypass(player))
{
this.check(player, toSet);
}
return true;
}
@Override
public void tick(Player player, ApplicableRegionSet set)
{
if (!WorldGuardUtils.hasBypass(player))
{
this.check(player, set);
}
}
private void check(Player player, ApplicableRegionSet set)
{
Set<PotionEffectType> potionEffects = set.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.BLOCKED_EFFECTS);
if (potionEffects != null && potionEffects.size() > 0)
{
for (PotionEffectType effectType : potionEffects)
{
PotionEffect effect = null;
for(PotionEffect activeEffect : player.getActivePotionEffects())
{
if (activeEffect.getType().equals(effectType))
{
effect = activeEffect;
break;
}
}
if (effect != null)
{
if (WorldGuardExtraFlagsPlugin.isSupportsMobEffectColors())
{
this.removedEffects.put(effect.getType(), new PotionEffectDetails(TimeUtils.getUnixtimestamp() + effect.getDuration() / 20, effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.getColor()));
}
else
{
this.removedEffects.put(effect.getType(), new PotionEffectDetails(TimeUtils.getUnixtimestamp() + effect.getDuration() / 20, effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), null));
}
player.removePotionEffect(effectType);
}
}
}
Iterator<Entry<PotionEffectType, PotionEffectDetails>> potionEffects_ = this.removedEffects.entrySet().iterator();
while (potionEffects_.hasNext())
{
Entry<PotionEffectType, PotionEffectDetails> potionEffect = potionEffects_.next();
if (potionEffects == null || !potionEffects.contains(potionEffect.getKey()))
{
PotionEffectDetails removedEffect = potionEffect.getValue();
if (removedEffect != null)
{
int timeLeft = removedEffect.getTimeLeftInTicks();
if (timeLeft > 0)
{
if (WorldGuardExtraFlagsPlugin.isSupportsMobEffectColors())
{
player.addPotionEffect(new PotionEffect(potionEffect.getKey(), timeLeft, removedEffect.getAmplifier(), removedEffect.isAmbient(), removedEffect.isParticles(), removedEffect.getColor()), true);
}
else
{
player.addPotionEffect(new PotionEffect(potionEffect.getKey(), timeLeft, removedEffect.getAmplifier(), removedEffect.isAmbient(), removedEffect.isParticles()), true);
}
}
}
potionEffects_.remove();
}
}
}
}

View file

@ -0,0 +1,89 @@
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class CommandOnEntryFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<CommandOnEntryFlag>
{
@Override
public CommandOnEntryFlag create(Session session)
{
return new CommandOnEntryFlag(session);
}
}
private Collection<Set<String>> lastCommands;
protected CommandOnEntryFlag(Session session)
{
super(session);
this.lastCommands = new ArrayList<>();
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!WorldGuardUtils.hasBypass(player))
{
Collection<Set<String>> commands = toSet.queryAllValues(WorldGuardUtils.wrapPlayer(player), FlagUtils.COMMAND_ON_ENTRY);
boolean isOp = player.isOp();
try
{
player.setOp(true);
for(Set<String> commands_ : commands)
{
if (!this.lastCommands.contains(commands_))
{
for(String command : commands_)
{
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(player, command.substring(1).replace("%username%", player.getName())); //TODO: Make this better
}
break;
}
}
}
finally
{
player.setOp(isOp);
}
this.lastCommands = new ArrayList<Set<String>>(commands);
if (!this.lastCommands.isEmpty())
{
for (ProtectedRegion region : toSet)
{
Set<String> commands_ = region.getFlag(FlagUtils.COMMAND_ON_ENTRY);
if (commands_ != null)
{
this.lastCommands.add(commands_);
}
}
}
}
return true;
}
}

View file

@ -0,0 +1,95 @@
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class CommandOnExitFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<CommandOnExitFlag>
{
@Override
public CommandOnExitFlag create(Session session)
{
return new CommandOnExitFlag(session);
}
}
private Collection<Set<String>> lastCommands;
protected CommandOnExitFlag(Session session)
{
super(session);
this.lastCommands = new ArrayList<>();
}
@Override
public void initialize(Player player, Location current, ApplicableRegionSet set)
{
this.lastCommands = set.queryAllValues(WorldGuardUtils.wrapPlayer(player), FlagUtils.COMMAND_ON_EXIT);
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!WorldGuardUtils.hasBypass(player))
{
Collection<Set<String>> commands = toSet.queryAllValues(WorldGuardUtils.wrapPlayer(player), FlagUtils.COMMAND_ON_EXIT);
if (!commands.isEmpty())
{
for (ProtectedRegion region : toSet)
{
Set<String> commands_ = region.getFlag(FlagUtils.COMMAND_ON_EXIT);
if (commands_ != null)
{
this.lastCommands.add(commands_);
}
}
}
boolean isOp = player.isOp();
try
{
player.setOp(true);
for(Set<String> commands_ : commands)
{
if (!this.lastCommands.contains(commands_))
{
for(String command : commands_)
{
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(player, command.substring(1).replace("%username%", player.getName())); //TODO: Make this better
}
break;
}
}
}
finally
{
player.setOp(isOp);
}
this.lastCommands = commands;
}
return true;
}
}

View file

@ -0,0 +1,78 @@
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class ConsoleCommandOnEntryFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<ConsoleCommandOnEntryFlag>
{
@Override
public ConsoleCommandOnEntryFlag create(Session session)
{
return new ConsoleCommandOnEntryFlag(session);
}
}
private Collection<Set<String>> lastCommands;
protected ConsoleCommandOnEntryFlag(Session session)
{
super(session);
this.lastCommands = new ArrayList<>();
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!WorldGuardUtils.hasBypass(player))
{
Collection<Set<String>> commands = toSet.queryAllValues(WorldGuardUtils.wrapPlayer(player), FlagUtils.CONSOLE_COMMAND_ON_ENTRY);
for(Set<String> commands_ : commands)
{
if (!this.lastCommands.contains(commands_))
{
for(String command : commands_)
{
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(WorldGuardExtraFlagsPlugin.getPlugin().getServer().getConsoleSender(), command.substring(1).replace("%username%", player.getName())); //TODO: Make this better
}
break;
}
}
this.lastCommands = new ArrayList<Set<String>>(commands);
if (!this.lastCommands.isEmpty())
{
for (ProtectedRegion region : toSet)
{
Set<String> commands_ = region.getFlag(FlagUtils.CONSOLE_COMMAND_ON_ENTRY);
if (commands_ != null)
{
this.lastCommands.add(commands_);
}
}
}
}
return true;
}
}

View file

@ -0,0 +1,95 @@
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class ConsoleCommandOnExitFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<ConsoleCommandOnExitFlag>
{
@Override
public ConsoleCommandOnExitFlag create(Session session)
{
return new ConsoleCommandOnExitFlag(session);
}
}
private Collection<Set<String>> lastCommands;
protected ConsoleCommandOnExitFlag(Session session)
{
super(session);
this.lastCommands = new ArrayList<>();
}
@Override
public void initialize(Player player, Location current, ApplicableRegionSet set)
{
this.lastCommands = set.queryAllValues(WorldGuardUtils.wrapPlayer(player), FlagUtils.CONSOLE_COMMAND_ON_EXIT);
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!WorldGuardUtils.hasBypass(player))
{
Collection<Set<String>> commands = toSet.queryAllValues(WorldGuardUtils.wrapPlayer(player), FlagUtils.CONSOLE_COMMAND_ON_EXIT);
if (!commands.isEmpty())
{
for (ProtectedRegion region : toSet)
{
Set<String> commands_ = region.getFlag(FlagUtils.CONSOLE_COMMAND_ON_EXIT);
if (commands_ != null)
{
this.lastCommands.add(commands_);
}
}
}
boolean isOp = player.isOp();
try
{
player.setOp(true);
for(Set<String> commands_ : commands)
{
if (!this.lastCommands.contains(commands_))
{
for(String command : commands_)
{
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(WorldGuardExtraFlagsPlugin.getPlugin().getServer().getConsoleSender(), command.substring(1).replace("%username%", player.getName())); //TODO: Make this better
}
break;
}
}
}
finally
{
player.setOp(isOp);
}
this.lastCommands = commands;
}
return true;
}
}

View file

@ -0,0 +1,194 @@
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.helpers.PotionEffectDetails;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.TimeUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class GiveEffectsFlag extends Handler
{
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<GiveEffectsFlag>
{
@Override
public GiveEffectsFlag create(Session session)
{
return new GiveEffectsFlag(session);
}
}
private HashMap<PotionEffectType, PotionEffectDetails> removedEffects;
private HashSet<PotionEffectType> givenEffects;
protected GiveEffectsFlag(Session session)
{
super(session);
this.removedEffects = new HashMap<>();
this.givenEffects = new HashSet<>();
}
@Override
public void initialize(Player player, Location current, ApplicableRegionSet set)
{
if (!WorldGuardUtils.hasBypass(player))
{
this.check(player, set);
}
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!WorldGuardUtils.hasBypass(player))
{
this.check(player, toSet);
}
return true;
}
@Override
public void tick(Player player, ApplicableRegionSet set)
{
if (!WorldGuardUtils.hasBypass(player))
{
this.check(player, set);
}
}
private void check(Player player, ApplicableRegionSet set)
{
Set<PotionEffect> potionEffects = set.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.GIVE_EFFECTS);
if (potionEffects != null && potionEffects.size() > 0)
{
for (PotionEffect effect : potionEffects)
{
PotionEffect effect_ = null;
for(PotionEffect activeEffect : player.getActivePotionEffects())
{
if (activeEffect.getType().equals(effect.getType()))
{
effect_ = activeEffect;
break;
}
}
if (this.givenEffects.add(effect.getType()) && effect_ != null)
{
if (WorldGuardExtraFlagsPlugin.isSupportsMobEffectColors())
{
this.removedEffects.put(effect_.getType(), new PotionEffectDetails(TimeUtils.getUnixtimestamp() + effect_.getDuration() / 20, effect_.getAmplifier(), effect_.isAmbient(), effect_.hasParticles(), effect_.getColor()));
}
else
{
this.removedEffects.put(effect_.getType(), new PotionEffectDetails(TimeUtils.getUnixtimestamp() + effect_.getDuration() / 20, effect_.getAmplifier(), effect_.isAmbient(), effect_.hasParticles(), null));
}
player.removePotionEffect(effect_.getType());
}
player.addPotionEffect(effect, true);
}
}
Iterator<PotionEffectType> effectTypes = this.givenEffects.iterator();
while (effectTypes.hasNext())
{
PotionEffectType type = effectTypes.next();
if (potionEffects != null && potionEffects.size() > 0)
{
boolean skip = false;
for (PotionEffect effect : potionEffects)
{
if (effect.getType().equals(type))
{
skip = true;
break;
}
}
if (skip)
{
continue;
}
}
player.removePotionEffect(type);
effectTypes.remove();
}
Iterator<Entry<PotionEffectType, PotionEffectDetails>> potionEffects_ = this.removedEffects.entrySet().iterator();
while (potionEffects_.hasNext())
{
Entry<PotionEffectType, PotionEffectDetails> effect = potionEffects_.next();
if (!this.givenEffects.contains(effect.getKey()))
{
PotionEffectDetails removedEffect = effect.getValue();
if (removedEffect != null)
{
int timeLeft = removedEffect.getTimeLeftInTicks();
if (timeLeft > 0)
{
if (WorldGuardExtraFlagsPlugin.isSupportsMobEffectColors())
{
player.addPotionEffect(new PotionEffect(effect.getKey(), timeLeft, removedEffect.getAmplifier(), removedEffect.isAmbient(), removedEffect.isParticles(), removedEffect.getColor()), true);
}
else
{
player.addPotionEffect(new PotionEffect(effect.getKey(), timeLeft, removedEffect.getAmplifier(), removedEffect.isAmbient(), removedEffect.isParticles()), true);
}
}
}
potionEffects_.remove();
}
}
}
public void drinkMilk(Player player)
{
this.removedEffects.clear();
this.check(player, WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation()));
}
public void drinkPotion(Player player, Collection<PotionEffect> effects)
{
for(PotionEffect effect : effects)
{
if (WorldGuardExtraFlagsPlugin.isSupportsMobEffectColors())
{
this.removedEffects.put(effect.getType(), new PotionEffectDetails(TimeUtils.getUnixtimestamp() + effect.getDuration() / 20, effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.getColor()));
}
else
{
this.removedEffects.put(effect.getType(), new PotionEffectDetails(TimeUtils.getUnixtimestamp() + effect.getDuration() / 20, effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), null));
}
}
this.check(player, WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation()));
}
}

View file

@ -1,7 +1,7 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
@ -16,7 +16,9 @@ import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.SoundData;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class PlaySoundsFlag extends Handler
{
@ -29,78 +31,51 @@ public class PlaySoundsFlag extends Handler
return new PlaySoundsFlag(session);
}
}
private HashMap<String, BukkitRunnable> runnables = new HashMap<>();
private HashMap<String, BukkitRunnable> runnables;
protected PlaySoundsFlag(Session session)
{
super(session);
this.runnables = new HashMap<>();
}
@Override
public void initialize(Player player, Location current, ApplicableRegionSet set)
{
if (!WorldGuardUtils.hasBypass(player))
{
this.check(player, set);
}
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
for(ProtectedRegion region : entered)
if (!WorldGuardUtils.hasBypass(player))
{
Set<SoundData> sounds = region.getFlag(WorldGuardExtraFlagsPlugin.playSounds);
if (sounds != null)
{
for(SoundData sound : sounds)
{
BukkitRunnable runnable = new BukkitRunnable()
{
@Override
public void run()
{
player.playSound(player.getLocation(), sound.getSound(), Float.MAX_VALUE, 1);
}
@Override
public void cancel()
{
super.cancel();
try
{
player.stopSound(sound.getSound());
}
catch(NoSuchMethodError ex)
{
}
}
};
this.runnables.put(sound.getSound(), runnable);
runnable.runTaskTimer(WorldGuardExtraFlagsPlugin.getPlugin(), 0L, sound.getInterval());
}
}
this.check(player, toSet);
}
for(ProtectedRegion region : exited)
{
Set<SoundData> sounds = region.getFlag(WorldGuardExtraFlagsPlugin.playSounds);
if (sounds != null)
{
for(SoundData sound : sounds)
{
this.runnables.remove(sound.getSound()).cancel();
}
}
}
return true;
}
@Override
public void tick(Player player, ApplicableRegionSet set)
{
HashSet<String> foundSongs = new HashSet<String>();
for(Set<SoundData> sounds : set.queryAllValues(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.playSounds))
if (!WorldGuardUtils.hasBypass(player))
{
for(SoundData sound : sounds)
this.check(player, set);
}
}
private void check(Player player, ApplicableRegionSet set)
{
Set<SoundData> soundData = set.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.PLAY_SOUNDS);
if (soundData != null && soundData.size() > 0)
{
for(SoundData sound : soundData)
{
foundSongs.add(sound.getSound());
if (!this.runnables.containsKey(sound.getSound()))
{
BukkitRunnable runnable = new BukkitRunnable()
@ -116,29 +91,45 @@ public class PlaySoundsFlag extends Handler
{
super.cancel();
try
if (WorldGuardExtraFlagsPlugin.isSupportsStopSound())
{
player.stopSound(sound.getSound());
}
catch(NoSuchMethodError ex)
{
}
}
};
this.runnables.put(sound.getSound(), runnable);
runnable.runTaskTimer(WorldGuardExtraFlagsPlugin.getPlugin(), 0L, sound.getInterval());
}
}
}
for(Entry<String, BukkitRunnable> runnables : this.runnables.entrySet())
Iterator<Entry<String, BukkitRunnable>> runnables = this.runnables.entrySet().iterator();
while (runnables.hasNext())
{
if (!foundSongs.contains(runnables.getKey()))
Entry<String, BukkitRunnable> runnable = runnables.next();
if (soundData != null && soundData.size() > 0)
{
this.runnables.remove(runnables.getKey()).cancel();;
boolean skip = false;
for(SoundData sound : soundData)
{
if (sound.getSound().equals(runnable.getKey()))
{
skip = true;
break;
}
}
if (skip)
{
continue;
}
}
runnable.getValue().cancel();
runnables.remove();
}
}
}

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.Set;
@ -14,6 +14,8 @@ import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class TeleportOnEntryFlag extends Handler
{
@ -36,15 +38,19 @@ public class TeleportOnEntryFlag extends Handler
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!player.hasMetadata("WorldGuardExtraFlagsWaitingForTeleportationToBeDone"))
if (!WorldGuardUtils.hasBypass(player))
{
com.sk89q.worldedit.Location location = toSet.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.teleportOnEntry);
if (location != null)
if (!player.hasMetadata("WGEFP-TPOEF"))
{
player.setMetadata("WorldGuardExtraFlagsWaitingForTeleportationToBeDone", new FixedMetadataValue(WorldGuardExtraFlagsPlugin.getPlugin(), null));
player.teleport(BukkitUtil.toLocation(location));
com.sk89q.worldedit.Location location = toSet.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.TELEPORT_ON_ENTRY);
if (location != null)
{
player.setMetadata("WGEFP-TPOEF", new FixedMetadataValue(WorldGuardExtraFlagsPlugin.getPlugin(), null));
player.teleport(BukkitUtil.toLocation(location));
}
}
}
return true;
}
}

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import java.util.Set;
@ -14,6 +14,8 @@ import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class TeleportOnExitFlag extends Handler
{
@ -36,19 +38,24 @@ public class TeleportOnExitFlag extends Handler
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!player.hasMetadata("WorldGuardExtraFlagsWaitingForTeleportationToBeDone"))
if (!WorldGuardUtils.hasBypass(player))
{
for(ProtectedRegion region : exited)
if (!player.hasMetadata("WGEFP-TPOEF"))
{
com.sk89q.worldedit.Location location = region.getFlag(WorldGuardExtraFlagsPlugin.teleportOnExit);
if (location != null)
for (ProtectedRegion exitd : exited)
{
player.setMetadata("WorldGuardExtraFlagsWaitingForTeleportationToBeDone", new FixedMetadataValue(WorldGuardExtraFlagsPlugin.getPlugin(), null));
player.teleport(BukkitUtil.toLocation(location));
break;
com.sk89q.worldedit.Location location = exitd.getFlag(FlagUtils.TELEPORT_ON_EXIT);
if (location != null)
{
player.setMetadata("WGEFP-TPOEF", new FixedMetadataValue(WorldGuardExtraFlagsPlugin.getPlugin(), null));
player.teleport(BukkitUtil.toLocation(location));
break;
}
}
}
}
return true;
}
}

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.handlers;
import org.bukkit.entity.Player;
@ -9,10 +9,11 @@ import com.sk89q.worldedit.bukkit.BukkitUtil;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extent.AbstractDelegateExtent;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class WorldEditFlag extends AbstractDelegateExtent
{
@ -28,15 +29,13 @@ public class WorldEditFlag extends AbstractDelegateExtent
public boolean setBlock(Vector location, BaseBlock block) throws WorldEditException
{
Player player = WorldGuardExtraFlagsPlugin.getPlugin().getServer().getPlayer(this.actor.getUniqueId());
if (WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().hasBypass(player, player.getWorld()))
if (WorldGuardUtils.hasBypass(player))
{
return super.setBlock(location, block);
}
else
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(BukkitUtil.toLocation(player.getWorld(), location));
State state = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.worldEdit);
if (state != State.DENY)
if (WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(BukkitUtil.toLocation(player.getWorld(), location)).queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.WORLDEDIT) != State.DENY)
{
return super.setBlock(location, block);
}

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.helpers;
import java.util.Set;

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.helpers;
import org.bukkit.Material;
@ -22,7 +22,15 @@ public class MaterialFlag extends Flag<Material>
@Override
public Material parseInput(FlagContext context) throws InvalidFlagFormat
{
return Material.getMaterial(context.getUserInput().trim().toUpperCase());
Material material = Material.getMaterial(context.getUserInput().trim().toUpperCase());
if (material != null)
{
return material;
}
else
{
throw new InvalidFlagFormat("Unable to find the material!");
}
}
@Override

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.helpers;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
@ -26,7 +26,15 @@ public class PotionEffectFlag extends Flag<PotionEffect>
String[] splitd = context.getUserInput().trim().split(" ");
if (splitd.length == 2)
{
return new PotionEffect(PotionEffectType.getByName(splitd[0]), Integer.MAX_VALUE, new Integer(splitd[1]));
PotionEffectType potionEffect = PotionEffectType.getByName(splitd[0]);
if (potionEffect != null)
{
return new PotionEffect(potionEffect, 100, new Integer(splitd[1]));
}
else
{
throw new InvalidFlagFormat("Unable to find the potion effect!");
}
}
else
{
@ -38,6 +46,6 @@ public class PotionEffectFlag extends Flag<PotionEffect>
public PotionEffect unmarshal(Object o)
{
String[] splitd = o.toString().split(" ");
return new PotionEffect(PotionEffectType.getByName(splitd[0]), Integer.MAX_VALUE, new Integer(splitd[1]));
return new PotionEffect(PotionEffectType.getByName(splitd[0]), 100, new Integer(splitd[1]));
}
}

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.helpers;
import org.bukkit.potion.PotionEffectType;
@ -22,7 +22,15 @@ public class PotionEffectTypeFlag extends Flag<PotionEffectType>
@Override
public PotionEffectType parseInput(FlagContext context) throws InvalidFlagFormat
{
return PotionEffectType.getByName(context.getUserInput().trim());
PotionEffectType potionEffect = PotionEffectType.getByName(context.getUserInput().trim());
if (potionEffect != null)
{
return potionEffect;
}
else
{
throw new InvalidFlagFormat("Unable to find the potion effect!");
}
}
@Override

View file

@ -1,4 +1,4 @@
package net.goldtreeservers.worldguardextraflags.flags;
package net.goldtreeservers.worldguardextraflags.flags.helpers;
import com.sk89q.worldguard.protection.flags.Flag;
import com.sk89q.worldguard.protection.flags.FlagContext;

View file

@ -0,0 +1,27 @@
package net.goldtreeservers.worldguardextraflags.helpers;
import org.bukkit.Color;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import net.goldtreeservers.worldguardextraflags.utils.TimeUtils;
@RequiredArgsConstructor
public class PotionEffectDetails
{
@Getter private final double endTime;
@Getter private final int amplifier;
@Getter private final boolean ambient;
@Getter private final boolean particles;
@Getter private final Color color;
public double getTimeLeft()
{
return this.endTime - TimeUtils.getUnixtimestamp();
}
public int getTimeLeftInTicks()
{
return (int)(this.getTimeLeft() / 0.05);
}
}

View file

@ -4,6 +4,7 @@ import java.util.Set;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Player;
import org.bukkit.event.Event.Result;
import org.bukkit.event.EventHandler;
@ -17,30 +18,28 @@ import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class BlockListener implements Listener
{
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityBlockFormEvent(EntityBlockFormEvent event)
{
if (WorldGuardExtraFlagsPlugin.isSupportingFrostwalker())
if (WorldGuardExtraFlagsPlugin.isSupportFrostwalker())
{
if (event.getNewState().getType() == Material.FROSTED_ICE)
BlockState newState = event.getNewState();
if (newState.getType() == Material.FROSTED_ICE)
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getNewState().getLocation());
State state = null;
if (event.getEntity() instanceof Player)
{
state = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(((Player)event.getEntity())), WorldGuardExtraFlagsPlugin.frostwalker);
}
else
{
state = regions.queryValue(null, WorldGuardExtraFlagsPlugin.frostwalker);
}
if (state == State.DENY)
{
event.setCancelled(true);
Player player = (Player)event.getEntity();
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(newState.getLocation());
if (regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.FROSTWALKER) == State.DENY)
{
event.setCancelled(true);
}
}
}
}
@ -56,20 +55,20 @@ public class BlockListener implements Listener
{
Player player = (Player)cause;
if (!WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().hasBypass(player, player.getWorld()))
if (!WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().hasBypass(player, player.getWorld()))
{
for(Block block : event.getBlocks())
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
Set<Material> state = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.allowBlockPlace);
Set<Material> state = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.ALLOW_BLOCK_PLACE);
if (state != null && state.contains(block.getType()))
{
event.setResult(Result.ALLOW);
}
else
{
Set<Material> state2 = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.denyBlockPlace);
Set<Material> state2 = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.DENY_BLOCK_PLACE);
if (state2 != null && state2.contains(block.getType()))
{
event.setResult(Result.DENY);
@ -96,20 +95,20 @@ public class BlockListener implements Listener
{
Player player = (Player)cause;
if (!WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().hasBypass(player, player.getWorld()))
if (!WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().hasBypass(player, player.getWorld()))
{
for(Block block : event.getBlocks())
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
Set<Material> state = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.allowBlockBreak);
Set<Material> state = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.ALLOW_BLOCK_BREAK);
if (state != null && state.contains(block.getType()))
{
event.setResult(Result.ALLOW);
}
else
{
Set<Material> state2 = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player), WorldGuardExtraFlagsPlugin.denyBlockBreak);
Set<Material> state2 = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.DENY_BLOCK_BREAK);
if (state2 != null && state2.contains(block.getType()))
{
event.setResult(Result.DENY);

View file

@ -10,6 +10,7 @@ import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
public class EntityListener implements Listener
{
@ -18,12 +19,11 @@ public class EntityListener implements Listener
{
for(Block block : event.getBlocks())
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
State allowNetherPortals = regions.queryValue(null, WorldGuardExtraFlagsPlugin.netherPortals);
if (allowNetherPortals == State.DENY)
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(block.getLocation());
if (regions.queryValue(null, FlagUtils.NETHER_PORTALS) == State.DENY)
{
event.setCancelled(true);
return;
break;
}
}
}

View file

@ -1,6 +1,5 @@
package net.goldtreeservers.worldguardextraflags.listeners;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@ -11,29 +10,28 @@ import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.StateFlag.State;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class EntityListenerOnePointNine implements Listener
{
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityToggleGlideEvent(EntityToggleGlideEvent event)
{
if (event.getEntity() instanceof LivingEntity)
if (event.getEntity() instanceof Player)
{
if (event.getEntity() instanceof Player)
Player player = (Player)event.getEntity();
if (!WorldGuardUtils.hasBypass(player))
{
if (WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().hasBypass((Player)event.getEntity(), ((Player)event.getEntity()).getWorld()))
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
State state = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.GLIDE);
if (state != null)
{
return;
event.setCancelled(true);
player.setGliding(state == State.ALLOW);
}
}
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getEntity().getLocation());
State allowGliding = regions.queryValue(event.getEntity() instanceof Player ? WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer((Player)event.getEntity()) : null, WorldGuardExtraFlagsPlugin.glide);
if (allowGliding != null)
{
event.setCancelled(true);
((LivingEntity)event.getEntity()).setGliding(allowGliding == State.ALLOW);
}
}
}
}

View file

@ -7,15 +7,16 @@ import org.bukkit.event.Listener;
import net.ess3.api.events.GodStatusChangeEvent;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.GodmodeFlag;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
public class EssentialsListener implements Listener
{
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onGodStatusChangeEvent(GodStatusChangeEvent event)
{
if (!WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().hasBypass(event.getController().getBase(), event.getController().getBase().getWorld()))
if (!WorldGuardUtils.hasBypass(event.getController().getBase()))
{
if (WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().get(event.getController().getBase()).getHandler(GodmodeFlag.class).getIsGodmodEnbled() != null)
if (WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(event.getController().getBase()).getHandler(GodmodeFlag.class).getIsGodmodeEnabled() != null)
{
event.setCancelled(true);
}

View file

@ -1,8 +1,6 @@
package net.goldtreeservers.worldguardextraflags.listeners;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
@ -27,8 +25,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.Potion;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
import com.sk89q.worldedit.Location;
@ -40,7 +36,9 @@ import net.elseland.xikage.MythicMobs.Mobs.EggManager;
import net.elseland.xikage.MythicMobs.Mobs.MythicMob;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.flags.FlyFlag;
import net.goldtreeservers.worldguardextraflags.flags.GiveEffectsFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.GiveEffectsFlag;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
import net.goldtreeservers.worldguardextraflags.utils.WorldGuardUtils;
@SuppressWarnings("deprecation")
public class PlayerListener implements Listener
@ -48,21 +46,24 @@ public class PlayerListener implements Listener
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerTeleportEvent(PlayerTeleportEvent event)
{
event.getPlayer().removeMetadata("WorldGuardExtraFlagsWaitingForTeleportationToBeDone", WorldGuardExtraFlagsPlugin.getPlugin());
event.getPlayer().removeMetadata("WGEFP-TPOEF", WorldGuardExtraFlagsPlugin.getPlugin());
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerDeathEvent(PlayerDeathEvent event)
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getEntity().getLocation());
Boolean keepInventory = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getEntity()), WorldGuardExtraFlagsPlugin.keepInventory);
Player player = event.getEntity();
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
Boolean keepInventory = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.KEEP_INVENTORY);
if (keepInventory != null && keepInventory)
{
event.setKeepInventory(true);
event.getDrops().clear();
}
Boolean keepExp = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getEntity()), WorldGuardExtraFlagsPlugin.keepExp);
Boolean keepExp = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.KEEP_EXP);
if (keepExp != null && keepExp)
{
event.setKeepLevel(true);
@ -73,9 +74,12 @@ public class PlayerListener implements Listener
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event)
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getPlayer().getLocation());
String prefix = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getPlayer()), WorldGuardExtraFlagsPlugin.chatPrefix);
String suffix = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getPlayer()), WorldGuardExtraFlagsPlugin.chatSuffix);
Player player = event.getPlayer();
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
String prefix = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.CHAT_PREFIX);
String suffix = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.CHAT_SUFFIX);
if (prefix != null)
{
@ -91,8 +95,11 @@ public class PlayerListener implements Listener
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerRespawnEvent(PlayerRespawnEvent event)
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getPlayer().getLocation());
Location respawnLocation = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getPlayer()), WorldGuardExtraFlagsPlugin.respawnLocation);
Player player = event.getPlayer();
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
Location respawnLocation = regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.RESPAWN_LOCATION);
if (respawnLocation != null)
{
event.setRespawnLocation(BukkitUtil.toLocation(respawnLocation));
@ -105,30 +112,14 @@ public class PlayerListener implements Listener
ItemMeta itemMeta = event.getItem().getItemMeta();
if (itemMeta instanceof PotionMeta)
{
WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().get(event.getPlayer()).getHandler(GiveEffectsFlag.class).drinkPotion(Potion.fromItemStack(event.getItem()).getEffects());
WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(event.getPlayer()).getHandler(GiveEffectsFlag.class).drinkPotion(event.getPlayer(), Potion.fromItemStack(event.getItem()).getEffects());
}
else
{
Material material = event.getItem().getType();
if (material == Material.MILK_BUCKET)
{
WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().get(event.getPlayer()).getHandler(GiveEffectsFlag.class).drinkMilk();
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getPlayer().getLocation());
List<PotionEffectType> effects = new ArrayList<PotionEffectType>();
for(Set<PotionEffect> potionEffects : regions.queryAllValues(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getPlayer()), WorldGuardExtraFlagsPlugin.giveEffects))
{
if (potionEffects != null)
{
for(PotionEffect potionEffect : potionEffects)
{
if (potionEffect != null)
{
effects.add(potionEffect.getType());
}
}
}
}
WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(event.getPlayer()).getHandler(GiveEffectsFlag.class).drinkMilk(event.getPlayer());
}
}
}
@ -143,7 +134,7 @@ public class PlayerListener implements Listener
{
try
{
event.getPlayer().setAllowFlight(WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().get(event.getPlayer()).getHandler(FlyFlag.class).getFlyStatys());
event.getPlayer().setAllowFlight(WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(event.getPlayer()).getHandler(FlyFlag.class).getCurrentValue());
}
catch(Exception ignored)
{
@ -153,12 +144,14 @@ public class PlayerListener implements Listener
}.runTask(WorldGuardExtraFlagsPlugin.getPlugin());
}
//Last time I checked, the plugin don't check or cancalled events
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerInteractEvent(PlayerInteractEvent event)
{
if (WorldGuardExtraFlagsPlugin.isMythicMobsEnabled())
{
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK)
Action action = event.getAction();
if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK)
{
if (event.hasItem())
{
@ -173,9 +166,10 @@ public class PlayerListener implements Listener
MythicMob mm = EggManager.getMythicMobFromEgg(lore.get(2));
if (mm != null)
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getAction() == Action.RIGHT_CLICK_BLOCK ? event.getClickedBlock().getLocation() : event.getPlayer().getLocation());
State state = regions.queryValue(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getPlayer()), WorldGuardExtraFlagsPlugin.mythicMobsEggs);
if (state == State.DENY)
Player player = event.getPlayer();
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(action == Action.RIGHT_CLICK_BLOCK ? event.getClickedBlock().getLocation() : player.getLocation());
if (regions.queryValue(WorldGuardUtils.wrapPlayer(player), FlagUtils.MYTHICMOB_EGGS) == State.DENY)
{
event.setCancelled(true);
event.setUseItemInHand(Result.DENY);
@ -192,7 +186,7 @@ public class PlayerListener implements Listener
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerChangedWorldEvent(PlayerChangedWorldEvent event)
{
if (WorldGuardExtraFlagsPlugin.isEssentialsEnabled()) //Essentials how dare u do this to me!?!
if (WorldGuardExtraFlagsPlugin.isEssentialsEnable()) //Essentials how dare u do this to me!?!
{
Player player = event.getPlayer();
if (player.getGameMode() != GameMode.CREATIVE && !WorldGuardExtraFlagsPlugin.getEssentialsPlugin().getUser(player).isAuthorized("essentials.fly"))
@ -201,7 +195,7 @@ public class PlayerListener implements Listener
try
{
player.setAllowFlight(WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().get(player).getHandler(FlyFlag.class).getFlyStatys());
player.setAllowFlight(WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(player).getHandler(FlyFlag.class).getCurrentValue());
}
catch(Exception ignored)
{
@ -221,7 +215,7 @@ public class PlayerListener implements Listener
{
try
{
event.getPlayer().setAllowFlight(WorldGuardExtraFlagsPlugin.getWorldGuard().getSessionManager().get(event.getPlayer()).getHandler(FlyFlag.class).getFlyStatys());
event.getPlayer().setAllowFlight(WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().get(event.getPlayer()).getHandler(FlyFlag.class).getCurrentValue());
}
catch(Exception ignored)
{
@ -234,9 +228,10 @@ public class PlayerListener implements Listener
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerItemDamageEvent(PlayerItemDamageEvent event)
{
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionContainer().createQuery().getApplicableRegions(event.getPlayer().getLocation());
State state = regions.queryState(WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(event.getPlayer()), WorldGuardExtraFlagsPlugin.itemDurability);
if (state == State.DENY)
Player player = event.getPlayer();
ApplicableRegionSet regions = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
if (regions.queryState(WorldGuardUtils.wrapPlayer(player), FlagUtils.ITEM_DURABILITY) == State.DENY)
{
event.setCancelled(true);
}

View file

@ -4,7 +4,7 @@ import com.sk89q.worldedit.event.extent.EditSessionEvent;
import com.sk89q.worldedit.util.eventbus.EventHandler;
import com.sk89q.worldedit.util.eventbus.Subscribe;
import net.goldtreeservers.worldguardextraflags.flags.WorldEditFlag;
import net.goldtreeservers.worldguardextraflags.flags.handlers.WorldEditFlag;
public class WorldEditListener
{

View file

@ -12,6 +12,7 @@ import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
import net.goldtreeservers.worldguardextraflags.utils.FlagUtils;
public class WorldListener implements Listener
{
@ -24,9 +25,9 @@ public class WorldListener implements Listener
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onChunkUnloadEvent(ChunkUnloadEvent event)
{
for (ProtectedRegion region : WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionManager(event.getWorld()).getApplicableRegions(new ProtectedCuboidRegion("UnloadChunkFlagTester", new BlockVector(event.getChunk().getX() * 16, 0, event.getChunk().getZ() * 16), new BlockVector(event.getChunk().getX() * 16 + 15, 256, event.getChunk().getZ() * 16 + 15))))
for (ProtectedRegion region : WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionManager(event.getWorld()).getApplicableRegions(new ProtectedCuboidRegion("UnloadChunkFlagTester", new BlockVector(event.getChunk().getX() * 16, 0, event.getChunk().getZ() * 16), new BlockVector(event.getChunk().getX() * 16 + 15, 256, event.getChunk().getZ() * 16 + 15))))
{
if (region.getFlag(WorldGuardExtraFlagsPlugin.chunkUnload) == State.DENY)
if (region.getFlag(FlagUtils.CHUNK_UNLOAD) == State.DENY)
{
event.setCancelled(true);
break;

View file

@ -24,8 +24,8 @@ public class FaweWorldEditFlag extends FaweMaskManager<Player>
public ProtectedRegion getRegion(final Player player, final Location loc)
{
final com.sk89q.worldguard.LocalPlayer localplayer = WorldGuardExtraFlagsPlugin.getWorldGuard().wrapPlayer(player);
RegionManager manager = WorldGuardExtraFlagsPlugin.getWorldGuard().getRegionManager(player.getWorld());
final com.sk89q.worldguard.LocalPlayer localplayer = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().wrapPlayer(player);
RegionManager manager = WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getRegionManager(player.getWorld());
final ProtectedRegion global = manager.getRegion("__global__");
if (global != null && !isDenied(localplayer, global))
{
@ -45,7 +45,7 @@ public class FaweWorldEditFlag extends FaweMaskManager<Player>
public boolean isDenied(LocalPlayer localplayer, ProtectedRegion region)
{
return region.getFlag(WorldGuardExtraFlagsPlugin.worldEdit) == State.DENY;
return region.getFlag(FlagUtils.WORLDEDIT) == State.DENY;
}
@Override

View file

@ -0,0 +1,51 @@
package net.goldtreeservers.worldguardextraflags.utils;
import org.bukkit.Material;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import com.sk89q.worldguard.protection.flags.BooleanFlag;
import com.sk89q.worldguard.protection.flags.CommandStringFlag;
import com.sk89q.worldguard.protection.flags.DoubleFlag;
import com.sk89q.worldguard.protection.flags.LocationFlag;
import com.sk89q.worldguard.protection.flags.SetFlag;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.flags.StringFlag;
import net.goldtreeservers.worldguardextraflags.flags.helpers.CustomSetFlag;
import net.goldtreeservers.worldguardextraflags.flags.helpers.MaterialFlag;
import net.goldtreeservers.worldguardextraflags.flags.helpers.PotionEffectFlag;
import net.goldtreeservers.worldguardextraflags.flags.helpers.PotionEffectTypeFlag;
import net.goldtreeservers.worldguardextraflags.flags.helpers.SoundDataFlag;
public final class FlagUtils
{
public final static LocationFlag TELEPORT_ON_ENTRY = new LocationFlag("teleport-on-entry");
public final static LocationFlag TELEPORT_ON_EXIT = new LocationFlag("teleport-on-exit");
public final static CustomSetFlag<String> COMMAND_ON_ENTRY = new CustomSetFlag<String>("command-on-entry", new CommandStringFlag(null));
public final static CustomSetFlag<String> COMMAND_ON_EXIT = new CustomSetFlag<String>("command-on-exit", new CommandStringFlag(null));
public final static CustomSetFlag<String> CONSOLE_COMMAND_ON_ENTRY = new CustomSetFlag<String>("console-command-on-entry", new CommandStringFlag(null));
public final static CustomSetFlag<String> CONSOLE_COMMAND_ON_EXIT = new CustomSetFlag<String>("console-command-on-exit", new CommandStringFlag(null));
public final static DoubleFlag WALK_SPEED = new DoubleFlag("walk-speed");
public final static BooleanFlag KEEP_INVENTORY = new BooleanFlag("keep-inventory");
public final static BooleanFlag KEEP_EXP = new BooleanFlag("keep-exp");
public final static StringFlag CHAT_PREFIX = new StringFlag("chat-prefix");
public final static StringFlag CHAT_SUFFIX = new StringFlag("chat-suffix");
public final static SetFlag<PotionEffectType> BLOCKED_EFFECTS = new SetFlag<PotionEffectType>("blocked-effects", new PotionEffectTypeFlag(null));
public final static StateFlag GODMODE = new StateFlag("godmode", false);
public final static LocationFlag RESPAWN_LOCATION = new LocationFlag("respawn-location");
public final static StateFlag WORLDEDIT = new StateFlag("worldedit", true);
public final static SetFlag<PotionEffect> GIVE_EFFECTS = new SetFlag<PotionEffect>("give-effects", new PotionEffectFlag(null));
public final static StateFlag FLY = new StateFlag("fly", false);
public final static SetFlag<SoundData> PLAY_SOUNDS = new SetFlag<SoundData>("play-sounds", new SoundDataFlag(null));
public final static StateFlag MYTHICMOB_EGGS = new StateFlag("mythicmobs-eggs", true);
public final static StateFlag FROSTWALKER = new StateFlag("frostwalker", true);
public final static StateFlag NETHER_PORTALS = new StateFlag("nether-portals", true);
public final static SetFlag<Material> ALLOW_BLOCK_PLACE = new SetFlag<Material>("allow-block-place", new MaterialFlag(null));
public final static SetFlag<Material> DENY_BLOCK_PLACE = new SetFlag<Material>("deny-block-place", new MaterialFlag(null));
public final static SetFlag<Material> ALLOW_BLOCK_BREAK = new SetFlag<Material>("allow-block-break", new MaterialFlag(null));
public final static SetFlag<Material> DENY_BLOCK_BREAK = new SetFlag<Material>("deny-block-break", new MaterialFlag(null));
public final static StateFlag GLIDE = new StateFlag("glide", false);
public final static StateFlag CHUNK_UNLOAD = new StateFlag("chunk-unload", true);
public final static StateFlag ITEM_DURABILITY = new StateFlag("item-durability", true);
}

View file

@ -0,0 +1,9 @@
package net.goldtreeservers.worldguardextraflags.utils;
public class TimeUtils
{
public static double getUnixtimestamp()
{
return System.currentTimeMillis() / 1000;
}
}

View file

@ -0,0 +1,22 @@
package net.goldtreeservers.worldguardextraflags.utils;
import org.bukkit.entity.Player;
import com.sk89q.worldguard.LocalPlayer;
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
public class WorldGuardUtils
{
public static LocalPlayer wrapPlayer(Player player)
{
return WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().wrapPlayer(player);
}
public static boolean hasBypass(Player player)
{
return WorldGuardExtraFlagsPlugin.getWorldGuardPlugin().getSessionManager().hasBypass(player, player.getWorld());
//TODO: Add flag & region specified permissions
}
}