Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package prymarp.prymarp.events.worldguardevents;
- import com.sk89q.worldedit.util.Location;
- import com.sk89q.worldedit.world.World;
- import com.sk89q.worldguard.LocalPlayer;
- import com.sk89q.worldguard.commands.CommandUtils;
- import com.sk89q.worldguard.protection.ApplicableRegionSet;
- import com.sk89q.worldguard.protection.flags.Flags;
- import com.sk89q.worldguard.protection.flags.StateFlag;
- import com.sk89q.worldguard.protection.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 static prymarp.prymarp.PrymaRP.PRYMAFLAG_COMUNE_EXIT;
- public class WGPrymaRegistrazioneExit extends FlagValueChangeHandler<State> {
- public static final Factory FACTORY = new Factory();
- public static class Factory extends Handler.Factory<WGPrymaRegistrazioneExit> {
- @Override
- public WGPrymaRegistrazioneExit create(Session session) {
- return new WGPrymaRegistrazioneExit(session);
- }
- }
- private static final long MESSAGE_THRESHOLD = 1000 * 2;
- private String storedMessage;
- private boolean exitViaTeleport = false;
- private long lastMessage;
- public WGPrymaRegistrazioneExit(Session session) {
- super(session, PRYMAFLAG_COMUNE_EXIT);
- }
- private void update(LocalPlayer localPlayer, ApplicableRegionSet set, boolean allowed) {
- if (!allowed) {
- storedMessage = "Non puoi uscire da qua prima di aver completato la registrazione!";
- exitViaTeleport = set.testState(localPlayer, Flags.EXIT_VIA_TELEPORT);
- }
- }
- private void sendMessage(LocalPlayer player) {
- long now = System.currentTimeMillis();
- if ((now - lastMessage) > MESSAGE_THRESHOLD && storedMessage != null && !storedMessage.isEmpty()) {
- player.printRaw(CommandUtils.replaceColorMacros(storedMessage));
- lastMessage = now;
- }
- }
- @Override
- protected void onInitialValue(LocalPlayer player, ApplicableRegionSet set, State value) {
- update(player, set, StateFlag.test(value));
- }
- @Override
- protected boolean onSetValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State currentValue, State lastValue, MoveType moveType) {
- if (getSession().getManager().hasBypass(player, (World) from.getExtent())) {
- return true;
- }
- boolean lastAllowed = StateFlag.test(lastValue);
- boolean allowed = StateFlag.test(currentValue);
- if (allowed && !lastAllowed && !(moveType.isTeleport() && exitViaTeleport) && moveType.isCancellable()) {
- Boolean override = toSet.queryValue(player, Flags.EXIT_OVERRIDE);
- if (override == null || !override) {
- sendMessage(player);
- return false;
- }
- }
- update(player, toSet, allowed);
- return true;
- }
- @Override
- protected boolean onAbsentValue(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, State lastValue, MoveType moveType) {
- if (getSession().getManager().hasBypass(player, (World) from.getExtent())) {
- return true;
- }
- boolean lastAllowed = StateFlag.test(lastValue);
- if (!lastAllowed && moveType.isCancellable()) {
- Boolean override = toSet.queryValue(player, Flags.EXIT_OVERRIDE);
- if (override == null || !override) {
- sendMessage(player);
- return false;
- }
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment