コード例 #1
0
        void HeatEntities(float dt)
        {
            IPlayer[] players = api.World.AllOnlinePlayers;

            foreach (IPlayer curPlayer in players)
            {
                EntityPlayer playerEntity = curPlayer.Entity;
                float        distance     = block.Pos.DistanceTo(playerEntity.Pos.AsBlockPos);

                if (distance > heatRange || !playerEntity.HasBehavior("bodyheat"))
                {
                    continue;
                }

                float distanceModifier = (heatRange - distance) / heatRange;

                switch (block.GetType().Name)
                {
                case "BlockEntityForge":
                    if (((BlockEntityForge)block).IsBurning)
                    {
                        break;
                    }
                    continue;

                case "BlockEntityFirepit":
                    if (((BlockEntityFirepit)block).IsBurning)
                    {
                        break;
                    }
                    continue;

                case "BlockEntityCharcoalPit":
                    if (((BlockEntityCharcoalPit)block).Lit)
                    {
                        break;
                    }
                    continue;

                default:
                    continue;
                }

                playerEntity.GetBehavior <EntityBehaviorBodyheat>()?.HeatUp(heatTemp * distanceModifier);
            }
        }