示例#1
0
 public Package onUseItem(McpeUseItem packet, Player player)
 {
     if (!Class1.lged.ContainsKey(player.Username.ToLower()))
     {
         notlogin(player);
         return(null);
     }
     return(packet);
 }
示例#2
0
        public Package UseItemHundler(McpeUseItem packet, Player player)
        {
            NpcCore entity = Npcs.Values.FirstOrDefault(inc => inc.Block.Coordinates == packet.blockcoordinates);

            if (entity != null && entity.Block != new Air())
            {
                //entity.Player = player;
                OnEntityEvent(new NpcEventArgs(entity, entity.KnownPosition, entity.Text, entity.Level, player));
                return(null);
            }
            return(packet);
        }
示例#3
0
        public static Action <Task, Item, BlockCoordinates> DoUseItem(MiNetClient client)
        {
            Action <Task, Item, BlockCoordinates> doUseItem = (t, item, coords) =>
            {
                McpeUseItem message = new McpeUseItem();
                message.blockcoordinates = coords /* - new BlockCoordinates(0, 1, 0)*/;
                message.face             = 4;
                message.facecoordinates  = new Vector3(0.1f, 0.1f, 0.1f);
                message.playerposition   = client.CurrentLocation.ToVector3();
                message.item             = item;
                client.SendPackage(message);
            };

            return(doUseItem);
        }
示例#4
0
        public override void HandleMcpeUseItem(McpeUseItem message)
        {
            if (!PlayerData.isAuth)
            {
                return;
            }
            //if (DynInventory == null)
            {
                Item i = Inventory.GetItemInHand();
                if (i.Id != 0)
                {
                    if (!Level.AllowBuild)
                    {
                        if (message.item is ItemBlock)
                        {
                            SetBlock(message.item, (BlockFace)message.face, message.blockcoordinates, message.blockId);
                        }
                    }
                    NbtCompound lines;
                    if (!i.ExtraData.TryGet("display", out lines))
                    {
                        base.HandleMcpeUseItem(message);
                        return;
                    }
                    DateTime now = DateTime.UtcNow;
                    if (Level is xCoreLevelLobby && (now - PlayerData.ActionTime) < s500)
                    {
                        if (i is ItemBlock)
                        {
                            //SetBlock(i, (BlockFace)message.face,message.blockcoordinates);
                            SetSlot(i, message.slot);
                        }
                        return;
                    }

                    if ((now - PlayerData.ActionTime) < s500)
                    {
                        base.HandleMcpeUseItem(message);
                        return;
                    }
                    NbtInt action;
                    PlayerData.ActionTime = now;
                    //new Task(() =>t
                }
            }
            base.HandleMcpeUseItem(message);
        }
示例#5
0
        private void HandleUseItem(McpeUseItem message)
        {
            Log.DebugFormat("Use item: {0}", message.item);
            Log.DebugFormat("Entity ID: {0}", message.entityId);
            Log.DebugFormat("meta:  {0}", message.meta);
            Log.DebugFormat("x:  {0}", message.x);
            Log.DebugFormat("y:  {0}", message.y);
            Log.DebugFormat("z:  {0}", message.z);
            Log.DebugFormat("face:  {0}", message.face);
            Log.DebugFormat("fx:  {0}", message.fx);
            Log.DebugFormat("fy:  {0}", message.fy);
            Log.DebugFormat("fz:  {0}", message.fz);
            Log.DebugFormat("px:  {0}", message.positionX);
            Log.DebugFormat("py:  {0}", message.positionY);
            Log.DebugFormat("pz:  {0}", message.positionZ);

            if (message.face <= 5)
            {
                Level.RelayBroadcast(this, new McpeAnimate()
                {
                    actionId = 1,
                    entityId = EntityId
                });

                Vector3 faceCoords = new Vector3(message.fx, message.fy, message.fz);

                Level.Interact(Level, this, message.item, new BlockCoordinates(message.x, message.y, message.z), message.meta, (BlockFace)message.face, faceCoords);
            }
            else
            {
                _itemUseTimer = new Stopwatch();
                _itemUseTimer.Start();
                // Snowballs and shit
                Level.Interact(Level, this, message.item, new BlockCoordinates(message.x, message.y, message.z), message.meta);

                MetadataDictionary metadata = new MetadataDictionary();
                metadata[0] = new MetadataByte(16);
                Level.RelayBroadcast(this, new McpeSetEntityData
                {
                    entityId = EntityId,
                    metadata = metadata,
                });
            }
        }
示例#6
0
 public void HandleMcpeUseItem(McpeUseItem message)
 {
 }
示例#7
0
文件: Player.cs 项目: MrGenga/MiNET
		protected virtual void HandleUseItem(McpeUseItem message)
		{
			//Log.DebugFormat("Use item: {0}", message.item.Value.Id);
			//Log.DebugFormat("item meta: {0}", message.item.Value.Metadata);
			//Log.DebugFormat("x:  {0}", message.x);
			//Log.DebugFormat("y:  {0}", message.y);
			//Log.DebugFormat("z:  {0}", message.z);
			//Log.DebugFormat("face:  {0}", message.face);
			//Log.DebugFormat("fx:  {0}", message.fx);
			//Log.DebugFormat("fy:  {0}", message.fy);
			//Log.DebugFormat("fz:  {0}", message.fz);
			//Log.DebugFormat("px:  {0}", message.positionX);
			//Log.DebugFormat("py:  {0}", message.positionY);
			//Log.DebugFormat("pz:  {0}", message.positionZ);

			if (message.face <= 5)
			{
				if (GameMode != GameMode.Creative)
				{
					ItemStack itemStack = message.item.Value;
					if (itemStack != null && !VerifyItemStack(itemStack))
					{
						Log.Error($"Kicked {Username} for use item hacking.");
						Disconnect("Error #324. Please report this error.");
						return;
					}
				}

				// Right click

				Vector3 faceCoords = new Vector3(message.fx, message.fy, message.fz);

				Level.Interact(Level, this, message.item.Value.Id, new BlockCoordinates(message.x, message.y, message.z), message.item.Value.Metadata, (BlockFace) message.face, faceCoords);
			}
			else
			{
				// Snowballs and shit

				_itemUseTimer = new Stopwatch();
				_itemUseTimer.Start();

				Level.Interact(Level, this, message.item.Value.Id, new BlockCoordinates(message.x, message.y, message.z), message.item.Value.Metadata);

				IsInAction = true;
				MetadataDictionary metadata = new MetadataDictionary
				{
					[0] = GetDataValue()
				};

				var setEntityData = McpeSetEntityData.CreateObject();
				setEntityData.entityId = EntityId;
				setEntityData.metadata = metadata;
				Level.RelayBroadcast(this, setEntityData);
			}
		}
示例#8
0
 public bool UseItem(McpeUseItem package, Player player, NbtCompound comp)        //готово
 {
     return(true);
 }
示例#9
0
        protected virtual void HandleUseItem(McpeUseItem message)
        {
            Log.DebugFormat("Use item: {0}", message.item);
            Log.DebugFormat("Entity ID: {0}", message.entityId);
            Log.DebugFormat("meta:  {0}", message.meta);
            Log.DebugFormat("x:  {0}", message.x);
            Log.DebugFormat("y:  {0}", message.y);
            Log.DebugFormat("z:  {0}", message.z);
            Log.DebugFormat("face:  {0}", message.face);
            Log.DebugFormat("fx:  {0}", message.fx);
            Log.DebugFormat("fy:  {0}", message.fy);
            Log.DebugFormat("fz:  {0}", message.fz);
            Log.DebugFormat("px:  {0}", message.positionX);
            Log.DebugFormat("py:  {0}", message.positionY);
            Log.DebugFormat("pz:  {0}", message.positionZ);

            if (message.face <= 5)
            {
                Level.RelayBroadcast(this, new McpeAnimate()
                {
                    actionId = 1,
                    entityId = EntityId
                });

                Vector3 faceCoords = new Vector3(message.fx, message.fy, message.fz);

                Level.Interact(Level, this, message.item, new BlockCoordinates(message.x, message.y, message.z), message.meta, (BlockFace) message.face, faceCoords);
            }
            else
            {
                _itemUseTimer = new Stopwatch();
                _itemUseTimer.Start();
                // Snowballs and shit
                Level.Interact(Level, this, message.item, new BlockCoordinates(message.x, message.y, message.z), message.meta);

                MetadataDictionary metadata = new MetadataDictionary();
                metadata[0] = new MetadataByte(16);
                Level.RelayBroadcast(this, new McpeSetEntityData
                {
                    entityId = EntityId,
                    metadata = metadata,
                });
            }
        }
示例#10
0
        public Package Hookshot(McpeUseItem packet, Player player)
        {
            if (!(packet.face == -1 & player.Inventory.GetItemInHand().Id == 346))
            {
                return(packet);
            }
            player.Level.BroadcastMessage("test: arrow", type: MessageType.Raw); // Message typeはtip popup messageが選べる!

            const int force = 1;
            //Arrow arrow = new Arrow(player, player.Level, !(force < 1.0));
            Arrow arrow = new Arrow(player, player.Level);

            arrow.KnownPosition    = (PlayerLocation)player.KnownPosition.Clone();
            arrow.KnownPosition.Y += 1.62f;

            arrow.Velocity            = arrow.KnownPosition.GetHeadDirection() * (force * 2.0f * 1.5f);
            arrow.KnownPosition.Yaw   = (float)arrow.Velocity.GetYaw();
            arrow.KnownPosition.Pitch = (float)arrow.Velocity.GetPitch();
            arrow.BroadcastMovement   = true;
            arrow.DespawnOnImpact     = false;

            //arrow.HitEvent += testary;

            arrow.SpawnEntity();
            var setEntityLinkPk = McpeSetEntityLink.CreateObject();

            setEntityLinkPk.riderId  = 0;
            setEntityLinkPk.riddenId = arrow.EntityId;
            setEntityLinkPk.linkType = 2;

            /*    public static final byte TYPE_REMOVE = 0;
             *       public static final byte TYPE_RIDE = 1;
             *   public static final byte TYPE_PASSENGER = 2;
             */
            new Task(() => player.Level.RelayBroadcast(setEntityLinkPk)).Start();



            Level level  = player.Level;
            Mob   entity = new Mob(EntityType.Zombie, level)
            {
                KnownPosition = player.KnownPosition,
            };

            entity.SpawnEntity();
            entity.IsAngry = true;
            entity.


            Task.Run(() =>
            {
                PlayerLocation pos = null;
                while (arrow.Velocity.Length() > 0)
                {
                    pos = arrow.KnownPosition;

                    Thread.Sleep(100);
                }
                McpeMovePlayer mp = McpeMovePlayer.CreateObject();
                mp.entityId       = 0;
                mp.x       = pos.X;
                mp.y       = pos.Y;
                mp.z       = pos.Z;
                mp.pitch   = player.KnownPosition.Pitch;
                mp.headYaw = player.KnownPosition.HeadYaw;
                mp.yaw     = player.KnownPosition.Yaw;
                new Task(() => player.Level.RelayBroadcast(mp)).Start();

                /*Console.Write("done!!" + pos);
                 * Block block = BlockFactory.GetBlockById((byte)1);
                 * block.Coordinates = new BlockCoordinates((int)arrow.KnownPosition.X, (int)arrow.KnownPosition.Y - 2, (int)arrow.KnownPosition.Z);
                 * //arrow.Level.SetBlock(block);
                 *
                 * Block item = new Block(35);
                 * player.KnownPosition.Y -= 2;*/
            });
            return(packet);
        }
 public void HandleMcpeUseItem(McpeUseItem message)
 {
     WritePackage(message);
 }
示例#12
0
 public void HandleMcpeUseItem(McpeUseItem message)
 {
 }