mirror of
https://github.com/TotalFreedomMC/TF-WorldGuardExtraFlagsPlugin.git
synced 2025-02-05 11:52:42 +00:00
Merge https://github.com/aromaa/WorldGuardExtraFlagsPlugin into master
This commit is contained in:
commit
ebce0fc43e
5 changed files with 154 additions and 66 deletions
|
@ -32,6 +32,7 @@ public final class Flags
|
|||
public final static SetFlag<String> CONSOLE_COMMAND_ON_EXIT = WorldGuardUtils.getCommunicator().getCustomSetFlag("console-command-on-exit", new CommandStringFlag(null));
|
||||
|
||||
public final static DoubleFlag WALK_SPEED = new DoubleFlag("walk-speed");
|
||||
public final static DoubleFlag FLY_SPEED = new DoubleFlag("fly-speed");
|
||||
|
||||
public final static BooleanFlag KEEP_INVENTORY = new BooleanFlag("keep-inventory");
|
||||
public final static BooleanFlag KEEP_EXP = new BooleanFlag("keep-exp");
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
package net.goldtreeservers.worldguardextraflags.wg.handlers;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||
import com.sk89q.worldguard.protection.flags.DoubleFlag;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import com.sk89q.worldguard.session.MoveType;
|
||||
import com.sk89q.worldguard.session.Session;
|
||||
import net.goldtreeservers.worldguardextraflags.flags.Flags;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.wrappers.HandlerWrapper;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public abstract class AbstractSpeedFlagHandler extends HandlerWrapper
|
||||
{
|
||||
|
||||
private Float originalSpeed;
|
||||
private DoubleFlag flag;
|
||||
|
||||
protected AbstractSpeedFlagHandler(Plugin plugin, Session session, DoubleFlag flag)
|
||||
{
|
||||
super(plugin, session);
|
||||
|
||||
this.flag = flag;
|
||||
}
|
||||
|
||||
protected abstract float getSpeed(Player player);
|
||||
|
||||
protected abstract void setSpeed(Player player, float speed);
|
||||
|
||||
@Override
|
||||
public void initialize(Player player, Location current, ApplicableRegionSet set)
|
||||
{
|
||||
Double speed = WorldGuardUtils.queryValue(player, current.getWorld(), set.getRegions(), this.flag);
|
||||
this.handleValue(player, speed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
|
||||
{
|
||||
Double speed = WorldGuardUtils.queryValue(player, to.getWorld(), toSet.getRegions(), this.flag);
|
||||
this.handleValue(player, speed);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void handleValue(Player player, Double speed)
|
||||
{
|
||||
if (speed != null)
|
||||
{
|
||||
if (speed > 1.0)
|
||||
{
|
||||
speed = 1.0;
|
||||
}
|
||||
else if (speed < -1.0)
|
||||
{
|
||||
speed = -1.0;
|
||||
}
|
||||
|
||||
if (this.getSpeed(player) != speed.floatValue())
|
||||
{
|
||||
if (this.originalSpeed == null)
|
||||
{
|
||||
this.originalSpeed = this.getSpeed(player);
|
||||
}
|
||||
|
||||
this.setSpeed(player, speed.floatValue());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.originalSpeed != null)
|
||||
{
|
||||
this.setSpeed(player, this.originalSpeed);
|
||||
|
||||
this.originalSpeed = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package net.goldtreeservers.worldguardextraflags.wg.handlers;
|
||||
|
||||
import com.sk89q.worldguard.session.Session;
|
||||
|
||||
import net.goldtreeservers.worldguardextraflags.flags.Flags;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.wrappers.HandlerWrapper;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class FlySpeedFlagHandler extends AbstractSpeedFlagHandler
|
||||
{
|
||||
public static final Factory FACTORY(Plugin plugin)
|
||||
{
|
||||
return new Factory(plugin);
|
||||
}
|
||||
|
||||
public static class Factory extends HandlerWrapper.Factory<FlySpeedFlagHandler>
|
||||
{
|
||||
public Factory(Plugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FlySpeedFlagHandler create(Session session)
|
||||
{
|
||||
return new FlySpeedFlagHandler(this.getPlugin(), session);
|
||||
}
|
||||
}
|
||||
|
||||
protected FlySpeedFlagHandler(Plugin plugin, Session session)
|
||||
{
|
||||
super(plugin, session, Flags.FLY_SPEED);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected float getSpeed(Player player)
|
||||
{
|
||||
return player.getFlySpeed();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setSpeed(Player player, float speed)
|
||||
{
|
||||
player.setFlySpeed(speed);
|
||||
}
|
||||
}
|
|
@ -1,95 +1,48 @@
|
|||
package net.goldtreeservers.worldguardextraflags.wg.handlers;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
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 net.goldtreeservers.worldguardextraflags.flags.Flags;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.wrappers.HandlerWrapper;
|
||||
|
||||
public class WalkSpeedFlagHandler extends HandlerWrapper
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class WalkSpeedFlagHandler extends AbstractSpeedFlagHandler
|
||||
{
|
||||
public static final Factory FACTORY(Plugin plugin)
|
||||
{
|
||||
return new Factory(plugin);
|
||||
}
|
||||
|
||||
public static class Factory extends HandlerWrapper.Factory<WalkSpeedFlagHandler>
|
||||
{
|
||||
public Factory(Plugin plugin)
|
||||
{
|
||||
public static class Factory extends HandlerWrapper.Factory<WalkSpeedFlagHandler>
|
||||
{
|
||||
public Factory(Plugin plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WalkSpeedFlagHandler create(Session session)
|
||||
{
|
||||
return new WalkSpeedFlagHandler(this.getPlugin(), session);
|
||||
}
|
||||
}
|
||||
|
||||
private Float originalWalkSpeed;
|
||||
|
||||
public WalkSpeedFlagHandler create(Session session)
|
||||
{
|
||||
return new WalkSpeedFlagHandler(this.getPlugin(), session);
|
||||
}
|
||||
}
|
||||
|
||||
protected WalkSpeedFlagHandler(Plugin plugin, Session session)
|
||||
{
|
||||
super(plugin, session);
|
||||
super(plugin, session, Flags.WALK_SPEED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(Player player, Location current, ApplicableRegionSet set)
|
||||
protected float getSpeed(Player player)
|
||||
{
|
||||
Double speed = WorldGuardUtils.queryValue(player, current.getWorld(), set.getRegions(), Flags.WALK_SPEED);
|
||||
this.handleValue(player, speed);
|
||||
return player.getWalkSpeed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
|
||||
protected void setSpeed(Player player, float speed)
|
||||
{
|
||||
Double speed = WorldGuardUtils.queryValue(player, to.getWorld(), toSet.getRegions(), Flags.WALK_SPEED);
|
||||
this.handleValue(player, speed);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void handleValue(Player player, Double speed)
|
||||
{
|
||||
if (speed != null)
|
||||
{
|
||||
if (speed > 1.0)
|
||||
{
|
||||
speed = 1.0;
|
||||
}
|
||||
else if (speed < -1.0)
|
||||
{
|
||||
speed = -1.0;
|
||||
}
|
||||
|
||||
if (player.getWalkSpeed() != speed.floatValue())
|
||||
{
|
||||
if (this.originalWalkSpeed == null)
|
||||
{
|
||||
this.originalWalkSpeed = player.getWalkSpeed();
|
||||
}
|
||||
|
||||
player.setWalkSpeed(speed.floatValue());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.originalWalkSpeed != null)
|
||||
{
|
||||
player.setWalkSpeed(this.originalWalkSpeed);
|
||||
|
||||
this.originalWalkSpeed = null;
|
||||
}
|
||||
}
|
||||
player.setWalkSpeed(speed);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import net.goldtreeservers.worldguardextraflags.wg.handlers.CommandOnExitFlagHan
|
|||
import net.goldtreeservers.worldguardextraflags.wg.handlers.ConsoleCommandOnEntryFlagHandler;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.handlers.ConsoleCommandOnExitFlagHandler;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.handlers.FlyFlagHandler;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.handlers.FlySpeedFlagHandler;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.handlers.GiveEffectsFlagHandler;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.handlers.GlideFlagHandler;
|
||||
import net.goldtreeservers.worldguardextraflags.wg.handlers.GodmodeFlagHandler;
|
||||
|
@ -48,6 +49,7 @@ public interface WorldGuardCommunicator
|
|||
flagRegistry.register(Flags.WORLDEDIT);
|
||||
flagRegistry.register(Flags.GIVE_EFFECTS);
|
||||
flagRegistry.register(Flags.FLY);
|
||||
flagRegistry.register(Flags.FLY_SPEED);
|
||||
flagRegistry.register(Flags.PLAY_SOUNDS);
|
||||
flagRegistry.register(Flags.MYTHICMOB_EGGS);
|
||||
flagRegistry.register(Flags.FROSTWALKER);
|
||||
|
@ -76,6 +78,7 @@ public interface WorldGuardCommunicator
|
|||
sessionManager.registerHandler(GodmodeFlagHandler.FACTORY(plugin));
|
||||
sessionManager.registerHandler(GiveEffectsFlagHandler.FACTORY(plugin));
|
||||
sessionManager.registerHandler(FlyFlagHandler.FACTORY(plugin));
|
||||
sessionManager.registerHandler(FlySpeedFlagHandler.FACTORY(plugin));
|
||||
sessionManager.registerHandler(PlaySoundsFlagHandler.FACTORY(plugin));
|
||||
sessionManager.registerHandler(GlideFlagHandler.FACTORY(plugin));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue