Beispiel #1
0
        void CheckZones(Position pos)
        {
            Vec3S32 P    = pos.BlockCoords;
            Zone    zone = ZoneIn;

            // player hasn't moved from current zone
            if (zone != null && zone.Contains(P.X, P.Y, P.Z))
            {
                return;
            }
            Zone[] zones = level.Zones.Items;
            if (zones.Length == 0)
            {
                return;
            }

            for (int i = 0; i < zones.Length; i++)
            {
                if (!zones[i].Contains(P.X, P.Y, P.Z))
                {
                    continue;
                }

                ZoneIn = zones[i];
                OnChangedZoneEvent.Call(this);
                return;
            }

            ZoneIn = null;
            if (zone != null)
            {
                OnChangedZoneEvent.Call(this);
            }
        }
Beispiel #2
0
        internal static void HandleSentMap(Player p, Level prevLevel, Level level)
        {
            p.AFKCooldown = DateTime.UtcNow.AddSeconds(2);
            p.prevMsg     = "";
            p.showMBs     = false;
            p.showPortals = false;
            p.SetModel(p.Model); // in case had been using a level-only custom block for their model

            p.ZoneIn = null;
            OnChangedZoneEvent.Call(p);
            p.SendCurrentTextures();
            p.SendCurrentBlockPermissions();

            // TODO: unshow old zones here??
            if (p.Supports(CpeExt.SelectionCuboid))
            {
                Zone[] zones = level.Zones.Items;
                foreach (Zone zn in zones)
                {
                    zn.Show(p);
                }
            }

            if (p.weapon != null && !level.Config.Guns)
            {
                p.weapon.Disable();
            }
            if (!level.Config.UseBlockDB)
            {
                p.Message("BlockDB is disabled here, %Wyou will not be able to /undo or /redo");
            }
        }
Beispiel #3
0
 void OnChangedZone(Zone zone)
 {
     Player[] players = PlayerInfo.Online.Items;
     foreach (Player pl in players)
     {
         if (pl.ZoneIn == zone)
         {
             OnChangedZoneEvent.Call(pl);
         }
     }
 }
Beispiel #4
0
        public override void Unload(bool shutdown)
        {
            OnPlayerConnectEvent.Unregister(ConnectHandler.HandleConnect);
            OnPlayerCommandEvent.Unregister(ChatHandler.HandleCommand);
            OnChatEvent.Unregister(ChatHandler.HandleOnChat);
            OnPlayerStartConnectingEvent.Unregister(ConnectingHandler.HandleConnecting);

            OnSentMapEvent.Unregister(MiscHandlers.HandleSentMap);
            OnPlayerMoveEvent.Unregister(MiscHandlers.HandlePlayerMove);
            OnPlayerClickEvent.Unregister(MiscHandlers.HandlePlayerClick);
            OnChangedZoneEvent.Unregister(MiscHandlers.HandleChangedZone);

            OnEcoTransactionEvent.Unregister(EcoHandlers.HandleEcoTransaction);
            OnModActionEvent.Unregister(ModActionHandler.HandleModAction);
        }
Beispiel #5
0
        public override void Load(bool startup)
        {
            OnPlayerConnectEvent.Register(ConnectHandler.HandleConnect, Priority.Critical);
            OnPlayerCommandEvent.Register(ChatHandler.HandleCommand, Priority.Critical);
            OnChatEvent.Register(ChatHandler.HandleOnChat, Priority.Critical);
            OnPlayerStartConnectingEvent.Register(ConnectingHandler.HandleConnecting, Priority.Critical);

            OnSentMapEvent.Register(MiscHandlers.HandleSentMap, Priority.Critical);
            OnPlayerMoveEvent.Register(MiscHandlers.HandlePlayerMove, Priority.Critical);
            OnPlayerClickEvent.Register(MiscHandlers.HandlePlayerClick, Priority.Critical);
            OnChangedZoneEvent.Register(MiscHandlers.HandleChangedZone, Priority.Critical);

            OnEcoTransactionEvent.Register(EcoHandlers.HandleEcoTransaction, Priority.Critical);
            OnModActionEvent.Register(ModActionHandler.HandleModAction, Priority.Critical);
        }
Beispiel #6
0
        public override void Load(bool startup)
        {
            OnPlayerConnectEvent.Register(ConnectHandler.HandleConnect, Priority.Critical);
            OnPlayerCommandEvent.Register(ChatHandler.HandleCommand, Priority.Critical);
            OnChatEvent.Register(ChatHandler.HandleOnChat, Priority.Critical);
            OnPlayerStartConnectingEvent.Register(ConnectingHandler.HandleConnecting, Priority.Critical);

            OnSentMapEvent.Register(MiscHandlers.HandleSentMap, Priority.Critical);
            OnPlayerMoveEvent.Register(MiscHandlers.HandlePlayerMove, Priority.Critical);
            OnPlayerClickEvent.Register(MiscHandlers.HandlePlayerClick, Priority.Critical);
            OnChangedZoneEvent.Register(MiscHandlers.HandleChangedZone, Priority.Critical);

            OnEcoTransactionEvent.Register(EcoHandlers.HandleEcoTransaction, Priority.Critical);
            OnModActionEvent.Register(ModActionHandler.HandleModAction, Priority.Critical);
            clearTask = Server.Background.QueueRepeat(IPThrottler.CleanupTask, null,
                                                      TimeSpan.FromMinutes(10));
        }
Beispiel #7
0
        public void RemoveFrom(Level level)
        {
            lock (level.Zones.locker) {
                UnshowAll(level);
                level.Zones.Remove(this);
            }

            Player[] players = PlayerInfo.Online.Items;
            foreach (Player pl in players)
            {
                if (pl.ZoneIn != this)
                {
                    continue;
                }
                pl.ZoneIn = null;
                OnChangedZoneEvent.Call(pl);
            }
        }