コード例 #1
0
ファイル: ItemLore.cs プロジェクト: bitcynth/vssurvivalmod
        public override void OnHeldInteractStart(IItemSlot itemslot, IEntityAgent byEntity, BlockSelection blockSel, EntitySelection entitySel, ref EnumHandHandling handling)
        {
            if (byEntity.World.Side != EnumAppSide.Server)
            {
                handling = EnumHandHandling.PreventDefault;
                return;
            }

            IPlayer byPlayer = null;

            if (byEntity is IEntityPlayer)
            {
                byPlayer = byEntity.World.PlayerByUid(((IEntityPlayer)byEntity).PlayerUID);
            }

            if (!(byPlayer is IServerPlayer))
            {
                return;
            }
            IServerPlayer serverplayer = byPlayer as IServerPlayer;

            TreeAttribute tree = new TreeAttribute();

            tree.SetString("playeruid", byPlayer?.PlayerUID);
            tree.SetString("category", itemslot.Itemstack.Attributes.GetString("category"));
            tree.SetItemstack("itemstack", itemslot.Itemstack.Clone());

            api.Event.PushEvent("loreDiscovery", tree);

            itemslot.TakeOut(1);
            itemslot.MarkDirty();

            handling = EnumHandHandling.PreventDefault;
        }
コード例 #2
0
        /// <summary>
        /// Sets the tree attribute using the slots.
        /// </summary>
        /// <param name="slots"></param>
        /// <param name="tree"></param>
        public void SlotsToTreeAttributes(ItemSlot[] slots, ITreeAttribute tree)
        {
            tree.SetInt("qslots", slots.Length);

            TreeAttribute slotsTree = new TreeAttribute();

            for (int i = 0; i < slots.Length; i++)
            {
                if (slots[i].Itemstack == null)
                {
                    continue;
                }
                slotsTree.SetItemstack(i + "", slots[i].Itemstack.Clone());
            }

            tree["slots"] = slotsTree;
        }