コード例 #1
0
        public override bool Execute(CommandSender sender, params string[] args)
        {
            if (args.Length < 2)
            {
                this.SendSyntaxMessage(sender);
                return(false);
            }

            Entity[] entities = this.GetEntityFromSelector(args[0], sender);
            if (entities == null)
            {
                this.SendNoTargetMessage(sender);
                return(false);
            }

            int level = 1;

            if (args.Length > 2)
            {
                if (!int.TryParse(args[2], out level))
                {
                    level = 1;
                }
            }
            for (int i = 0; i < entities.Length; ++i)
            {
                if (entities[i] is EntityLiving)
                {
                    EntityLiving entity  = (EntityLiving)entities[i];
                    Enchantment  enchant = Enchantment.GetEnchantment(args[1], level);
                    if (enchant.MinLevel > level || level > enchant.MaxLevel)
                    {
                        sender.SendMessage(new TranslationMessage(ColorText.RED, "commands.enchant.invalidLevel", enchant.Name, level));
                        continue;
                    }
                    Item item = entity.Inventory.MainHandItem;
                    if (item.IsTool)
                    {
                        item.AddEnchant(enchant);
                        entity.Inventory.MainHandItem = item;
                        sender.SendMessage(new TranslationMessage("commands.enchant.success", entity.Name));
                    }
                    else
                    {
                        sender.SendMessage(new TranslationMessage(ColorText.RED, "commands.enchant.cantEnchant", entity.Name));
                    }
                }
            }
            return(true);
        }
コード例 #2
0
        public static Enchantment GetEnchantment(string name, int level = 1)
        {
            int id;

            if (!int.TryParse(name, out id))
            {
                try
                {
                    Enchantment enchant = Enchantment.GetEnchantment(1);
                    id = (int)enchant.GetType().GetField(name.ToUpper()).GetValue(enchant);
                }
                catch { }
            }
            return(Enchantment.GetEnchantment(id, level));
        }
コード例 #3
0
        public Enchantment GetEnchantment(int id)
        {
            if (!this.HasEnchantment(id))
            {
                return(null);
            }
            CompoundTag tag  = this.GetNamedTag();
            ListTag     list = tag.GetList("ench");

            for (int i = 0; i < list.Count; ++i)
            {
                CompoundTag ench = (CompoundTag)list[i];
                if (ench.GetShort("id") == id)
                {
                    return(Enchantment.GetEnchantment(id, ench.GetShort("lvl")));
                }
            }
            return(null);
        }
コード例 #4
0
        public Enchantment[] GetEnchantments()
        {
            CompoundTag tag = this.NamedTag;

            if (!tag.Exist("ench"))
            {
                return(new Enchantment[0]);
            }

            ListTag            list   = tag.GetList("ench");
            List <Enchantment> enches = new List <Enchantment>();

            for (int i = 0; i < list.Count; ++i)
            {
                CompoundTag ench = (CompoundTag)list[i];
                enches.Add(Enchantment.GetEnchantment(ench.GetShort("id"), ench.GetShort("lvl")));
            }
            return(enches.ToArray());
        }