mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-12-25 18:47:44 +01:00
Add GameMode flag
This commit is contained in:
parent
2cc990a530
commit
f2bd5961d0
@ -220,6 +220,7 @@ public static class PlayerFlagState {
|
|||||||
public Boolean lastExitAllowed = null;
|
public Boolean lastExitAllowed = null;
|
||||||
public Boolean notifiedForLeave = false;
|
public Boolean notifiedForLeave = false;
|
||||||
public Boolean notifiedForEnter = false;
|
public Boolean notifiedForEnter = false;
|
||||||
|
public GameMode lastGameMode;
|
||||||
public World lastWorld;
|
public World lastWorld;
|
||||||
public int lastBlockX;
|
public int lastBlockX;
|
||||||
public int lastBlockY;
|
public int lastBlockY;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
import com.sk89q.worldedit.blocks.BlockID;
|
import com.sk89q.worldedit.blocks.BlockID;
|
||||||
import com.sk89q.worldedit.blocks.ItemID;
|
import com.sk89q.worldedit.blocks.ItemID;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@ -42,6 +43,7 @@
|
|||||||
import org.bukkit.event.player.PlayerChatEvent;
|
import org.bukkit.event.player.PlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerItemHeldEvent;
|
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
@ -159,6 +161,7 @@ public void onPlayerMove(PlayerMoveEvent event) {
|
|||||||
String farewell = set.getFlag(DefaultFlag.FAREWELL_MESSAGE);//, localPlayer);
|
String farewell = set.getFlag(DefaultFlag.FAREWELL_MESSAGE);//, localPlayer);
|
||||||
Boolean notifyEnter = set.getFlag(DefaultFlag.NOTIFY_ENTER);//, localPlayer);
|
Boolean notifyEnter = set.getFlag(DefaultFlag.NOTIFY_ENTER);//, localPlayer);
|
||||||
Boolean notifyLeave = set.getFlag(DefaultFlag.NOTIFY_LEAVE);//, localPlayer);
|
Boolean notifyLeave = set.getFlag(DefaultFlag.NOTIFY_LEAVE);//, localPlayer);
|
||||||
|
GameMode gameMode = set.getFlag(DefaultFlag.GAME_MODE);
|
||||||
|
|
||||||
if (state.lastFarewell != null && (farewell == null
|
if (state.lastFarewell != null && (farewell == null
|
||||||
|| !state.lastFarewell.equals(farewell))) {
|
|| !state.lastFarewell.equals(farewell))) {
|
||||||
@ -199,6 +202,15 @@ public void onPlayerMove(PlayerMoveEvent event) {
|
|||||||
+ regionList);
|
+ regionList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gameMode != null && player.getGameMode() != gameMode) {
|
||||||
|
player.setGameMode(gameMode);
|
||||||
|
} else {
|
||||||
|
if (state.lastGameMode != null) {
|
||||||
|
player.setGameMode(state.lastGameMode);
|
||||||
|
state.lastGameMode = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
state.lastGreeting = greeting;
|
state.lastGreeting = greeting;
|
||||||
state.lastFarewell = farewell;
|
state.lastFarewell = farewell;
|
||||||
state.notifiedForEnter = notifyEnter;
|
state.notifiedForEnter = notifyEnter;
|
||||||
@ -213,6 +225,21 @@ public void onPlayerMove(PlayerMoveEvent event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerGameModeChange(PlayerGameModeChangeEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld());
|
||||||
|
if (wcfg.useRegions) {
|
||||||
|
GameMode gameMode = plugin.getGlobalRegionManager().get(player.getWorld())
|
||||||
|
.getApplicableRegions(player.getLocation()).getFlag(DefaultFlag.GAME_MODE);
|
||||||
|
if (gameMode != null && event.getNewGameMode() != gameMode) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
player.sendMessage(ChatColor.RED + "Your game mode is locked to "
|
||||||
|
+ gameMode + "in this region!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package com.sk89q.worldguard.protection.flags;
|
package com.sk89q.worldguard.protection.flags;
|
||||||
|
|
||||||
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -70,6 +71,7 @@ public final class DefaultFlag {
|
|||||||
public static final BooleanFlag NOTIFY_ENTER = new BooleanFlag("notify-enter", RegionGroup.ALL);
|
public static final BooleanFlag NOTIFY_ENTER = new BooleanFlag("notify-enter", RegionGroup.ALL);
|
||||||
public static final BooleanFlag NOTIFY_LEAVE = new BooleanFlag("notify-leave", RegionGroup.ALL);
|
public static final BooleanFlag NOTIFY_LEAVE = new BooleanFlag("notify-leave", RegionGroup.ALL);
|
||||||
public static final SetFlag<EntityType> DENY_SPAWN = new SetFlag<EntityType>("deny-spawn", RegionGroup.ALL, new EntityTypeFlag(null));
|
public static final SetFlag<EntityType> DENY_SPAWN = new SetFlag<EntityType>("deny-spawn", RegionGroup.ALL, new EntityTypeFlag(null));
|
||||||
|
public static final EnumFlag<GameMode> GAME_MODE = new EnumFlag<GameMode>("game-mode", GameMode.class, RegionGroup.ALL);
|
||||||
public static final IntegerFlag HEAL_DELAY = new IntegerFlag("heal-delay", RegionGroup.ALL);
|
public static final IntegerFlag HEAL_DELAY = new IntegerFlag("heal-delay", RegionGroup.ALL);
|
||||||
public static final IntegerFlag HEAL_AMOUNT = new IntegerFlag("heal-amount", RegionGroup.ALL);
|
public static final IntegerFlag HEAL_AMOUNT = new IntegerFlag("heal-amount", RegionGroup.ALL);
|
||||||
public static final IntegerFlag MIN_HEAL = new IntegerFlag("heal-min-health", RegionGroup.ALL);
|
public static final IntegerFlag MIN_HEAL = new IntegerFlag("heal-min-health", RegionGroup.ALL);
|
||||||
@ -94,7 +96,7 @@ public final class DefaultFlag {
|
|||||||
EXIT, ENTRY, LIGHTNING, ENTITY_PAINTING_DESTROY,
|
EXIT, ENTRY, LIGHTNING, ENTITY_PAINTING_DESTROY,
|
||||||
HEAL_AMOUNT, HEAL_DELAY, MIN_HEAL, MAX_HEAL,
|
HEAL_AMOUNT, HEAL_DELAY, MIN_HEAL, MAX_HEAL,
|
||||||
FEED_DELAY, FEED_AMOUNT, MIN_FOOD, MAX_FOOD,
|
FEED_DELAY, FEED_AMOUNT, MIN_FOOD, MAX_FOOD,
|
||||||
SNOW_FALL, SNOW_MELT, ICE_FORM, ICE_MELT,
|
SNOW_FALL, SNOW_MELT, ICE_FORM, ICE_MELT, GAME_MODE,
|
||||||
MUSHROOMS, LEAF_DECAY, GRASS_SPREAD, SEND_CHAT, RECEIVE_CHAT,
|
MUSHROOMS, LEAF_DECAY, GRASS_SPREAD, SEND_CHAT, RECEIVE_CHAT,
|
||||||
FIRE_SPREAD, LAVA_FIRE, LAVA_FLOW, WATER_FLOW,
|
FIRE_SPREAD, LAVA_FIRE, LAVA_FLOW, WATER_FLOW,
|
||||||
TELE_LOC, SPAWN_LOC, POTION_SPLASH,
|
TELE_LOC, SPAWN_LOC, POTION_SPLASH,
|
||||||
|
Loading…
Reference in New Issue
Block a user