Пример #1
0
        public new virtual void RemovePlayer(MiNET.Player player, bool removeFromWorld = false)
        {
            //SkyUtil.log($"Attempting to remove {player.Username} from {GameId}");
            if (((SkyPlayer)player).GameTeam == null || player.Level != this)
            {
                //Run base MiNET code even if our code shouldn't run.
                base.RemovePlayer(player, removeFromWorld);
                return;                 //Shouldn't be in the/any game.
            }

            CurrentState.HandleLeave(this, (SkyPlayer)player);

            if (PlayerTeamDict.TryGetValue(player.Username, out var gameTeam))
            {
                PlayerTeamDict.Remove(player.Username);
                TeamPlayerDict[gameTeam].Remove((SkyPlayer)player);
            }

            //Enforce removing the attached team
            ((SkyPlayer)player).GameTeam = null;

            player.RemoveAllEffects();

            base.RemovePlayer(player, removeFromWorld);             //Remove player from the 'world'
        }
Пример #2
0
 public void Effect(Player player, string effect)
 {
     if ("clear".Equals(effect, StringComparison.InvariantCultureIgnoreCase))
     {
         player.Level.BroadcastMessage($"Removed all effects for {player.Username}.", MessageType.Raw);
         player.RemoveAllEffects();
     }
 }
Пример #3
0
        public Package RespawnHandler(McpeRespawn packet, Player player)
        {
            player.RemoveAllEffects();

            player.SetEffect(new Speed { Level = 2, Duration = 1000 });
            ////player.SetEffect(new Slowness {Level = 2, Duration = 20});
            //player.SetEffect(new JumpBoost { Level = 2, Duration = Effect.MaxDuration });
            //player.SetAutoJump(true);

            if (player.Level.LevelId.Equals("Default"))
            {
                player.Level.CurrentWorldTime = 6000;
                player.Level.IsWorldTimeStarted = false;
            }

            player.SendSetTime();

            return packet;
        }
Пример #4
0
        public Package RespawnHandler(McpeRespawn packet, Player player)
        {
            SendNameTag(player);
            player.RemoveAllEffects();

            player.SetEffect(new Speed {Level = 1, Duration = Effect.MaxDuration}); // 10s in ticks
            //player.SetEffect(new Slowness { Level = 20, Duration = 20 * 10 });
            //player.SetEffect(new Haste { Level = 20, Duration = 20 * 10 });
            //player.SetEffect(new MiningFatigue { Level = 20, Duration = 20 * 10 });
            //player.SetEffect(new Strength { Level = 20, Duration = 20 * 10 });
            player.SetEffect(new JumpBoost {Level = 1, Duration = Effect.MaxDuration});
            //player.SetEffect(new Blindness { Level = 20, Duration = 20 * 10 });
            //player.SetAutoJump(true);

            if (player.Level.LevelId.Equals("Default"))
            {
                player.Level.CurrentWorldTime = 6000;
                player.Level.IsWorldTimeStarted = false;
            }

            player.SendSetTime();

            return packet;
        }
Пример #5
0
        public void Effect(Player player, string effect, int level, int duration)
        {
            if ("clear".Equals(effect, StringComparison.InvariantCultureIgnoreCase))
            {
                player.Level.BroadcastMessage($"Removed all effects for {player.Username}.", MessageType.Raw);
                player.RemoveAllEffects();
                return;
            }

            EffectType effectType;
            if (Enum.TryParse(effect, true, out effectType))
            {
                Effect eff = null;
                switch (effectType)
                {
                    case EffectType.Speed:
                        eff = new Speed();
                        break;
                    case EffectType.Slowness:
                        eff = new Slowness();
                        break;
                    case EffectType.Haste:
                        eff = new Haste();
                        break;
                    case EffectType.MiningFatigue:
                        eff = new MiningFatigue();
                        break;
                    case EffectType.Strength:
                        eff = new Strength();
                        break;
                    case EffectType.InstantHealth:
                        eff = new InstantHealth();
                        break;
                    case EffectType.InstantDamage:
                        eff = new InstantDamage();
                        break;
                    case EffectType.JumpBoost:
                        eff = new JumpBoost();
                        break;
                    case EffectType.Nausea:
                        eff = new Nausea();
                        break;
                    case EffectType.Regeneration:
                        eff = new Regeneration();
                        break;
                    case EffectType.Resistance:
                        eff = new Resistance();
                        break;
                    case EffectType.FireResistance:
                        eff = new FireResistance();
                        break;
                    case EffectType.WaterBreathing:
                        eff = new WaterBreathing();
                        break;
                    case EffectType.Invisibility:
                        eff = new Invisibility();
                        break;
                    case EffectType.Blindness:
                        eff = new Blindness();
                        break;
                    case EffectType.NightVision:
                        eff = new NightVision();
                        break;
                    case EffectType.Hunger:
                        eff = new Hunger();
                        break;
                    case EffectType.Weakness:
                        eff = new Weakness();
                        break;
                    case EffectType.Poison:
                        eff = new Poison();
                        break;
                    case EffectType.Wither:
                        eff = new Wither();
                        break;
                    case EffectType.HealthBoost:
                        eff = new HealthBoost();
                        break;
                    case EffectType.Absorption:
                        eff = new Absorption();
                        break;
                    case EffectType.Saturation:
                        eff = new Saturation();
                        break;
                }

                if (eff != null)
                {
                    eff.Level = level;
                    eff.Duration = duration;
                    eff.Particles = false;

                    player.SetEffect(eff);
                    player.Level.BroadcastMessage($"{player.Username} added effect {effectType} with strenght {level}", MessageType.Raw);
                }
            }
        }